
Log4Shell Proof-Of-Concept abgeleitet von https://github.com/kozmer/log4j-shell-poc
Dieses Repository ist ein Proof-of-Concept für die Sicherheitslücke CVE-2021-44228.
Es ist von diesem Repo abgeleitet.
In diesem Repository habe ich ein Beispiel für eine anfällige Anwendung und eine Demonstration erstellt, die zeigt, wie man sie ausnutzt.
Ich habe das Upstream-Python-Skript modifiziert, um die Erzeugung dieser Sicherheitslücke zu automatisieren.
In diesem Repo gibt es zwei Dockerfiles für eine einfache Verwendung, wie folgt:
In diesem Docker-Image laden wir Java jdk-8u20 von meinem Google Drive herunter, da du ein Konto bei Oracle benötigst, um dies herunterzuladen.
Wenn du dem nicht vertraust, kannst du die Download-Datei im Dockerfile ändern und das JDK von hier herunterladen (Stelle sicher, dass du die Version Java SE Development Kit 8u20 für Linux herunterlädst).
Dieses Docker-Image führt eine modifizierte Version des von kozmer bereitgestellten Skripts aus und tut Folgendes:
Die Standardports hierfür sind 1389 für JNDI LDAP, 8000 für den SimpleHttpServer und 9001 für die Reverse Shell!
Um dies zu kompilieren und auszuführen, führe Folgendes aus:
sudo docker build -t log4j-ldap .
sudo docker run -d -p 8000:8000 -p 1389:1389 log4j-ldap
Verwende docker logs <containerID>, um die Protokolle der App zu sehen und die korrekte Eingabe zu erhalten, die der anfälligen App übergeben werden muss.
Für diesen PoC habe ich die von Docker verwendeten Standard-IPs (172.17.0.1/24) berücksichtigt; du kannst sie im Skript ./Docker-Ldap/run.sh ändern, um sie an dein Szenario anzupassen.
In diesem Docker-Image läuft eine anfällige Webanwendung, die die ungepatchte Version von Log4J 2 verwendet und sie auf Port 8080 bereitstellt.
Der Quellcode der App ist ebenfalls in ./Docker-Vuln verfügbar, Credits an kozmer.
Um dies zu kompilieren und auszuführen, führe Folgendes aus:
sudo docker build -t log4j-ldap .
sudo docker run -d -p 8000:8000 -p 1389:1389 log4j-ldap
Der Benutzername ist das injizierbare Feld!
Um die Reverse Shell anzunehmen, musst du einen Netcat-Listener für Port 9001 erstellen.
nc -lvnp 9001
Nachdem du das Repo heruntergeladen hast, stelle sicher, dass die Docker-Engine installiert ist und keine anderen Docker-Images auf deinem Rechner laufen.
config.sh aus, um die Images zu bauen und zu starten. (Dieses Skript benötigt Root-Rechte zum Ausführen; du kannst sie entsprechend anpassen).9001.localhost:8080.docker logs <containerID>).