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
CVE-2022-22965 | Kitploit
Tools/GitHubGitHub/helsecert/cve-2022-22965
Statische AnalyseSchwachstellenscannerSchwachstellenanalyseCode-AnalyseWebsicherheitLernen & BildungKuratierte Ressourcen
GitHubhelsecert/cve-2022-22965

CVE-2022-22965

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

Schwachstellen im Spring Framework - CVE-2022-22965

Liste über Software, die anfällig / nicht anfällig ist

https://github.com/NCSC-NL/spring4shell/blob/main/software/README.md

Anfälligen Code finden

Voraussetzungen, um für CVE-2022-22965 anfällig zu sein:

1) Verwendung des Spring Framework

Siehe weiter unten die PowerShell- und Bash-Skripte.

2) Die Versionen des Spring Framework müssen anfällig sein; dies gilt grundsätzlich für alle Versionen vor 5.3.18 und 5.2.20.

Hilko Bengen hat einen Scanner veröffentlicht, der nach anfälligen Versionen von CachedIntrospectionResults.class sucht, ausgehend von Versionen hier: https://github.com/hillu/local-spring-vuln-scanner

3) Verwendung von JDK9 oder neuer und dass man JRE 9 oder neuer ausführt.

Dies kann man herausfinden, indem man ausführt:

root@kitploit:~
java -version

auf den betreffenden Systemen.

Beachten Sie, dass Java-Anwendungen auf verschiedene Weise ausgeführt werden können und dass mehrere verschiedene Versionen gleichzeitig installiert sein können. Um sicherzugehen, welche Java-Version ausgeführt wird, kann man zuerst identifizieren, von wo die Java-Binärdatei ausgeführt wird, und dann prüfen, welche Version die betreffende Java-Binärdatei hat.

Unter Linux kann dies durch Ausführen von:

root@kitploit:~
ps aux | grep java

wobei man z. B. /usr/lib/jvm/java-11-openjdk-amd64/bin/java findet, und man kann dann den folgenden Befehl unter Verwendung des absoluten Dateipfads ausführen:

root@kitploit:~
$ /usr/lib/jvm/java-11-openjdk-amd64/bin/java -version
openjdk version "11.0.14.1" 2022-02-08
OpenJDK Runtime Environment (build 11.0.14.1+1-Ubuntu-0ubuntu1.18.04)
OpenJDK 64-Bit Server VM (build 11.0.14.1+1-Ubuntu-0ubuntu1.18.04, mixed mode, sharing)

Entsprechend kann man unter Windows den absoluten Dateipfad für laufende Java-Prozesse entweder mithilfe von WMI oder PowerShell ermitteln:

root@kitploit:~
WMI: C:\> wmic process where "name='java.exe'" get ExecutablePath
PowerShell: PS C:\> Get-Process java | Select-Object Path

4) Der Code, der das Spring Framework verwendet, muss auch bestimmte Methoden mit bestimmten Parametern verwenden, damit ein Angreifer die Schwachstelle ausnutzen kann.

JFrog hat Python-Code veröffentlicht, der die Verwendung davon identifiziert, und dieser kann direkt auf kompilierte Java-Programme angewendet werden, sodass man .jar/.war-Dateien nicht entpacken muss: https://github.com/jfrog/jfrog-spring-tools

Was die Identifizierung des Spring Framework auf dem System betrifft, hängt dies davon ab, welches Betriebssystem ausgeführt wird:

Windows

Die folgenden PowerShell-Skripte dienen zum Auffinden potenziell anfälliger Anwendungen, d. h. Anwendungen, die das Spring Framework verwenden oder darauf basieren. Beachten Sie, dass diese Skripte nicht zwischen aktualisierten Versionen und anderen unterscheiden, aber sie identifizieren Systeme, bei denen die Schwachstelle derzeit wahrscheinlich vorhanden ist – siehe Punkt 1 oben.

Suche nach spring-beans*.jar und cachedintrospectionresults.class in *.war-Dateien`auf dem System:

root@kitploit:~
$SearchName = "*.war"
$Drives = Get-WmiObject Win32_LogicalDisk -Filter 'DriveType=3' | Select -ExpandProperty DeviceID
#$Drives = Get-CimInstance Win32_LogicalDisk -Filter 'DriveType=3' | Select-Object -ExpandProperty DeviceID 
#powershell version 6

$Vulnerable = $false
$entries = @()
$hits = @()
$search1 = "spring-beans*.jar"
$search2 = "cachedintrospectionresults.class"
Foreach ($drive in $drives) {
    $SearchDir = "$drive\"
    $wars= (&cmd /c pushd $searchDir `& robocopy /l "$searchDir" null "$searchName" /ns /njh /njs /np /nc /ndl /xjd /mt /s)  -replace '^\s+|\s+$'
        
    Foreach ($war in $wars){
        If($war) {
            #$war
            Add-Type -AssemblyName System.IO.Compression
            Add-Type -AssemblyName System.IO.Compression.FileSystem
            $entries = ([System.IO.Compression.ZipArchive](https://github.com/helsecert/cve-2022-22965/blob/HEAD/%5BSystem.IO.Compression.ZipFile%5D::OpenRead($war))).Entries
            foreach ($entry in $entries){
                if ($entry.Name -like $search1) {
                    "$($war)\$($entry.FullName)"
                    $hits = $hits +1
                    }
                if ($entry.Name -like $search2) {
                    "$($war)\$($entry.FullName)"
                    $hits = $hits +1
                    }
                }
            
        }
    
    }
    
}
If ($hits){ "Vulnerable" }
Else { "Compliant" }

Darüber hinaus ist die Suche nach cachedintrospectionresults.class in allen .jar-Dateien nützlich, und uns ist bekannt, dass es nicht immer spring-beans*.jar ist, das diese Klasse enthält.

root@kitploit:~
$SearchName = "*.jar"
$Drives = Get-WmiObject Win32_LogicalDisk -Filter 'DriveType=3' | Select -ExpandProperty DeviceID
#$Drives = Get-CimInstance Win32_LogicalDisk -Filter 'DriveType=3' | Select-Object -ExpandProperty DeviceID 
#powershell version 6

$Vulnerable = $false
$entries = @()
$hits = @()
$search1 = "cachedintrospectionresults.class"
Foreach ($drive in $drives) {
    $SearchDir = "$drive\"
    $wars= (&cmd /c pushd $searchDir `& robocopy /l "$searchDir" null "$searchName" /ns /njh /njs /np /nc /ndl /xjd /mt /s)  -replace '^\s+|\s+$'
        
    Foreach ($war in $wars){
        If($war) {
            #$war
            Add-Type -AssemblyName System.IO.Compression
            Add-Type -AssemblyName System.IO.Compression.FileSystem
            $entries = ([System.IO.Compression.ZipArchive](https://github.com/helsecert/cve-2022-22965/blob/HEAD/%5BSystem.IO.Compression.ZipFile%5D::OpenRead($war))).Entries
            foreach ($entry in $entries){
                if ($entry.Name -like $search1) {
                    "$($war)\$($entry.FullName)"
                    $hits = $hits +1
                    }
                }
            
        }
    
    }
    
}
If ($hits){ "Vulnerable" }
Else { "Compliant" }

Linux

Für die Suche unter Linux kann man nach der Klasse cachedintrospectionresults.class in allen .jar- und .war-Dateien auf der Festplatte suchen und außerdem nach spring-beans*.jar in *.war-Dateien:

root@kitploit:~
find / -name '*.jar' -exec grep -Fi 'cachedintrospectionresults.class' {} \;
find / -name '*.war' -exec grep -Ei 'cachedintrospectionresults\.class|spring-beans.*\.jar' {} \;

sowie nach demselben Klassennamen in .jar-Dateien suchen, die sich in .war-Dateien befinden:

root@kitploit:~
#!/bin/bash

find / -name '*.war' -print0 2>/dev/null -print0 | while read -d $'\0' spring; do
        echo -en "${spring}: "$(unzip -p "${spring}" '*.jar' | strings | grep -Fi 'cachedintrospectionresults.class' | awk '{ print $NF }')"\n"
done
exit 0

Ressourcen

https://spring.io/blog/2022/03/31/spring-framework-rce-early-announcement

https://www.praetorian.com/blog/spring-core-jdk9-rce/

https://bugalert.org/content/notices/2022-03-30-spring.html

https://www.rapid7.com/blog/post/2022/03/30/spring4shell-zero-day-vulnerability-in-spring-framework/

https://www.lunasec.io/docs/blog/spring-rce-vulnerabilities/

Tool herunterladen