Saltar al contenido
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.

Preguntas frecuentes

¿Qué es DVWA y para qué sirve?
DVWA (Damn Vulnerable Web Application) es una aplicación en PHP/MariaDB deliberadamente plagada de fallos del OWASP Top 10 —inyección SQL, control de acceso roto, XSS y más— creada para practicar a encontrarlos y corregirlos sin infringir ninguna ley.
¿Es seguro exponer DVWA a internet o a una red compartida?
No. La propia documentación del proyecto advierte de que quedará comprometido en cuestión de horas si se hace. Debe ejecutarse siempre en la red de laboratorio aislada, host-only o NAT, sin redirección de puertos ni exposición más allá de tu propia máquina.
¿Cuál es la diferencia entre los niveles Low, Medium y High de DVWA?
Low es para la primera pasada por cada clase de vulnerabilidad con los fallos más evidentes; Medium introduce filtros básicos que hay que saltarse con payloads más elaborados; y High se acerca más a una aplicación real y parcialmente reforzada.
¿Cómo se elimina DVWA por completo tras una sesión de práctica?
Si usaste docker run --rm, detener el contenedor lo elimina automáticamente. Si usaste Docker Compose, docker compose down -v detiene los contenedores y borra además el volumen de la base de datos, dejando un punto de partida limpio para la próxima sesión.