DVWA – Damn Vulnerable Web Application

Avete voglia di testate le vostre conoscenze o skills di penetration testing per quanto riguardo il campo web applicativo senza problemi legali?
Avete voglia di conoscere le possibili mitigation da attuare contro le maggiori vulnerabilità?
Bene! Damn Vulnerable Web Application fa proprio al caso vostro!
DVWA è una web application scritta in PHP e MySQL installabile in qualsiasi ambiente in cui sia presente un web server, php e mysql.
L’applicazione è stata creata e concepita piena zeppa di vulnerabilità più o meno facili da scovare, il livello di difficoltà può essere configurato come:

  1. Basso  – Non esiste nessun tipo di controllo di sicurezza
  2. Medio – Controlli approssimativi
  3. Alto – Questo è il livello più alto e l’obbiettivo non si deve sempre focalizzare soltanto sulla vulnerabilità stessa (stile CTF)
  4. Impossibile – Non sono presenti vulnerabilità. Questo livello è stato creato per mostrare agli sviluppatori come mitigare le vulnerabilità.

Le vulnerabilità con cui è possibile confrontarsi sono le seguenti:

  1. Brute Force
  2. Command Injection
  3. CSRF
  4. File Inclusion
  5. File Upload
  6. Insecure CAPTCHA
  7. Sql Injection
  8. Sql Injection (Blind)
  9. XSS Reflected
  10. XSS Stored

Questo sarà uno dei vari post che scriverò sull’applicazione DVWA, dall’installazione alla risoluzione delle varie vulnerabilità.

Installazione Damn Vulnerable Web Application

Per l’installazione farò riferimento al sistema operativo Linux CentOS 6 ma a grandi linee potete prenderla come riferimento per altre distribuzioni.
Consiglio di virtualizzare l’ambiente di lavoro, in ogni caso l’importante è che non installiate l’applicativo su un server web pubblico se non volete rischiare di essere bucati.
Nel mio esempio darò per scontato di avere già una macchina virtuale CentOS 6 con indirizzo ip 10.0.0.100, web server apache e database mysql.

1) Si parte con l’installazione dei requisiti:

[root@web ~]# yum install httpd mysql-server mysql php php-mysql php-gd php-common php-pdo php-cli unzip

2) Avviare i servizi web e database:

[root@web ~]# /etc/init.d/httpd start && /etc/init.d/mysqld start

3) Scaricare l’ultima versione di DVWA (1.9 al momento) nella DocumentRoot di apache:

[root@web ~]# cd /var/www/html/
[root@web html]# wget https://github.com/RandomStorm/DVWA/archive/v1.9.zip
[root@web html]# unzip v1.9.zip
[root@web html]# mv DVWA-1.9/ DVWA && chown apache.apache DVWA -R

4) Con un qualsiasi client mysql, creare le credenziali di accesso e il database per l’applicazione:

create database dvwa;

CREATE USER 'dvwauser'@'127.0.0.1' IDENTIFIED BY 'password';

grant all on dvwa.* to 'dvwauser'@'127.0.0.1';

flush privileges;

5) Registrarsi sul sito https://www.google.com/recaptcha/intro/index.html per ricevere la chiave pubblica e privata da configurare su DVWA così da potersi cimentare con il test “Insecure CAPTCHA“.

6) Editare il file DVWA/config/config.inc.php inserendo il nome, l’username e la password del database (righe 11-18):

 11 # Database variables
 12 # WARNING: The database specified under db_database WILL BE ENTIRELY DELETED during setup.
 13 # Please use a database dedicated to DVWA.
 14 $_DVWA = array();
 15 $_DVWA[ 'db_server' ] = '127.0.0.1';
 16 $_DVWA[ 'db_database' ] = 'dvwa';
 17 $_DVWA[ 'db_user' ] = 'dvwauser';
 18 $_DVWA[ 'db_password' ] = 'password';

e la chiave pubblica/privata per il captcha (righe 23-27):

 23 # ReCAPTCHA settings
 24 # Used for the 'Insecure CAPTCHA' module
 25 # You'll need to generate your own keys at: https://www.google.com/recaptcha/admin/create
 26 $_DVWA[ 'recaptcha_public_key' ] = '6LdK7xITAAzzAAJQTfL7fu6I-0aPl8KHHieAT_yJg';
 27 $_DVWA[ 'recaptcha_private_key' ] = '6LdK7xITAzzAAL_uw9YXVUOPoIHPZLfw2K1n5NVQ';

7) Editare il file /etc/php.ini ed abilitare la funzione php allow_url_include:

; Whether to allow the treatment of URLs (like http:// or ftp://) as files.
; http://www.php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen
allow_url_fopen = On

; Whether to allow include/require to open URLs (like http:// or ftp://) as files.
; http://www.php.net/manual/en/filesystem.configuration.php#ini.allow-url-include
allow_url_include = On

8) Riavviare il servizio apache:

[root@web ~]# /etc/init.d/httpd restart

9) Collegarsi all’home page dell’applicativo (http://10.0.0.100/DVWA/) e risolvere eventuali requisiti segnalati, dopo di che premere il bottone “Create/Reset Database“:

Damn Vulnerable Web Application

10) Se tutto è andato a buon fine verrete rimandati automaticamente alla pagina di login, altrimenti ricontrollate i dati riguardanti il database. Per autenticarsi le credenziali di default sono username admin e password password:

Damn Vulnerable Web Application

11) Una volta autenticati è possibile modificare il livello di difficoltà cliccando sul menù “DVWA Security” a sinistra:

Damn Vulnerable Web Application

Bene, arrivati a questo punto Damn Vulnerable Web Application è pronta per affrontare le nostre skills.
Se volete qualche consiglio vi suggerisco di utilizzare nella vostra analisi tools come Burpsuite, Owasp Zap, il plugin Firefox Tamper Data, tanta pazienza e la madre di tutti i tools: il vostro cervello 😀
Inoltre se siete dei principianti è raccomandato partire dal livello basso e leggere i links di riferimento che troverete infondo alla pagina di ogni vulnerabilità.
Una volta completati tutti e tre i gradi di difficoltà di una singola vulnerabilità, date un’occhiata al relativo sorgente presente nel livello “Impossibile” così da imparare anche le possibili mitigazioni.
Non mi resta che augurarvi: Happy Hacking!