SuperAPI AI 工具集

testing-for-xml-injection-vulnerabilities

安全与审计

查看项目

更新于 10-15 14:00

技能介绍

用途

本技能用于对 Web 应用进行 XML 注入漏洞测试,识别数据泄露与服务端请求伪造等问题。适用场景包括:处理 XML 输入的应用(SOAP API、XML-RPC、文件上传);带有 XML 解析器的应用渗透测试;SAML 认证实现评估;处理 XML 格式的文件导入/导出功能测试;SOAP 或基于 XML 的 Web 服务 API 安全测试。

前置条件

  • Burp Suite 及 XML 相关扩展(Content Type Converter、XXE Scanner)
  • XMLLint 或类似 XML 校验工具
  • 理解 XML 结构、DTD 与实体处理
  • Python 3.x 及 lxml、requests 库
  • 可访问带外交互服务器(Burp Collaborator、interact.sh)
  • 来自 PayloadsAllTheThings 仓库的示例 XXE 载荷

工作流

步骤 1 — 识别 XML 处理端点

查找接受 XML 内容类型的端点(application/xml、text/xml、application/soap+xml);检查 SOAP 服务的 WSDL 文件;通过修改 Content-Type 测试端点是否接受 XML;检查 XML 文件上传功能(.xml、.svg、.xlsx、.docx 文件处理)。

步骤 2 — 测试基础 XXE(文件读取)

使用外部实体读取本地文件,如 /etc/passwd、c:/windows/win.ini;可使用 PHP wrapper 对文件内容进行 base64 编码。

步骤 3 — 测试盲注 XXE 与带外检测

使用外部 DTD 进行带外 XXE;通过 DNS 或 HTTP 带外通道检测盲注 XXE。

步骤 4 — 测试 SSRF via XXE

通过 XXE 进行内网扫描;访问云元数据端点(如 169.254.169.254);进行内部端口扫描。

步骤 5 — 测试 XPath 注入

在搜索参数中进行基础 XPath 注入;XPath 认证绕过;XPath 数据提取;基于布尔值的盲注 XPath 提取。

步骤 6 — 测试 XML Billion Laughs(DoS)

Billion Laughs 攻击(仅在授权测试中使用);二次爆炸攻击。

关键概念

  • XXE(XML 外部实体):利用处理外部实体引用的 XML 解析器进行攻击
  • 盲注 XXE:响应不反射的 XXE,需要带外通道
  • XPath 注入:注入用于导航 XML 文档的 XPath 查询
  • DTD(文档类型定义):定义 XML 文档结构和实体的声明
  • 参数实体:DTD 中用于盲注 XXE 利用的特殊实体(%)
  • SSRF via XXE:利用 XXE 使服务端请求内部资源
  • XML 炸弹:通过递归实体扩展导致拒绝服务(Billion Laughs)

工具与系统

  • Burp Suite:带 XXE Scanner 扩展的 HTTP 代理,用于自动化检测
  • XXEinjector:自动化 XXE 注入与数据外泄工具
  • OXML_XXE:在 Office XML 文档中嵌入 XXE 载荷的工具
  • xmllint:用于载荷测试的 XML 校验与解析工具
  • interact.sh:用于盲注 XXE 检测的带外交互服务器
  • Content Type Converter:将 JSON 请求转换为 XML 以进行 XXE 测试的 Burp 扩展

常见场景

  • 文件泄露:通过 XML 输入字段中的经典 XXE 实体注入读取敏感服务端文件(/etc/passwd、web.config)
  • SSRF 至云元数据:通过 XXE 访问 AWS/GCP/Azure 元数据端点,窃取 IAM 凭证与访问令牌
  • 盲注数据外泄:当 XXE 输出不反射时,通过带外 DNS/HTTP 通道提取敏感数据
  • SAML XXE:在单点登录认证流程中向 SAML 断言注入 XXE 载荷
  • SVG 文件上传 XXE:上传包含 XXE 载荷的恶意 SVG 文件,触发服务端 XML 解析

输出格式

评估报告包含目标、发现的漏洞类型、严重程度、发现表格(类型、端点、载荷、影响)以及修复建议。修复建议包括:在 XML 解析器配置中禁用外部实体处理;尽可能使用 JSON 替代 XML;实施带严格 DTD 限制的 XML schema 校验;阻止 XML 处理服务的出站连接。