DVWA (Damn Vulnerable Web Application) - guida passo passo con comandi concreti per laboratorio isolato
Promemoria importante
Uso consentito e sicurezza del laboratorio
Esegui i passaggi e i comandi di questa guida solo in ambienti isolati (Host-Only o Internal Network) e con autorizzazione. DVWA e una applicazione volutamente vulnerabile: non esporla mai su Internet pubblico.
Contenuti della guida
Cosa impari
Installazione rapida con Docker, installazione locale con MAMP e MySQL, creazione database con comandi MySQL, verifiche con nmap e curl, e workflow didattico di utilizzo.
Prerequisiti
Software e ambiente
- Docker installato se scegli il metodo con container.
- MAMP installato se scegli il metodo locale con Apache, PHP e MySQL.
- Una VM attaccante (per esempio Kali) nella stessa rete isolata del target DVWA.
Link utili
Download e documentazione
- DVWA (GitHub): github.com/digininja/DVWA
- DVWA (Docker image): hub.docker.com/r/vulnerables/web-dvwa
- MAMP (download): mamp.info/en/downloads
- Docker (installazione): docker.com
Metodo A - Avvio rapido con Docker
Esecuzione del container
Esegui il container DVWA e pubblica la porta 80 del container sulla 8080 del tuo host o VM del laboratorio.
docker run --rm -d --name dvwa -p 8080:80 vulnerables/web-dvwa Apri il browser su [http://localhost:8080](http://localhost:8080) oppure su http\://IP\_HOST:8080 se stai usando una VM.
Controllo stato e log
docker ps
docker logs -f dvwa
# opzionale, se supportato:
docker exec -it dvwa /bin/sh
Arresto e rimozione
docker stop dvwa && docker rm dvwa
Metodo B - Installazione con MAMP e MySQL
1) Installare e avviare MAMP
- Installa MAMP dal sito ufficiale e avvia l applicazione.
- Verifica che Apache e MySQL siano in esecuzione dalla dashboard di MAMP.
- Nota porte tipiche: Apache su 8888 e MySQL su 8889 su macOS (verifica nelle preferenze). Su Windows le porte possono essere 80 e 3306, verifica sempre.
2) Copiare DVWA nella document root
Scarica DVWA da GitHub e copia la cartella nella document root di MAMP.
# macOS - esempio terminale
cd \~/Downloads
git clone [https://github.com/digininja/DVWA.git](https://github.com/digininja/DVWA.git)
sudo cp -R DVWA /Applications/MAMP/htdocs/DVWA
sudo chown -R \$(whoami)\:staff /Applications/MAMP/htdocs/DVWA
sudo chmod -R 755 /Applications/MAMP/htdocs/DVWA
3) Creare il database MySQL
Usa la CLI MySQL fornita da MAMP oppure phpMyAdmin incluso in MAMP. Di seguito esempio con CLI su macOS.
/Applications/MAMP/Library/bin/mysql -u root -proot
\-- quindi nella shell mysql:
CREATE DATABASE dvwa;
CREATE USER 'dvwa'@'localhost' IDENTIFIED BY 'dvwa';
GRANT ALL PRIVILEGES ON dvwa.\* TO 'dvwa'@'localhost';
FLUSH PRIVILEGES;
EXIT;
4) Configurare DVWA per MySQL
Modifica il file di configurazione config/config.inc.php dentro la cartella DVWA con i parametri corretti.
# imposta i valori del database
$\_DVWA\['db\_server'] = 'localhost';
$\_DVWA\['db\_database'] = 'dvwa';
$\_DVWA\['db\_user'] = 'dvwa';
$\_DVWA\['db\_password'] = 'dvwa';
# assicurati che i permessi siano corretti
sudo chmod 644 /Applications/MAMP/htdocs/DVWA/config/config.inc.php
5) Inizializzare l applicazione
- Apri il browser su http://localhost:8888/DVWA/setup.php (adatta la porta se diversa).
- Segui il pulsante Create o Reset Database per creare le tabelle e completare il setup.
- Accedi alla pagina principale e verifica che DVWA sia operativa.
Verifiche dopo l installazione
Test porte e risorse
Esegui i test dalla VM attaccante o dall host del laboratorio.
# verifica porte comuni (adatta IP\_TARGET)
nmap -p 80,8080,8888 IP\_TARGET
# verifica HTTP di base
curl -I [http://localhost:8080/](http://localhost:8080/)
curl -s [http://localhost:8080/DVWA/login.php](http://localhost:8080/DVWA/login.php) | head -n 20
# se usi MAMP:
curl -I [http://localhost:8888/DVWA/](http://localhost:8888/DVWA/)
```
Esempio di workflow didattico
Passi consigliati
- Crea snapshot puliti di Kali e della macchina DVWA.
- Esegui discovery con nmap per identificare servizi e versioni.
- Imposta un proxy (Burp o ZAP) nel browser e analizza richieste e risposte.
- Modifica il livello di sicurezza in DVWA (Low, Medium, High) e osserva le differenze.
- Documenta risultati e ripristina gli snapshot a fine esercitazione.
Troubleshooting
Problemi comuni e soluzioni rapide
- Errore connessione DB: controlla credenziali nel file config/config.inc.php e che MySQL sia attivo in MAMP.
- Pagina bianca o errori PHP: consulta i log di Apache e di PHP nella cartella logs di MAMP.
- Container Docker non risponde: usa docker logs -f dvwa per analizzare eventuali errori.
- Proxy non intercetta: verifica le impostazioni del proxy nel browser e disattiva estensioni che interferiscono.
Articolo generato da ChatGPT.