
Spring4Shell Sicherheitslücke RCE - CVE-2022-22965
Die Spring4Shell-Sicherheitslücke wurde so benannt, weil Anfang 2022 zwei Schwachstellen gefunden und von Angreifern weithin ausgenutzt wurden. Eine dieser Schwachstellen befindet sich in der Framework-Komponente namens „Spring Cloud Functions" (weniger kritisch) und eine zweite, kritischere Komponente, die das Herzstück des Frameworks bildet, namens „Spring Core". Diese 2 kritischen Schwachstellen führten zu einem Witz in der Community, der sich auf eine weitere kritische, 2021 offengelegte Schwachstelle namens Log4shell bezieht.
Eine der Funktionen von Spring MVC besteht darin, dass es automatisch ein Objekt einer bestimmten Klasse instanziiert und befüllt, wenn eine Anfrage anhand der an den Endpunkt gesendeten Parameter gestellt wird. Einfach ausgedrückt kann dies missbraucht werden, um wichtige Attribute der übergeordneten Klasse zu überschreiben, was zu Remote-Codeausführung führt. Die meisten Exploits für die Spring4Shell-Sicherheitslücke funktionieren, indem sie die Anwendung dazu zwingen, eine schädliche .jsp-Datei auf den Webserver zu schreiben. Diese Webshell kann dann ausgeführt werden, um Remote-Befehlsausführung auf dem Ziel zu erlangen.
Damit diese Ausnutzung stattfinden kann, müssen eine Reihe von Faktoren erfüllt sein, die die Umgebung anfällig für den Import dieser jsp-Datei machen:
spring-webmvc und/oder spring-webflux des Spring Frameworks.Für diese Erkundung verwenden wir ein bereits für diesen Zweck erstelltes Skript namens poc.py, das in genau diesem Repository enthalten ist.
[!note]
Das Skript (poc.py) für diesen POC ist in genau diesem Repository verfügbar, siehe oben.
Nutze immer die Skript-Hilfe, wenn verfügbar, dann ist es verständlicher.
Dieser Angriff erfordert eine HTTP-POST-Methode, um die Datei an den Server übertragen zu können. Auf dem Server, den wir für den Angriff verwenden, gibt es einen POST, den wir im view-source der Seite finden können.
Dies ist eine einfache Seite, auf der eine E-Mail für Benachrichtigungen registriert wird.
Im view-source finden wir den POST dieses Formulars mit der action für /.
Lasst uns unser Skript verwenden, um diesen Webserver zu untersuchen. Denkt daran, dass wir den Angriff in der POST-Aktion ausführen müssen, in diesem Fall im Root /.
Die Webshell wurde erfolgreich gesendet! Lasst uns den vom Skript generierten Link aufrufen, um die Ausnutzung zu bestätigen.
Geschafft! Wir konnten die Schwachstelle ausnutzen, indem wir eine Webshell an den Webserver gesendet haben.
Um Spring4Shell zu beheben, stelle sicher, dass du eine Version von Spring verwendest, die nach Patch 18 des Minor-Release 5.3 veröffentlicht wurde (d. h. nach 5.3.18), oder nach Patch 20, wenn du Minor-Release 5.2 verwendest (d. h. nach 5.2.20). Ein Upgrade der Framework-Version reicht aus, um die Schwachstelle aus deinen Anwendungen zu entfernen.