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

本文介绍了PHP 7.0.30环境下,由于libxml 2.8.0版本默认开启外部实体解析,存在XML外部实体注入(XXE)漏洞。通过编译PHP与特定版本libxml2来演示XXE,启动环境后,访问PHPinfo页面可验证libxml版本。文章提供3个示例文件(dom.php、SimpleXMLElement.php、simplexml_load_string.php),这些文件利用DOMDocument、SimpleXMLElement类和simplexml_load_string函数,展示了XXE漏洞的触发条件和输出点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

使用如下命令编译并启动环境:
docker-compose up -d

在这里插入图片描述

环境启动后,访问http://your-ip:8080/index.php即可看到phpinfo,搜索libxml即可看到其版本为2.8.0。

在这里插入图片描述
在这里插入图片描述

Web目录为./www,其中包含4个文件:
$ tree .
.
├── dom.php # 示例:使用DOMDocument解析body
├── index.php
├── SimpleXMLElement.php # 示例:使用SimpleXMLElement类解析body
└── simplexml_load_string.php # 示例:使用simplexml_load_string函数解析body
dom.php、SimpleXMLElement.php、simplexml_load_string.php均可触发XXE漏洞,具体输出点

请阅读这三个文件的代码。
Simple XXE Payload:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值