Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2022-22965 — Script di rilevamento e guida per la vulnerabilità CVE-2022-22965 (Spring4Shell) nel framework Spring, inclusi scanner PowerShell e Bash per file JAR/WAR vulnerabili e controlli della versione JDK. | Kitploit
Strumenti/GitHubGitHub/helsecert/cve-2022-22965
Analisi StaticaScanner di VulnerabilitàAnalisi delle VulnerabilitàAnalisi del CodiceSicurezza WebApprendimento e FormazioneRisorse Curate
GitHubhelsecert/cve-2022-22965

CVE-2022-22965

Script di rilevamento e guida per la vulnerabilità CVE-2022-22965 (Spring4Shell) nel framework Spring, inclusi scanner PowerShell e Bash per file JAR/WAR vulnerabili e controlli della versione JDK.

Vedi Repository
124 anni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Vulnerabilità in Spring Framework - CVE-2022-22965

Elenco dei software vulnerabili/non vulnerabili

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

Trovare codice vulnerabile

Prerequisiti per essere vulnerabili a CVE-2022-22965:

1) Utilizzo di Spring Framework

Vedere gli script Powershell e bash più avanti.

2) Le versioni di Spring Framework devono essere vulnerabili, questo vale in generale per tutte le versioni precedenti alla 5.3.18 e 5.2.20.

Hilko Bengen ha pubblicato uno scanner che cerca versioni vulnerabili di CachedIntrospectionResults.class basandosi sulle versioni qui: https://github.com/hillu/local-spring-vuln-scanner

3) Utilizzo di JDK9 o successivo, e che si esegua JRE 9 o successivo.

Questo si può scoprire eseguendo:

root@kitploit:~
java -version

sui sistemi interessati.

Nota che le applicazioni Java possono essere eseguite in vari modi, e si possono avere diverse versioni installate contemporaneamente. Per essere sicuri di quale versione Java è in esecuzione, si può prima identificare da dove viene eseguito il binario Java, e poi vedere quale versione è quel binario.

In Linux si può fare eseguendo:

root@kitploit:~
ps aux | grep java

dove ad esempio si trova /usr/lib/jvm/java-11-openjdk-amd64/bin/java, e si può quindi eseguire il seguente comando usando il percorso assoluto:

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)

Analogamente in Windows si può trovare il percorso assoluto per i processi Java in esecuzione usando WMI o PowerShell:

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

4) Il codice che utilizza Spring Framework deve anche utilizzare determinati metodi con determinati parametri affinché un attaccante possa sfruttare la vulnerabilità.

JFrog ha pubblicato codice Python che identifica l'uso di ciò, e può essere usato direttamente su programmi Java compilati senza dover estrarre file .jar/.war: https://github.com/jfrog/jfrog-spring-tools

Per quanto riguarda l'identificazione di Spring Framework sul sistema, dipende dal sistema operativo in esecuzione:

Windows

I seguenti script PowerShell per trovare potenziali applicazioni vulnerabili, cioè applicazioni che utilizzano o sono basate su Spring Framework. Nota che questi script non distingueranno tra versioni aggiornate o meno, ma identificheranno i sistemi che probabilmente possono avere la vulnerabilità al momento, rif. punto 1 sopra.

Cerca spring-beans*.jar e cachedintrospectionresults.class nei file *.war sul sistema:

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/main/%5BSystem.IO.Compression.ZipFile%5D%3A%3AOpenRead%28%24war))).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" }

Inoltre, la ricerca di cachedintrospectionresults.class in tutti i file .jar è utile, e sappiamo che non è sempre spring-beans*.jar a contenere questa classe.

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/main/%5BSystem.IO.Compression.ZipFile%5D%3A%3AOpenRead%28%24war))).Entries
            foreach ($entry in $entries){
                if ($entry.Name -like $search1) {
                    "$($war)\$($entry.FullName)"
                    $hits = $hits +1
                    }
                }
            
        }
    
    }
    
}
If ($hits){ "Vulnerable" }
Else { "Compliant" }

Linux

Per la ricerca su Linux, si può cercare la classe cachedintrospectionresults.class in tutti i file .jar e .war su disco, e anche cercare spring-beans*.jar nei file *.war:

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

e anche cercare lo stesso nome di classe nei file .jar all'interno dei file .war:

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

Risorse

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/

Scarica lo strumento