
Exploit educativo para CVE-2023-50164 (Apache Struts 2) que demuestra path traversal y ejecución remota de código mediante la subida de archivos maliciosos, diseñado para entornos de laboratorio de HackTheBox.
Este exploit fue desarrollado específicamente para el laboratorio Strutted de HackTheBox, con el objetivo de explotar la vulnerabilidad CVE-2023-50164 en Apache Struts 2. La falla permite path traversal a través de un fallo en el manejo de los parámetros de carga de archivos. El exploit fue creado con el propósito de demostrar cómo un atacante puede realizar carga de archivos maliciosos y obtener ejecución remota de código (RCE).
Este exploit fue desarrollado exclusivamente con fines educativos dentro del entorno controlado de HackTheBox y no debe ser utilizado en sistemas reales sin permiso explícito. La explotación de vulnerabilidades sin consentimiento es ilegal y poco ética.
El objetivo de este exploit es demostrar cómo la falla en Apache Struts 2, específicamente en el endpoint de carga de archivos, puede ser explotada para:
La vulnerabilidad CVE-2023-50164 está asociada al manejo incorrecto de los parámetros de carga de archivos, permitiendo que un atacante manipule el nombre del archivo enviado para realizar path traversal.
Manipulación del Parámetro HTTP: El exploit modifica los parámetros HTTP para incluir caracteres de traversal de directorio (../), permitiendo la carga de un archivo malicioso en una carpeta no autorizada.
Envío del Archivo Malicioso: El exploit envía un archivo malicioso usando el método POST en el endpoint /upload.action, explotando la falla de case sensitivity de los parámetros HTTP.
Ejecución de Código Remoto: El atacante puede insertar código malicioso que se ejecutará en el servidor después de la carga.
A continuación se muestra un ejemplo de una solicitud HTTP que se puede utilizar para explotar la vulnerabilidad:
POST /upload.action HTTP/1.1
Host: vulnerable-server.com
Content-Type: multipart/form-data; boundary=------------------------abcdef
--------------------------abcdef
Content-Disposition: form-data; name="Upload"; filename="img.png"
Content-Type: application/octet-stream
PNG
--------------------------abcdef
Content-Disposition: form-data;
Content-Type: application/octet-stream
../../shell.jsp
--------------------------abcdef--