
Tiefgehende technische Analyse von CVE-2022-22965 (Spring4Shell) mit Umgebungseinrichtung, Debug-Durchlauf und Aufschlüsselung der Exploit-Kette für die Übung im Bildungslabor.
Spring4Shell ist der Name einer CVE, die im Spring Core des Spring Framework existiert.
Mit einem CVSS 3.x Score von 9.8 wird die Schwachstelle als kritisches Risiko eingestuft. Diese Schwachstelle ermöglicht es einem Angreifer, Code aus der Ferne auszuführen und den anfälligen Server zu kontrollieren.
Aufgrund der Verbreitung von Spring Core im Internet und der schwerwiegenden Auswirkungen von Spring4Shell wird diese Schwachstelle von Experten als ebenso einflussreich bewertet wie Log4shell.
Spring4Shell betrifft nicht alle Webanwendungen, die Spring Framework im Internet verwenden, sondern erfordert, dass die Webanwendung die folgenden Bedingungen erfüllt:
Die von mir eingerichtete Umgebung hat folgende Parameter:
Installation von Apache Tomcat
Wie oben erwähnt, verwende ich Kali 2021.4a und Apache Tomcat 9.0.45. Wenn Sie nicht wissen, wie man Apache Tomcat installiert, und es unter Kali Linux installieren möchten, können Sie sich diesen Link ansehen.
Hinweis: Ersetzen Sie den Link https://mirror.kiu.ac.ug/apache/tomcat/tomcat-9/v9.0.45/bin/apache-tomcat-9.0.45.tar.gz durch https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.45/bin/apache-tomcat-9.0.45.tar.gz.
Auswahl der IDE
Wir benötigen eine IDE, um das Projekt zu codieren, als .war-Datei zu packen und – sehr wichtig – zu debuggen. Ich verwende IntelliJ, Sie können aber auch Eclipse oder Netbeans verwenden, solange die IDE Java unterstützt.
Erstellen eines einfachen Projekts mit der Schwachstelle
Mein Projekt ist sehr einfach und besteht aus:
einem Modell HelloWorld.java

einem Controller HelloWorldController.java

einer Ansicht hello.jsp

Erstellen der .war-Datei
Um das Projekt zu packen, gehen Sie wie folgt vor: Build -> Build Artifacts -> helloworld:war -> Build.
Warten Sie, bis der Build erfolgreich abgeschlossen ist. Dann erscheint ein weiterer Ordner out im Projekt. Gehen Sie zu ./out/artifacts/your_war_name/ und Sie sehen eine Datei your_war_name.war. Diese .war-Datei ist das kompilierte und gepackte Webprojekt und kann in Java-Servern wie Apache Tomcat bereitgestellt werden.
Falls Build Artifacts ausgegraut ist (nicht möglich), wurde die Build-Artifact-Konfiguration für dieses Projekt noch nicht eingerichtet. Gehen Sie zu: File -> Project Structure -> Artifacts -> Löschen aller vorhandenen Artifacts -> Add (+ ) -> Web Application: Exploded -> From Modules... -> OK (Ende der Erstellung von Exploded) > Add (+ ) -> Web Application: Archive -> For ‘helloworld:war exploded’ -> OK. Führen Sie dann Build Artifacts erneut aus.
Bereitstellung und Einrichtung des Debuggings
Bereitstellung
Um eine .war-Datei in Apache Tomcat bereitzustellen, kopieren Sie die .war-Datei einfach in das Verzeichnis /webapps im Apache-Tomcat-Ordner (z.B.: Ich kopiere die Datei helloworld.war (ich habe sie umbenannt, um sie leichter zu nennen) in das Verzeichnis /opt/tomcat/apache-tomcat-9.0.45/webapps/). Starten Sie dann den Tomcat-Server auf zwei Arten (für Linux):
Nach der Bereitstellung rufen Sie http://localhost:8080/helloworld auf.
Einrichtung des Debuggings
Um das Remote-Debugging von Tomcat einzurichten, gehen Sie wie folgt vor:
Serverseite:
Öffnen Sie die Datei catalina.sh und ersetzen Sie den Wert localhost durch die IP der VM im Parameter JPDA_ADDRESS.

Starten Sie den Tomcat-Server neu mit: /opt/tomcat/apache-tomcat-9.0.45/bin/catalina.sh jpda start. Zusätzlich zum Öffnen von Port 8080 für den HTTP-Server öffnet Tomcat dann Port 8000, um eine Verbindung zum Debuggen herzustellen.
Hinweis: Im Debugging-Teil führe ich IntelliJ unter Windows 10 aus und den Tomcat auf einer Kali-VM. Daher muss JPDA_ADDRESS geändert werden. Wenn Sie IntelliJ und Tomcat auf demselben Rechner einrichten, ist keine Änderung erforderlich.
IntelliJ-Seite:
Gehen Sie zu Run -> Edit Configurations... -> Add (+ ) -> Remote JVM Debug
Geben Sie einen Namen ein -> Ändern Sie Host und Port auf die IP und den Port, die Sie in der Datei catalina.sh geändert haben -> OK -> Shift + F9 (Debugging starten)

Zunächst analysiere ich das Projekt, das ich zum Debuggen verwende. Wie oben erwähnt, besteht dieses Projekt nur aus: