giovedì 6 dicembre 2018

Metasploitable2 - Bruteforce DVWA con Hydra


In questo scenario, abbiamo un sito web, DVWA (Damn Vulnerable Web Application), parte di Metasplotable2.
Ci e' stato chiesto di controllare la sicurezza dell'utente "admin".
 ( La password e' "password", ma  facciamo finta di sapere solo il nome "admin").

Useremo una tecnica chiamata "brute force" (forza bruta), dove senza tanta finezza, si provano gli utenti e/o password da una o piu' liste, uno dopo l'altro, fino a quando si trova quella giusta, o finisce la lista.

Intercetteremo un  login con password sbagliata per avere le informazioni necessarie da usare con Hydra THC.
I programmi e  liste usate sono tutte incluse in Kali.



NOTA: liste di password vanno da kilobytes (migliaia) a gigabytes (milioni+) di passwords o nomi di utenti. Ci sono programmi, siti e scripts per "creare" liste di password da altre liste, combinandole con prefissi e suffi e ottimizzandole a seconda della lingua o tematica. La qualita' delle passwords e' importante, e non la quantita'.


Importante: ricorda che abbiamo assegnato indirizzi IP statici:
metasploitable2  192.168.1.10
e kali VM su       192.168.1.20
entrambi sono Attaccate al Network Interno > intnet

La pagina http://192.168.1.10/dvwa/login.php ha una "Web Form" per entrare.
Quando si compila una web form, si riempiono i "campi" (fields) con nome/password/data/eta/area/etc, queste informazioni vengono mandate e controllate dal Server, che risponde dando accesso ad un altra pagina/risorsa o con un messaggio di errore.

Prima di poter iniziare a automatizzare le prove, abbiamo bisogno di alcune informazioni, come che tipo di forma e' usata, quanti e quali campi (fields) usa, e che messaggio da in caso di password sbagliata.
In particolare, Hydra ha bisogno di almeno:
  • indirizzo IP del sito
  • URL della pagina del login
  • tipo di forma (HTTP/HTTPS/POST/GET)
  • nome dei "campi" (fields) per utente e password
  • messaggio di errore
Useremo Burp Suite come proxy per il Web Browser (Firefox) per ottenere queste informazioni

<inizio crack web form>

Fai partire Metasploitable2 VM.

Fai partire Kali VM.


Apri Firefox (web browser) e preparalo per far passare tutto il traffico su Burp Suite

Edit > Preferences > Advanced > Network > Settings > Connection Settings
  Cambia HTTP proxy a 127.0.0.1 porta 8080
  v  usa questo proxy per tutti i protocolli
  Socks5

Firefox Advanced> Network > Settings > Connection Settings

Apri Burp
controlla che Proxy >> Intercept >> intercept is on
vai su Proxy > Options > SSL Pass Trough e accendi  v Automatically add entries...

Su Firefox, vai su http://192.168.1.10/dvwa/login.php
Su Burp, nota che ha intercettato la richiesta per la pagina, clicca Forward

Su Firefox, entra username: admin e  password: 1234
Su Burp, nota che ha intercettato la richiesta per la pagina, clicca Forward

Su Firefox, nota, in basso alla pagina, il messaggio di errore: Login Failed

Su Burp, vai su Target > Site Map

Interessante per noi, e' la richiesta con metodo POST


Abbiamo quindi le seguenti informazioni per Hydra
  • indirizzo IP del sito: 192.168.1.10
  • URL della pagina del login: /dvwa/login.php
  • tipo di forma (HTTP/HTTPS/POST/GET): HTTP-POST-FORM
  • nome dei "campi" (fields) per utente e password:
    username=admin&password=1234&Login=Login
  • messaggio di errore: " Login Failed "
  • il dizionario /usr/share/dirb/wordlists/small.txt (uno dei tanti in Kali)
Hydra accetta molte opzioni e metodi che sono al di fuori di questa dimostrazione.
Useremo quindi la seguente sintassi:

hydra -l <username>  -p <password list> <IP Address> <parametri form > <messaggio di errore>

Con i dati ottenuti da Burp, il comando diventa: 

 hydra -l admin -P /usr/share/dirb/wordlists/small.txt 192.168.1.10 HTTP-POST-FORM "dvwa/login.ph:username=^USER^&password=^PASS^&Login=Login:Login Failed" -V
  
hydra
  • -l il nome di un singolo utente (usa -L per usare una lista di utenti)
  • -P usa la seguente password list >
  • http-post-form usa questo metodo per la connessione
  • /dvwa/login-php usa questa URL per trovare la pagina del login
  • username  nome del"campo" (field) dell'utente
  • ^USER^ Hydra inserisci qui il nome utente (singolo o da una lista)
  • password nome del "campo" (field) della password
  • ^PASS^  Hydra- inserisci qui la password dalla lista di password
  • Login usa il seguente Messaggio di errore >
  • Login failed messaggio di errore
  • -V mostra i tentantivi (verboso)

Dopo un paio di minuti, al 718esimo tentativo, Hydra trova la password.


<fine crack web form>

Conclusioni

Bruteforce e Hydra sono un ottimo metodo per testare un sito web o applicazione PRIMA che sia pubblicata. Per assicurarsi che nessuno ha usato password facilmente indovinabili.
Questo metodo e' valido per dare un idea generale del processo, e "nel mondo reale" verrebbe bloccato al secondo o terzo tentativo.

Articolo originale:
https://null-byte.wonderhowto.com/how-to/hack-like-pro-crack-online-web-form-passwords-with-thc-hydra-burp-suite-0160643/

Appendice - Burp Suite

Burp Suite (versione pagata) e' uno dei migliori programmi nell'arsenale del Pentesting ed usato da molti professionisti nel settore.
Ha la capacita' di intercettare, analizzare, modificare e rimandare indietro qualsiasi pacchetto indirizzato al browser.
Per completezza, e stuzzicare la curiosita', aggiungiamo che e' possibile usare Burp Suite per cercare una password in una web form. '

Su Burp, in Target > Site Map
selezione l'entrata del tentativo di login > Right-click > Send to Intruder

Sulla tab di Intruder, 4 sotto-tabs: Target, Positions, Payloads e Options

  • Target: 192.168.1.10 port 80
  • Positions: qui si dice a Burp quali "campi" (fields) tentare, metodo: Sniper
    Il simbolo   § circonda l'elemento da usare per i tentativi.
    "Clear §" per pulire
    Seleziona (highlight) 1234 e clicca "Add §" per ottenere §1234§
  • Payloads
    Payload Set: 1, Payload type: Simple List
    Payload Options > Load > /usr/share/dirb/wordlists/small.txt
    Payload Encoding > spento (inattivo)
  • Options
    Pause before retry (milliseconds):  500
       Start Attack


posizione del Payload
password trovata

Burp e' decisamente piu' lento di Hydra nel tentare passwords, e neanche necessario per questo tutorial (una semplice estensione (add-on) sarebbe bastata), tuttavia, prendiamo l'occasione di introdurre l'idea che  programmi possono avere molti usi diversi e possono essere usati fra di loro.
L'output di un programma diventa input per un altro programma.

Simile  programma, ma Open source OWASP Zed Attack Proxy (ZAP)
https://it.wikipedia.org/wiki/Open_Web_Application_Security_Project

Ulteriore materiale su HTTP protocolli, le richieste GET e POST, i codici delle pagine. 
https://it.wikipedia.org/wiki/Hypertext_Transfer_Protocol
https://it.wikipedia.org/wiki/Codici_di_stato_HTTP
https://it.wikipedia.org/wiki/Suite_di_protocolli_Internet