
Preuve de concept Log4Shell dérivée de https://github.com/kozmer/log4j-shell-poc
Ce dépôt est une preuve de concept pour la vulnérabilité CVE-2021-44228.
Il est dérivé de Ce dépôt.
Dans ce dépôt, j'ai créé un exemple d'application vulnérable et une démonstration de la façon de l'exploiter.
J'ai modifié le script python d'origine pour automatiser la génération de cette vulnérabilité.
Dans ce dépôt, il y a deux Dockerfiles pour une utilisation facile, comme suit :
Dans cette image Docker, nous téléchargeons java jdk-8u20 depuis mon google drive, car vous devez créer un compte sur oracle afin de le télécharger.
Si vous ne lui faites pas confiance, vous pouvez modifier le fichier de téléchargement dans le Dockerfile et télécharger le jdk depuis ici (Assurez-vous de télécharger la version Java SE Development Kit 8u20 pour linux).
Cette image Docker exécute une version modifiée du script fourni par kozmer et effectue les opérations suivantes :
Les ports par défaut utilisés sont 1389 pour JNDI LDAP, 8000 pour le SimpleHttpServer et 9001 pour le reverse shell !
Afin de compiler et d'exécuter ceci, lancez :
sudo docker build -t log4j-ldap .
sudo docker run -d -p 8000:8000 -p 1389:1389 log4j-ldap
Utilisez docker logs <containerID> pour voir les journaux de l'application et récupérer la bonne entrée qui doit être fournie à l'application vulnérable
Pour cette PoC, j'ai pris en compte les IP par défaut utilisées par docker (172.17.0.1/24), vous pouvez les modifier dans le script ./Docker-Ldap/run.sh pour correspondre à votre scénario.
Dans cette image docker, une application web vulnérable qui utilise la version non corrigée de Log4J 2 est exécutée et exposée sur le port 8080.
Le code source de l'application est également disponible dans ./Docker-Vuln, crédits à kozmer.
Afin de compiler et d'exécuter ceci, lancez :
sudo docker build -t log4j-ldap .
sudo docker run -d -p 8000:8000 -p 1389:1389 log4j-ldap
Le champ Nom d'utilisateur est le champ injectable !
Afin d'accepter le reverse shell, vous devez créer un écouteur netcat pour le port 9001
nc -lvnp 9001
Après avoir téléchargé le dépôt, assurez-vous d'avoir le moteur docker installé et de ne pas avoir d'autres images docker en cours d'exécution sur votre machine.
config.sh pour construire les images et les démarrer. (Ce script utilise les privilèges root pour s'exécuter, vous pouvez les modifier en conséquence).9001.localhost:8080docker logs <containerID>).