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í.
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 10 — inyecció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.
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:
| Nivel | Cuándo usarlo |
|---|---|
| Low | Tu primera pasada por cada clase de vulnerabilidad |
| Medium | Cuando los payloads básicos dejan de funcionar y tienes que pensar en cómo saltarte los filtros |
| High | Cuando 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.
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.
