Instalación y configuración DVWA

A continuación mostramos una guía clara y práctica en español para montar un laboratorio DVWA (Damn Vulnerable Web Application) en una VM Ubuntu Server ejecutada en VMware.

Esta guía es para laboratorio y fines educativos. No utilices DVWA en entornos de producción.

Pasos clave:

  1. Actualizar Ubuntu. 
  2. Instalar LAMP (Apache, MySQL, PHP). 
  3. Descargar DVWA. 
  4. Configurar la base de datos MySQL. 
  5. Ajustar config.inc.php.
  6. Corregir incompatibilidades con MySQL 8.x (si es necesario). 
  7. Activar opciones de PHP (display_errors, allow_url_include). 
  8. Ajustar permisos y comprobar desde el host.

Requisitos

  • VMware (Workstation/Player) en tu máquina host.
  • Máquina virtual Ubuntu Server (22.04 o 24.x recomendado).
  • Conexión entre host y VM (NAT, Host-Only o Bridged según prefieras).
  • Usuario con privilegios sudo en la VM.

1) Actualizar el sistema

2) Instalar Apache, MySQL y PHP (LAMP básico)

Habilitar los servicios al arranque (opcional):

3) Descargar DVWA y permisos básicos

4) Crear base de datos y usuario MySQL

  1. Entra en MySQL como root:
  1. Crea la base de datos y el usuario (ejemplo):

Nota: usa una contraseña adecuada para laboratorio. Si ya tienes autenticación por socket para root, sudo mysql funciona sin contraseña.

5) Configurar DVWA (config.inc.php)

Asegúrate de que las variables de DB apunten a tu usuario/contraseña:

Si el archivo usa getenv() con operadores ?:, la sintaxis correcta es, por ejemplo:

6) Problemas comunes con MySQL 8.x — corrección rápida

Algunos scripts de DVWA usan ALTER TABLE … ADD COLUMN IF NOT EXISTS que puede fallar en MySQL 8.3. Si al hacer Create / Reset Database obtienes errores SQL, arregla el fichero donde ocurren.

  1. Haz copia de seguridad del fichero problema:
  1. Reemplaza las ocurrencias problemáticas (automático):
  1. O edítalo manualmente y cambia líneas como:

por

  1. Reinicia Apache:
  1. Vuelve a http://<IP_VM>/DVWA/setup.php y pulsa Create / Reset Database.

7) Activar display_errors y allow_url_include en PHP (solo laboratorio)

  1. Localiza tu versión de PHP:
  1. Edita el php.ini de Apache (ejemplo para PHP 8.3):
  1. Busca y cambia (o añade) estas líneas:
  1. Reinicia Apache:
  1. Verifica con phpinfo() (temporal):


# Abre http://<IP_VM>/info.php y verifica, luego borra:

8) Verifica la IP de la VM y accede desde el host

En la VM:

Busca la inet de la interfaz (ej.: 192.168.49.132). Desde el navegador del host abre:

Ejemplo:

9) Recomendaciones posteriores (seguridad y buenas prácticas de laboratorio)

  • Mantén la VM en red Host-Only o NAT para aislarla del resto de la red.
  • Toma snapshots antes de experimentar (VMware).
  • No habilites allow_url_include ni display_errors en entornos reales.
  • Practica con una VM atacante (Kali) y Burp Suite u OWASP ZAP desde el host o desde otra VM.