【第三章】常见漏洞OWASP-TOP-10
反序列化简介什么是反序列话,简单来说就是
序列化:就是将对象转化成字节序列的过程。
反序列化:就是讲字节序列转化成对象的过程。
为什么有序列化呢????,主要有两方面
持久化:对象是存储在JVM中的堆区的,但是如果JVM停止运行了,对象也不存在了。序列化可以将对象转化成字节序列,可以写进硬盘文件中实现持久化。在新开启的JVM中可以读取字节序列进行反序列化成对象。
网络传输:网络直接传输数据,但是无法直接传输对象,可在传输前序列化,传输完成后反序列化成对象。所以所有可在网络上传输的对象都必须是可序列化的。
总而言之,就是能将正向的对象 进行反向转换,哪它有什么危害呢?
不安全的反序列化,主要造成的危害是远程代码执行
如果无法远程代码执行,也可能导致权限提升、任意文件读取、拒绝服务攻击等
也可能会造成远程命令执行,getshell。
实验案例:123456<?php$user=array('carrot','is','good');$user=serialize($user);echo($user.PHP_EOL ...
【第二章】常见漏洞OWASP-TOP-10
XML外部实体(XXE)XXE 漏洞这个肯定不陌生,已经是经典中的经典了,该漏洞允许攻击者干扰应用程序对 XML 数据的处理。它通常允许攻击者查看应用程序服务器文件系统上的文件,并与应用程序本身可以访问的任何后端或外部系统进行交互。
什么是XMLXML:可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。它被设计用来传输和存储数据(而不是储存数据),可扩展标记语言是一种很像超文本标记语言的标记语言。它的设计宗旨是传输数据,而不是显示数据。它的标签没有被预定义。您需要自行定义标签。它被设计为具有自我描述性。它是W3C的推荐标准。
XML使用元素和属性来描述数 据。在数据传送过程中,XML始终保留了诸如父/子关系这样的数据结构。几个应用程序 可以共享和解析同一个XML文件,不必使用传统的字符串解析或拆解过程。 相反,普通文件不对每个数据段做描述(除了在头文件中),也不保留数据关系结构。使用XML做数据交换可以使应用程序更具有弹性,因为可以用位置(与普通文件一样)或用元素名(从数据库)来存取XML数据。
攻击者通过向服务器注入指定的xml实体内容 ...
【第一章】常见漏洞OWASP_TOP_10
常见漏洞什么是常见的漏洞,就是OWASP TOP 10上发布的十大常见漏洞
什么是OWASP TOP 10 OWASP(开放式Web应用程序安全项目)是一个开放的社区,由非营利组织 OWASP基金会支持的项目。对所有致力于改进应用程序安全的人士开放,旨在提高对应用程序安全性的认识。其最具权威的就是“10项最严重的Web 应用程序安全风险列表” ,总结并更新Web应用程序中最可能、最常见、最危险的十大漏洞,是开发、测试、服务、咨询人员应知应会的知识。
接下来我们一一复现每一个漏洞:
XSS(跨站脚本攻击)类型:反射型,DOM型,存储型
反射型:首先了解PHP中的$_GET 和 $_POST
简单来讲,就是用来传参数的,对应GET或者POST请求
使用方法
12$get = $_GET['xss'];$post = $_POST['xss']; #XSS为接收值
构造反射型XSS漏洞
我们就用 GET请求举例子
简单来说就是:
1234if(isset($_GET['xss'])) { $xss = $_GE ...
sql注入源代码,测试与分析第一节
概述SQL注入攻击是目前web应用网络攻击中最常见的手段之一,曾被冠以 “漏洞之王” 的称号,其安全风险高于缓冲区溢出漏洞等所有其他漏洞,而市场上的防火墙又不能对SQL注入漏洞进行有效的检测和防范。
特点
SQL注入攻击普遍存在范围广、实现容易、破坏性大等特点。
具备知识点:结构化查询语言(Structured Query Language)简称 SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾后,添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。
准备材料Kali linux、php语言环境 、vscode
准备环境
一、简单的sql复现测试PHP环境,是否可以使用,不会搭建PHP环境的网上自行搜索
看到下面这个画面说明PHP环境没问题
二、数据库环境随便建立一个表,还不会数据库的可以参考我以前的文章
...
MySQL数据库速通笔记2
MySQL数据库速通笔记为了网安的方便学习,通过三篇文章迅速了解数据库。
Mysql数据库常用命令1.1 增删改查
插入数据:使用INSERT INTO语句向表中插入数据。
1INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);
更新数据:使用UPDATE语句更新表中的数据。
1UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;
扩展表结构(增加字段)
1ALTER TABLE 表名 ADD remark varchar(50) default '备注';
修改表名
1ALTER TABLE 旧表名 RENAME 新表名;
删除数据:使用DELETE FROM语句从表中删除数据。
1DELETE FROM table_name WHERE condition;
查询数据:使用SELECT语句从表中查询数据。
查询所有列的数据:
1SELECT * FR ...
使用PHP连接Mysql
使用PHP连接Mysql Mysql 兼容很多语言,不仅仅是php,例如:PERL, C, C++, JAVA 和 PHP等,其中PHP使用的范围最为广泛。
简述PHP语法
连接数据库: 使用mysqli_connect()函数或者PDO类中提供的方法,连接到MySQL数据库服务器。例如:
1$conn = mysqli_connect($host, $username, $password, $database);
执行查询: 使用mysqli_query()函数或者PDO类中的相关方法执行SQL查询语句。例如:
12$sql = "SELECT * FROM table_name";$result = mysqli_query($conn, $sql);
处理结果: 针对查询结果进行处理,可以使用mysqli_fetch_assoc()、mysqli_fetch_array()等函数获取每一行的数据。例如:
123Codewhile ($row = mysqli_fetch_assoc($result)) { echo $row[' ...
Mysql数据库速通笔记1
什么是数据库数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据,我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。
所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。
1.1数据库的种类MySQL、MariaDB(MySQL的代替品)、Percona Server(MySQL的代替品·)、PostgreSQL、Microsoft Access、Google Fusion Tables、SQLite、DB2、FileMaker、Oracle、SQL Server、INFORMIX、Sybase、dBASE、Clipper、FoxPro、foshub
1.2非关系型数据库(NoSQL)redis、MongoDB、Memcache、HBase、BigTable、Cassandra、CouchDB、Neo4J
2.1RDBMS 术语了解数据库之前先了解 ...
Vulnhub靶机渗透之权限提取,SMB泄露问题-靶场Breakout
学习前言vulnhub是个提供各种漏洞平台的综合靶场,可供下载多种虚拟机进行下载,本地VM打开即可,像做游戏一样去完成渗透测试、提权、漏洞利用、代码审计等等有趣的实战。
Vulnhub 官网:Vulnerable By Design ~ VulnHub
今天用到的靶场Breakout:Empire: Breakout ~ VulnHub
准备工作环境:Linux kali Breakout靶机 浏览器
知识点:Linux基础
一、信息收集我们拿到靶机后打开直接看到IP地址了
但是如果在真实的环境当中进行内网渗透,我们看不到目标主机怎么办呢
我们知道,内网一般存在于一个网段或者不同网段,可以用
1Nmap -sn 192.168.159.0/24 #扫描整个网段里的所有IP地址
这里我们直接知道IP为:192.168.159.134
第一步:开始收集它开放的端口1Nmap -sV 192.168.159.134
可以看到开放的端口是很多的有:80 139 445 10000 20000
首先我们先访问一下 80 端口有啥东西
发现了个Apache的页面,说明了它用的中间件是 ...
什么是SSTI?
什么是SSTI:SSTI 就是服务器端模板注入,当前使用的一些框架,比如python的flask,php的tp,java的spring等一般都采用成熟的的MVC的模式,用户的输入先进入Controller控制器,然后根据请求类型和请求的指令发送给对应Model业务模型进行业务逻辑判断,数据库存取,最后把结果返回给View视图层,经过模板渲染展示给用户。
当前使用的一些框架,比如python的flask,php的tp,java的spring等一般都采用成熟的的MVC的模式,用户的输入先进入Controller控制器,然后根据请求类型和请求的指令发送给对应Model业务模型进行业务逻辑判断,数据库存取,最后把结果返回给View视图层,经过模板渲染展示给用户。当前使用的一些框架,比如python的flask,php的tp,java的spring等一般都采用成熟的的MVC的模式,用户的输入先进入Controller控制器,然后根据请求类型和请求的指令发送给对应Model业务模型进行业务逻辑判断,数据库存取,最后把结果返回给View视图层,经过模板渲染展示给用户。
PHP中常见的SSTIphp常 ...
XSS各种过滤手段,如何绕过写payload
XSS简介XSS全称是Cross Site Scripting即跨站脚本,当目标网站目标用户浏览器渲染HTML文档的过程中,出现了不被预期的脚本指令并执行时,意思就是说可以任意执行js代码,包括js的而已代码
如何进行payload的构造:我们知道xss漏洞不会这么简单的被你发现,通常来说开发者都会对用户输入的东西进行过滤,比如简单的就是 将<script> <ifraname>还有< 等进行过滤,用户输入的时候就可以防止js命令随意的执行,但是我们知道这种方法并不是绝对安全的,我们可以通过其他标签来构造payload,在ctf比赛中非常喜欢考察。
事件过滤:例如:
1234567891011onbeforeprintonbeforeunloadonerroronhaschangeonloadonmessageonofflineononlineonpagehideonpageshowonpopstate
一些常见的fuzz,我们在渗透测试中可以进行输入测试,对它进行fuzz测试
测试到没有进行过滤的事件,那么我们可以用来构造payload
1<a h ...