In questa lezione vedremo Vega, uno strumento per verificare l'esistenza di vulnerabilità in applicativi web, già preinstallato nelle versioni più recenti di Kali Linux. È bene sottolineare che esistono altri framework con caratteristiche analoghe, e già coperti in altre guide su HTML.it. Tra questi menzioniamo la suite Burp e nikto.
La scelta di Vega è dovuta al fatto che si tratta di uno strumento open source relativamente nuovo, pensato per la verifica della sicurezza delle applicazioni web. La documentazione ufficiale, molto esaustiva, è disponibile sul sito ufficiale. Inoltre, il codice sorgente del progetto è reperibile su GitHub.
Funzionalità offerte
Vega è munito di una comoda interfaccia grafica scritta in Java, e compatibile con i sistemi operativi Windows, OSX e Linux. Offre inoltre la possibilità di implementare i propri moduli di attacco in Javascript.
Le funzionalità offerte dall’installazione base si suddividono in due categorie, dipendenti dalla modalità operativa di Vega. Le funzionalità offerte in modalità scanner sono le seguenti:
- Crawling dei siti web
- Estrazione automatica dei link
- Riconoscimento automatico moduli di login
- Cross site scripting (XSS)
- SQL injection
- Fuzzing dei parametri di
GET
ePOST
- Capacità di analizzare l’output dell’applicativo web con ricerche di tipo “grep”
Oltre alle predette funzioni, quando Vega viene eseguito in modalità intercepting proxy, diventa uno strumento capace di analizzare le interazioni tra il browser e l’applicazione web. In particolare Vega istanzia un proxy server sulla nostra macchina che ispeziona le interazioni tra browser e applicativo web. La funzionalità veramente interessante è la capacità di Vega di intercettare particolari richieste/risposte e inserire dei breakpoint che diano modo al penetration tester di effettuare con accuratezza l’analisi dei messaggi scambiati tra client e server, ed eventualmente modificarli per effettuarne il replay.
Interfaccia grafica
Passiamo subito a dare uno sguardo alle capacità di Vega. Eseguiamo dalla shell il seguente comando:
vega
L'interfaccia si presenterà con il seguente layout grafico:
Qualora dovessimo avere la necessità di rendere l’analisi delle vulnerabilità anonima, potremo ricorrere all’utilizzo di un proxy Tor.
Per fare ciò, clicchiamo su Window -> Preferences -> General. A questo punto, selezioniamo la casella Enable SOCKS proxy, all’indirizzo 127.0.0.1:9050, come mostrato in figura:
Eseguire una scansione
Dall’interfaccia principale, cliccando su Scan”, dovrebbe aprirsi quindi un wizard che ci darà la possibilità di inserire la URI del sito web da analizzare:
A questo punto clicchiamo su Next, e selezioniamo i moduli di attacco che intendiamo testare verso l’applicazione web:
Clicchiamo infine su Finish. A questo punto Vega farà partire i suoi attacchi. Quando siamo soddisfatti, terminiamo l’analisi o aspettiamo che Vega lo faccia per noi.
Analisi degli alert
Dopo un po’ di tempo dal momento in cui Vega avrà iniziato ad attaccare l’applicazione web, saranno visualizzati alcuni alert (corrispondenti ad attacchi andati a buon fine), nella porzione in basso a sinistra dell’interfaccia.
Cliccando sulla sezione degli alert in stato Completed, potremo osservare un albero di alert, ciascuno riportante la severità della vulnerabilità rilevata e le caratteristiche di quest’ultima (incluso il path remoto della vulnerabilità). Tra le funzionalità offerte da Vega, per effettuare le attività di post-analysis avremo anche la possibilità di osservare in formato Raw le richieste e le risposte inviate da e verso l’applicativo web.
Vega proxy
Come accennato, tra le funzionalità offerte da Vega esiste la possibilità di farlo agire da intercepting proxy, ponendosi di fatto tra il browser e l’applicazione web di cui intendiamo testare la sicurezza. In particolare, il proxy intercetterà tutte le richieste che partono dal browser verso il web server, così come le risposte generate da quest’ultimo.
Nel caso in cui dovessimo connetterci in HTTPS, Vega darà la possibilità di generare un certificato da importare nel nostro user-agent.
Dovremo infine configurare il nostro browser per l’utilizzo del proxy. Per fare ciò, dovremo riferirci alla documentazione del browser che stiamo adoperando. Nel caso di Firefox, ci riferiremo all'apposita pagina della documentazione ufficiale, che spiegherà passo passo la configurazione di Firefox all’utilizzo di Vega in modalità proxy.
Dopo aver configurato il browser, procediamo alla configurazione di Vega. Clicchiamo su:
Window -> Preferences -> Proxy.
Avremo quindi la possibilità di impostare:
- proxy port: la porta verso cui il browser dovrà connettersi
- override user-agent: indica se il proxy deve "mascherare" il browser di origine inviando stringhe casuali per altri user-agent
- default user-agent: indica lo user agent di origine che intendiamo utilizzare per far partire le richieste verso l'applicazione web
Avviamo quindi il proxy cliccando sull’iconcina verde in alto a sinistra:
Selezioniamo quindi la scheda Proxy dall’interfaccia di Vega:
Saremo quindi pronti ad analizzare ed effettuare il replay (con modifiche) per ogni richiesta effettuata da e verso il nostro sito web.
Preparare un laboratorio per gli attacchi
Concludiamo la nostra lezione con un breve suggerimento su come preparare il laboratorio per testare le funzionalità di Vega.
A tal proposito, esiste bWAPP, una applicazione web intenzionalmente buggata con più di 100 vulnerabilità, che permette di sperimentare tutte le funzionalità di Vega e diventare esperti nel suo utilizzo. È sufficiente scaricare la macchina virtuale fornita a questo indirizzo, ed eseguirla su Virtualbox.
La macchina è fornita in ambiente LAMP, e sarà immediatamente pronta all'uso, senza richiedere alcuna installazione. Per effettuare il login all'interno dell'applicazione web, dovremo utilizzare le credenziali seguenti:
user: bee
password: bug
Configuriamo quindi la macchina, selezionando i bug che ci interessa testare:
Figura 49. Selezione dei bug per bWAPP (fonte: Training bWAPP)
(click per ingrandire)
A questo punto non resta che connetterci tramite Vega (in rete locale), facendolo puntare all’indirizzo della macchina “buggata”, che avrà il seguente formato:
http://[IP]/bWAPP/aim.php
Da questo momento in poi potremo cominciare a sperimentare e scovare tutte le vulnerabilità di bWAPP.