Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
spring-shell-vuln — Spring hat die RCE im Spring Framework bestätigt. Das Team hat soeben die Stellungnahme zusammen mit den Leitfäden zur Eindämmung des Problems veröffentlicht. Diese Schwachstelle kann nun als CVE-2022-22965 verfolgt werden. | Kitploit
Tools/GitHubGitHub/snip3r69/spring-shell-vuln
SchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsLernen & Bildung
GitHubsnip3r69/spring-shell-vuln

spring-shell-vuln

Spring hat die RCE im Spring Framework bestätigt. Das Team hat soeben die Stellungnahme zusammen mit den Leitfäden zur Eindämmung des Problems veröffentlicht. Diese Schwachstelle kann nun als CVE-2022-22965 verfolgt werden.

Repository anzeigen
1vor 4 JahrenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

spring-shell-vuln

Spring4Shell: Spring-Core-RCE-Schwachstelle


Spring hat die RCE im Spring Framework bestätigt. Das Team hat gerade die Stellungnahme zusammen mit den Anleitungen zur Eindämmung des Problems veröffentlicht. Diese Schwachstelle kann nun als CVE-2022-22965 verfolgt werden.

Einige Informationen über die Spring4Shell-Schwachstelle und Details wurden im Beitrag Spring4Shell: Details and Exploit geteilt. Darüber hinaus hat das Sicherheitsteam von Praetorian bestätigt, dass Spring Core auf JDK9+ aufgrund eines Bypasses für CVE-2010-1622 anfällig für Remote-Code-Ausführung ist.

Ursprünglich begann es am 30. März: Die erste Mitteilung über die Schwachstelle wurde vom Leiter des KnownSec-404-Teams, Heige, angedeutet. Er twitterte die Warnmeldung "Spring core RCE (JDK >=9" zusammen mit dem PoC-Bild.

image

Als wir mit der Geschichte über die Schwachstelle live gingen, verschwand Heige von Twitter. Der Grund dafür ist unbekannt, aber es könnte etwas dahinterstecken.

Ereignisse

Ende 2021 stand das Internet in Flammen, als eine Zero-Day-Schwachstelle zur Remote-Code-Ausführung, auch bekannt als Log4Shell, in Apache Log4j2 auftauchte. Die Schwachstelle wurde vom Sicherheitsteam von Alibaba Cloud entdeckt.

- Diese Schwachstelle ist NICHT so schlimm wie Log4Shell. Alle Angriffsszenarien sind aufgrund der Natur von Class-Loader-Manipulationsangriffen in Java komplexer. Die Ausnutzung von Spring4Shell erfordert tiefgehende Java-Kenntnisse, um einen funktionierenden PoC zu erhalten. Class-Loader-Manipulation ist schwieriger zu verstehen als die Log4Shell-Schwachstelle.

Heute haben Forscher eine weitere schwerwiegende Schwachstelle entdeckt, die erheblichen Schaden verursachen kann. Der Fehler wird nun als CVE-2022-22965 verfolgt; wir können ihn Spring4Shell nennen. Die Schwachstelle besteht im Spring Core bei JDK-Versionen größer oder gleich 9.0.

Spring Framework und abgeleitete Frameworks – spring-beans-*.jar-Dateien oder CachedIntrospectionResults.class

Alle unten aufgeführten Details sind inzwischen bestätigt. Ich übernehme keine Verantwortung für verursachte Schäden.

Details und Untersuchung der Schwachstelle

Als eines der weltweit beliebtesten leichtgewichtigen Open-Source-Frameworks für Java ermöglicht Spring Entwicklern, sich auf die Geschäftslogik zu konzentrieren, und vereinfacht den Entwicklungszyklus von Java-Unternehmensanwendungen.

Die Ausnutzung erfordert einen Endpunkt mit aktiviertem DataBinder (z. B. eine POST-Anfrage, die Daten aus dem Anfragetext automatisch decodiert) und hängt stark vom Servlet-Container der Anwendung ab. Wenn Spring beispielsweise auf Apache Tomcat bereitgestellt wird, ist der WebAppClassLoader zugänglich, was einem Angreifer ermöglicht, Getter und Setter aufzurufen, um letztendlich eine schädliche JSP-Datei auf die Festplatte zu schreiben. Wenn Spring jedoch mit dem eingebetteten Tomcat-Servlet-Container bereitgestellt wird, ist der Classloader ein LaunchedURLClassLoader mit eingeschränktem Zugriff.

In der JDK9-Version (und höher) des Spring Framework kann ein entfernter Angreifer jedoch unter bestimmten Bedingungen das AccessLogValve-Objekt und bösartige Feldwerte über die Parameterbindungsfunktion des Frameworks erlangen.

  • Es ist derzeit bekannt, dass das Auslösen dieser Schwachstelle zwei Grundbedingungen erfordert:
  • Verwendung des Spring-MVC-Frameworks & JDK9 und höher

(1). JDK-Versionsnummer prüfen

Führen Sie auf dem laufenden Server des Organisationssystems den Befehl "java -version" aus, um die ausgeführte JDK-Version zu prüfen. Wenn die Versionsnummer kleiner oder gleich 8 ist, ist das System nicht von der Schwachstelle betroffen.

(2). Verwendung des Spring-Frameworks prüfen

  1. Wenn das Projekt des Organisationssystems in Form eines WAR-Pakets bereitgestellt wird, gehen Sie zur Beurteilung wie folgt vor.
  • WAR-Paket entpacken: Ändern Sie die Endung der WAR-Datei in .zip und entpacken Sie die ZIP-Datei.
  • Suchen Sie im Entpackverzeichnis nach einer JAR-Datei im Format spring-beans-*.jar (z. B. spring-beans-5.3.16.jar). Wenn eine vorhanden ist, bedeutet dies, dass das Geschäftssystem mit dem Spring-Framework entwickelt wurde.
  • Wenn die Datei spring-beans-*.jar nicht vorhanden ist, suchen Sie im Entpackverzeichnis nach dem Vorhandensein der Datei CachedIntrospectionResuLts.class. Wenn sie vorhanden ist, bedeutet dies, dass das Geschäftssystem mit dem Spring-Framework entwickelt wurde.
  1. Wenn das Projekt des Organisationssystems direkt und eigenständig in Form eines JAR-Pakets läuft, beurteilen Sie dies anhand der folgenden Schritte.
  • JAR-Paket entpacken: Ändern Sie die Endung der JAR-Datei in .zip und entpacken Sie die ZIP-Datei.
  • Suchen Sie im Entpackverzeichnis nach einer JAR-Datei im Format spring-beans-*.jar (z. B. spring-beans-5.3.16.jar). Wenn eine vorhanden ist, bedeutet dies, dass das Geschäftssystem mit dem Spring-Framework entwickelt wurde.
  • Wenn die Datei spring-beans-*.jar nicht vorhanden ist, suchen Sie im Entpackverzeichnis nach dem Vorhandensein der Datei CachedIntrospectionResuLts.class. Wenn sie vorhanden ist, bedeutet dies, dass das Geschäftssystem mit dem Spring-Framework entwickelt wurde.

(3) Umfassende Untersuchung

Nach Abschluss der beiden oben genannten Fehlerbehebungsschritte liegt eine Betroffenheit durch diese Schwachstelle vor, wenn die folgenden beiden Bedingungen gleichzeitig erfüllt sind:

  1. Die JDK-Versionsnummer ist 9 oder höher;
  2. Verwendung des Spring Frameworks oder eines abgeleiteten Frameworks.

Anleitungen zur Behebung der Schwachstelle

Inzwischen hat das Spring-Team die Schwachstelle behoben und die neuesten Versionen von Spring Boot 2.6.6 und 2.5.12 veröffentlicht, die von Spring Framework 5.3.18 abhängen.

WAF-Schutz

Implementieren Sie auf Netzwerkschutzgeräten wie WAF eine Regel-Filterung für Zeichenfolgen wie "class.", "Class.", ".class." und ".Class." entsprechend der tatsächlichen Verkehrssituation der bereitgestellten Dienste. Testen Sie nach dem Filtern der Regeln den Geschäftsbetrieb, um zusätzliche Auswirkungen zu vermeiden.

Vorübergehende Reparaturmaßnahmen

Die vorübergehende Reparatur der Sicherheitslücke sollte in den folgenden beiden Schritten gleichzeitig durchgeführt werden:

  1. Durchsuchen Sie die Anwendung global nach der Annotation @InitBinder, um festzustellen, ob die Methode dataBinder.setDisallowedFields im Methodenrumpf aufgerufen wird. Wenn die Einführung dieses Code-Ausschnitts gefunden wird, fügen Sie {"class.","Class. to the original blacklist ",".class.", ".Class."} hinzu. (Hinweis: Wenn dieser Code-Ausschnitt häufig verwendet wird, muss er überall angehängt werden)

  2. Erstellen Sie die folgende globale Klasse im Projektpaket des Anwendungssystems und stellen Sie sicher, dass diese Klasse von Spring geladen wird (es wird empfohlen, sie in dem Paket hinzuzufügen, in dem sich der Controller befindet). Nachdem die Klasse hinzugefügt wurde, muss das Projekt neu kompiliert, verpackt und einer Funktionsprüfung unterzogen werden. Veröffentlichen Sie das Projekt anschließend erneut. import org.springframework.core.annotation.Order;

    root@kitploit:~
     import org.springframework.web.bind.WebDataBinder;
    
     import org.springframework.web.bind.annotation.ControllerAdvice;
    
     import org.springframework.web.bind.annotation.InitBinder;
    
     @ControllerAdvice
    
     @Order(10000)
    
     public class GlobalControllerAdvice{ 
    
          @InitBinder
    
          public void setAllowedFields(webdataBinder dataBinder){
    
          String[]abd=new string[]{"class.*","Class.*","*.class.*","*.Class.*"};
    
          dataBinder.setDisallowedFields(abd);
    
          }
    
     }
    

image

Aus dem Git-Repository der Spring-Projekte geht hervor, dass der Spring-Entwickler an einem Fix für die Remote-Code-Ausführungsschwachstelle arbeitet, aber wir müssen auf die offizielle Bestätigung warten.

Tool herunterladen