线上攻防实验PHP_XXE攻击与防御安全指南

XXE漏洞,即XML外部实体注入攻击,可能导致任意文件读取、系统命令执行等危害。本文介绍XXE漏洞的形成方式与类型,包括simplexml_load_string、SimpleXMLElement、DOMDocument和BlindXXE四种方式,以及在Ubuntu16、PHP7.2环境下的实验。


XXE漏洞就是利用XML外部实体注入攻击,注入方式与HTML注入攻击类似,当程序允许引用XML外部实体时,且用户能自由控制输入;用户通过构造恶意内容,就可能导致任意文件读取、系统命令执行、内网端口探测、攻击内网网站等危害,这个就是XXE漏洞。

XXE漏洞形成大体有4种方式:

实验1:simplexml_load_string
实验2:SimpleXMLElement
实验3:DOMDocument
实验4:BlindXXE

XXE漏洞形成分为2种类型:

1、有回显–实验1、实验2、实验3
2、无回显–实验4

其中,无回显的XXE漏洞,在黑客攻击过程中,对于任意文件读取等漏洞利用难度比较高,但危害还是不能忽视。

实验环境介绍

环境系统:Ubuntu16、PHP7.2、apache2.2、libxml2.9.3
靶场语言:PHP
实验室功能支持,拦截请求、代码审计,你可以通过拦截更好完成实验,通过代码审计了解漏洞是如何形成和漏洞是如何修复;让攻击和防御用代码来说话。

攻防实验室地址

https://www.anquanlong.com/lab_introduce?lab_id=21

攻防挑战

XXE外部实体注入漏洞——PHP

### Vulhub 中 PHP XXE 漏洞的设置配置 Vulhub 是一个用于搭建漏洞环境的工具集合,它通过 Docker 和 Docker Compose 提供了一种简单的方式来重现各种已知的安全漏洞。对于 PHP XML 外部实体 (XXE, XML External Entity) 漏洞而言,其核心在于利用解析器处理外部实体的能力来访问本地文件或其他敏感资源。 #### 什么是 PHP XXE 漏洞PHP 的 SimpleXML 或 DOMDocument 类库如果未正确禁用外部实体扩展,则可能允许攻击者通过恶意构造的 XML 数据触发 XXE 攻击[^1]。这种攻击可以用来读取服务器上的任意文件、执行远程代码或者发起拒绝服务攻击。 #### 如何在 Vulhub 上部署 PHP XXE 环境? 以下是基于 Vulhub 配置 PHP XXE 漏洞的具体方法: 1. **安装依赖项** 确保已经安装了 Docker 和 Docker Compose 工具。这是运行 Vulhub 所需的基础环境。 2. **克隆 Vulhub 仓库** 使用 Git 将 Vulhub 项目下载到本地: ```bash git clone https://github.com/vulhub/vulhub.git ``` 3. **进入对应的目录** 进入 `vulhub/php/xxe` 文件夹,该路径下包含了构建 PHP XXE 漏洞所需的全部配置文件。 ```bash cd vulhub/php/xxe ``` 4. **启动容器** 利用 Docker Compose 启动服务: ```bash docker-compose up -d ``` 此命令会自动拉取必要的镜像并启动 Web 应用程序以及数据库(如果有)。完成后,默认情况下可以通过浏览器访问目标站点,通常地址为 `http://localhost:8000`。 5. **验证漏洞存在性** 构造如下形式的 POST 请求测试是否存在 XXE 漏洞: ```xml <?xml version="1.0"?> <!DOCTYPE foo [ <!ELEMENT foo ANY > <!ENTITY xxe SYSTEM "file:///etc/passwd" >]> <foo>&xxe;</foo> ``` 如果返回的内容中包含 `/etc/passwd` 文件的数据,则说明成功触发了 XXE 漏洞。 6. **修复建议** 在实际生产环境中应采取措施防止此类问题发生,比如关闭 DTD 解析功能或将 libxml_disable_entity_loader 设置为 true 来阻止加载外部实体[^2]。 ```php libxml_disable_entity_loader(true); ``` 以上就是在 Vulhub 平台上针对 PHP XXE 漏洞进行实验的一般流程及其背后的技术原理概述。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值