Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2022-22965 — Scripts de detección y guía para la vulnerabilidad CVE-2022-22965 (Spring4Shell) en Spring Framework, incluidos escáneres de PowerShell y Bash para archivos JAR/WAR vulnerables y comprobaciones de versiones de JDK. | Kitploit
Herramientas/GitHubGitHub/helsecert/cve-2022-22965
Análisis EstáticoEscáneres de VulnerabilidadesAnálisis de VulnerabilidadesAnálisis de CódigoSeguridad WebAprendizaje y EducaciónRecursos Curados
GitHubhelsecert/cve-2022-22965

CVE-2022-22965

Scripts de detección y guía para la vulnerabilidad CVE-2022-22965 (Spring4Shell) en Spring Framework, incluidos escáneres de PowerShell y Bash para archivos JAR/WAR vulnerables y comprobaciones de versiones de JDK.

Ver Repositorio
1hace 4 añosAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Vulnerabilidades en Spring Framework - CVE-2022-22965

Lista de software que es / no es vulnerable

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

Encontrar código vulnerable

Requisitos para ser vulnerable a CVE-2022-22965:

1) Uso de Spring Framework

Vea los scripts de PowerShell y bash más abajo.

2) Las versiones de Spring Framework deben ser vulnerables, esto aplica en principio a todas las versiones anteriores a 5.3.18 y 5.2.20.

Hilko Bengen ha publicado un escáner que busca versiones vulnerables de CachedIntrospectionResults.class basado en versiones aquí: https://github.com/hillu/local-spring-vuln-scanner

3) Uso de JDK9 o superior, y que se ejecute JRE 9 o superior.

Esto se puede averiguar ejecutando:

root@kitploit:~
java -version

en los sistemas correspondientes.

Tenga en cuenta que las aplicaciones Java pueden ejecutarse de diversas maneras, y se pueden tener varias versiones instaladas simultáneamente. Para estar seguro de qué versión de Java se está ejecutando, primero puede identificar desde dónde se ejecuta el binario de Java y luego ver qué versión corresponde a ese binario.

En Linux, esto se puede hacer ejecutando:

root@kitploit:~
ps aux | grep java

donde se encuentra, por ejemplo, /usr/lib/jvm/java-11-openjdk-amd64/bin/java, y entonces se puede ejecutar el siguiente comando usando la ruta absoluta:

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)

De manera similar en Windows, se puede encontrar la ruta absoluta de los procesos Java en ejecución 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) El código que utiliza Spring Framework también debe hacer uso de métodos específicos con parámetros específicos para que un atacante pueda explotar la vulnerabilidad.

JFrog ha publicado código Python que identifica el uso de esto, y se puede usar directamente en programas Java compilados sin necesidad de extraer archivos .jar/.war: https://github.com/jfrog/jfrog-spring-tools

En cuanto a la identificación de Spring Framework en el sistema, depende del sistema operativo que se ejecute:

Windows

Los siguientes scripts de PowerShell para encontrar aplicaciones potencialmente vulnerables, es decir, aplicaciones que utilizan o están basadas en Spring Framework. Tenga en cuenta que estos scripts no distinguirán entre versiones actualizadas o no, pero identificarán sistemas que probablemente tengan la vulnerabilidad actualmente, según el punto 1 anterior.

Buscar spring-beans*.jar y cachedintrospectionresults.class en archivos *.war del 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/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" }

Además, buscar cachedintrospectionresults.class en todos los archivos .jar es útil, y sabemos que no siempre es spring-beans*.jar el que contiene esta clase.

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

Para búsquedas en Linux, se puede buscar la clase cachedintrospectionresults.class en todos los archivos .jar y .war en el disco, así como buscar spring-beans*.jar en archivos *.war:

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

y también buscar el mismo nombre de clase en archivos .jar que están dentro de archivos .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

Recursos

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/

Descargar herramienta