
Python-Exploit für die CVE-2022-22965 (Spring4Shell) RCE-Schwachstelle in Java Spring Core. Injiziert eine JSP-Webshell über die Tomcat-Log-Konfiguration, um Remote-Befehle auf anfälligen Servern auszuführen.
Die Sicherheitslücke CVE-2022-22965, bekannt als Spring4Shell, ist eine Schwachstelle zur Ausführung von entferntem Code (RCE) im Java Spring Core Framework, die in Versionen vor 5.3.18 und 5.2.20 vorhanden ist. Diese Schwachstelle ermöglicht es einem Angreifer, Code einzuschleusen und auf einem verwundbaren Server remote auszuführen, indem eine Fehlkonfiguration der Tomcat-Protokolle ausgenutzt wird. Sie wurde im März 2022 entdeckt und betrifft activeMQ-, Spring MVC- und Spring WebFlux-Anwendungen, die mit einer JDK-Version >= 9 laufen.

Man stellt sicher, dass eine JDK-Version >= 9 vorhanden ist, falls nicht, wird sie aktiviert:

Voraussetzungen ✔ Die Module requests und BeautifulSoup werden benötigt, damit der Exploit funktioniert. Sie werden installiert mit:
pip3 install bs4
pip3 install requests
Netzwerkscan

Hier ist der Dienst activeQM Version 5.17.3 im Lauschmodus.
In unserer Exploit-Strategie verwenden wir ein entwickeltes Python-Skript namens spring4shell.py, das diesem Projekt beigefügt ist.
Ziel dieses Skripts: Dieses Python-Skript ermöglicht die Ausnutzung der Sicherheitslücke CVE-2022-22965, indem es die Protokollierungsparameter von Tomcat ändert, um einen Webshell in die Protokolldateien einzuschleusen, was die Ausführung von entfernten Befehlen auf dem kompromittierten Server ermöglicht.
Erklärung des Python-Codes
Konfiguration der Terminalausgaben:
Die Klasse settings passt die Anzeige im Terminal entsprechend den gewählten Optionen an, mit Farben zur Unterscheidung von Informations-, Warn- und Fehlermeldungen.
Generierung von Zufallsvariablen:
Die Funktionen filename() und password() erzeugen zufällige Hexadezimalzeichenfolgen, um den Dateinamen und das Passwort des Webshells zu sichern.
Ausnutzung der Sicherheitslücke:
Das Skript sendet Anfragen, um die Protokollierungsparameter von Tomcat zu ändern, indem es über die Protokolle JSP-Codefragmente einschleust. Durch die Konfiguration der Protokolle zum Schreiben in das Verzeichnis webapps/ROOT wird jeder Eintrag als JSP-Code interpretierbar.
Die eingeschleuste Protokolldatei fungiert dann als Webshell, die über einen Browser aufgerufen werden kann, um Befehle auszuführen.
Interaktion mit dem Webshell:
Die Klasse terminal öffnet eine interaktive Oberfläche, um Befehle an den kompromittierten Server zu senden. Die Befehle werden als Parameter cmd gesendet, und die Antworten werden im Terminal angezeigt.
Nach Ausführung des Skripts wird ein Link zum Webshell bereitgestellt: Über den Befehl:
python3 spring4shell.py http://172.17.0.1

Man erhält direkten Zugriff auf die Shell unseres activemq-Servers, um alle gewünschten Befehle auszuführen.
Ende des Exploits!!!