Skip to content
Breachfolio
LAB · TUTORIAL

Añade un objetivo vulnerable a tu laboratorio.

Un laboratorio sin nada que atacar no es más que una máquina virtual. DVWA en Docker te da un objetivo legal y desechable con un solo comando, y una regla que lo mantiene así.

5 de julio de 202610 min de lectura

Si seguiste cómo montar un laboratorio casero en un solo portátil, ya tienes una red aislada y un sitio donde trabajar. Lo que falta es algo contra lo que practicar de verdad. DVWA (Damn Vulnerable Web Application) es la respuesta estándar: una aplicación en PHP/MariaDB deliberadamente plagada del tipo de fallos que cubre el OWASP Top 10inyección SQL, control de acceso roto, XSS y más — creada específicamente para que puedas practicar a encontrarlos y corregirlos sin infringir ninguna ley ni tocar el sistema de nadie.

Lee esto antes de hacer cualquier otra cosa. DVWA está roto a propósito. Nunca lo ejecutes en una IP pública, en una red compartida ni en la carpeta pública de ningún proveedor de hosting: la propia documentación del proyecto advierte de que, si lo haces, quedará comprometido en cuestión de horas. Todo lo que viene a continuación da por hecho la red de laboratorio aislada del tutorial anterior: solo anfitrión (host-only) o NAT, sin redirección de puertos y sin exposición más allá de tu propia máquina.

El camino más rápido: un solo comando

El repositorio oficial incluye una configuración con Docker Compose, pero si lo único que quieres es tenerlo funcionando ahora mismo, la imagen de la comunidad vulnerables/web-dvwa te lleva ahí en una sola línea:

docker run --rm -it -p 8080:80 vulnerables/web-dvwa

Apunta un navegador del mismo anfitrión a http://localhost:8080 y aterrizarás en la pantalla de configuración de DVWA. Las credenciales por defecto son admin / password; cámbialas si vas a dejar esto funcionando más allá de una única sesión, incluso dentro de un laboratorio aislado.

La forma oficial, si quieres que persista

Para una configuración que sobreviva a un reinicio y coincida con lo que los mantenedores prueban de verdad, clona el repositorio oficial y usa su fichero de Compose en lugar de un contenedor de un solo uso:

git clone https://github.com/digininja/DVWA.git
cd DVWA
docker compose up -d

Esto levanta DVWA y su backend de MariaDB a la vez, disponible en http://localhost:4280 por defecto. Como cada commit a la rama master del proyecto reconstruye la imagen automáticamente, esta vía también tiende a estar más al día que anclarse a una imagen de la comunidad más antigua.

Ajustar la dificultad

Tras iniciar sesión, DVWA Security define lo evidentes que son los fallos:

NivelCuándo usarlo
LowTu primera pasada por cada clase de vulnerabilidad
MediumCuando los payloads básicos dejan de funcionar y tienes que pensar en cómo saltarte los filtros
HighCuando quieres algo más parecido a una aplicación real y parcialmente reforzada

Recorre primero el nivel Low en todos los módulos: la idea es construir un modelo mental de cada clase de fallo, no dar por casualidad con un payload que funcione.

Qué practicar de verdad

No te limites a pasar por cada módulo una sola vez. Elige dos o tres que correspondan a categorías en las que flojeas y profundiza: prueba SQL Injection en Low y luego en Medium, y fíjate exactamente en qué cambio de saneamiento de la entrada rompe tu primer payload y qué tuviste que ajustar. Repite con Command Injection y con XSS almacenado. Esa comparación — qué cambió entre niveles de dificultad — te enseña más sobre cómo fallan los filtros de verdad que la propia vulnerabilidad.

Dos módulos que merecen tiempo extra: File Upload, porque es el módulo que demuestra de forma más directa cómo «validamos los tipos de fichero» tantas veces significa en realidad «comprobamos la extensión»; saltártelo en Medium y High te enseña una lección que aparece constantemente en aplicaciones reales. Y Brute Force, porque es el módulo en el que de verdad echarás mano de una herramienta como Burp Suite o de un bucle de peticiones automatizado en lugar de un navegador, lo cual es un puente útil si la comparativa de Burp frente a ZAP todavía te resulta algo teórica.

Limpieza

Como DVWA es desechable por diseño, trátalo como tal. Si usaste el comando docker run de una sola línea con --rm, detener el contenedor (Ctrl+C, o docker stop desde otra terminal) lo elimina automáticamente: no queda nada residual. Si usaste Docker Compose, docker compose down detiene y elimina los contenedores, y añadir -v borra además el volumen de la base de datos, que es justo lo que quieres entre sesiones de práctica: un punto de partida limpio y conocidamente vulnerable cada vez, sin ningún fallo a medio arreglar arrastrado de la semana pasada.

Una nota sobre el alcance. Este tutorial es para practicar sobre infraestructura de tu propiedad, en un entorno aislado, con fines defensivos y educativos. Aquí se aplica la misma regla que a toda herramienta cubierta en este sitio: nunca dirijas estas técnicas contra un sistema que no sea tuyo o para el que no tengas autorización explícita por escrito para probarlo.

Este es el patrón que vale la pena conservar: un objetivo desechable, un entorno de usar y tirar, y una forma de reiniciar ambos con un solo comando. Cuando DVWA deje de enseñarte algo nuevo, el mismo enfoque — descarga un contenedor, rómpelo, desmóntalo — se aplica a la siguiente aplicación intencionadamente vulnerable que añadas al mismo laboratorio.