In questa lezione vedremi quali strumenti mette a disposizione Kali Linux per effettuare il penetration test di applicazioni web. Alcuni ci permetteranno di eseguire la fase di reconnaissance, dove saremo interessati a conoscere le caratteristiche del sistema da attaccare (es. quale web server è in esecuzione, albero delle directory, lista delle url, e così via). Vedremo poi alcuni interessanti scanner, capaci di rilevare la presenza di vulnerabilità tipiche (es. SQL injection, password deboli, e così via), per finire con qualche strumento per effettuare exploit contro le web application (es. XSS, SQL injection, attacco a forza bruta delle credenziali).
Strumenti di reconnaissance
Rientrano in questa categoria tutti quegli strumenti capaci di mappare l’applicazione web da attaccare, ricostruendone l’intero albero delle directory, dei contenuti in esse memorizzate, e le caratteristiche del software in esecuzione.
Dirbuster
Uno strumento capace di ricostruire l’albero delle directory e dei file (inclusi quelli nascosti) di una applicazione web tramite attacchi a dizionario e/o a forza bruta delle URL.
La documentazione (corredata da tutorial) è disponibile sulla pagina ufficiale del progetto OWASP.
Whatweb
Questo strumento consente di identificare la tecnologia software che fa parte del backend di un sito web, inclusi CMS, librerie Javascript, web server, e dispositivi embedded collegati. A tal proposito, WhatWeb potrà fare affidamento su oltre 1700 plugins di riconoscimento. Tra le possibilità offerte da whatweb, segnaliamo:
- controllo del grado di aggressività con cui carpire le informazioni;
- supporto ai proxy TOR;
- autenticazione HTTPS;
- capacità di seguire con ricorsione i percorsi nei link contenuti alle pagine web;
- capacità di analizzare diverse URL contemporaneamente in multithreading.
L’utilizzo è molto semplice, come mostra la sintassi seguente:
whatweb [opzioni] <URLs | IPs>
Tra le opzioni disponibili, le più importanti sono:
-a
: indica il livello di aggressività, che può variare tra 1, che è il meno aggressivo (default), a 4, che è il più aggressivo;-u <user:password>
: esegue autenticazione HTTPS di base;--no-errors
: sopprime i messaggi di errore;-v
: fornisce informazioni più dettagliate sull’output.
Strumenti di vulnerability scanning
In questa categoria confluiscono strumenti capaci di riconoscere vulnerabilità negli
applicativi web, ma incapaci di effettuare attacchi attivi.
Joomscan e WPscan
Joomscan e WPScan consentono di individuare vulnerabilità nei CMS più comuni, quali WordPress e Joomla, che costituiscono una grossa fetta dei siti in giro per il web. Chiaramente, assumeremo di essere in possesso dell’informazione relativa al CMS che gira su un determinato sito web. Per ottenere tale tipo di informazione, possiamo comunque ricorrere all'utilizzo del già citato WhatWeb.
Una volta noto il CMS in esecuzione, supponiamo Joomla, passiamo ad eseguire Joomscan come segue:
joomscan [opzioni]
Joomscan supporta le seguenti opzioni:
-u
: specifica il sito da scansionare;-a <user-agent<
: utilizza un determinato user-agent;-h
: mostra l'help;--timeout <timeout>
: imposta il timeout per l’acquisizione delle informazioni.
Dopo aver digitato il comando per effettuare la scansione, in risposta dovremmo ottenere qualcosa di simile (nell'esempio, il sito scansionato non è vulnerabile):
In modo del tutto simile, nel caso in cui il sito web da analizzare stia eseguendo WordPress, potremo utiilzzare wpscan con la seguente sintassi:
wpscan [opzioni]
Tra le opzioni più importanti avremo:
-u
: l’url da scansionare;-U <username>
: prova ad effettuare la bruteforce su un determinato utente;-w <file>
: fornisce una lista di parole con cui effettuare un attacco a dizionario;-a <user-agent>
: utilizza un determinato user agent;-e <opzioni>
: tenta la enumerazioni degli utenti, dei plugins installati e dei temi.
Grabber
Grabber è uno strumento particolarmente avanzato che consente di rilevare vulnerabilità in un sito web. Particolarmente adatto alla scansione di piccoli siti web, è anche portabile tra diverse piattaforme OS.
L’utilizzo è semplicissimo:
grabber [opzioni]
Tra le opzioni disponibili segnalo la possibilità di effettuare cross-site scripting, SQL injection, analisi di PHP e Javascript.
Un esempio di utilizzo, dove cercheremo di effettuare una SQL injection o un attacco XSS ad un dato indirizzo, può essere avviato come segue:
grabber --spider 1 --sql --xss –url <URL>
Strumenti di exploitation
Concludiamo la lezione, osservando da vicino alcuni strumenti di web exploitation.
XSSer
Lo strumento “Cross Site Scripter” (XSSer) è capace di rilevare ed effettuare exploit sulle vulnerabilità XSS rilevate all’interno di applicativi web.
Per lanciare l’interfaccia grafica, digitiamo dalla console:
xsser –gtk
L’interfaccia grafica avrà il seguente aspetto:
La barra di testo dove potremo selezionare la modalità di attacco, cioè intruder o explorer, darà anche la possibilità di inserire l’indirizzo web su cui verificare le vulnerabilità XSS. Tra le varie opzioni sarà anche possibile trincerarsi dietro un proxy TOR per la generazione degli attacchi di injection XSS.
ZAProxy
Uno strumento piuttosto complesso che fa parte del progetto OWASP, utile a rilevare e sfruttare vulnerabilità nelle applicazioni web.
Il target di tale strumento sono gli specialisti nel settore della sicurezza informatica e/o sviluppatori/tester di applicazioni sicure.
Tra le funzionalità principali fornite da ZAP abbiamo:
- configurazione proxy;
- AJAX spider;
- modalità “esplorativa”;
- fuzzer;
- supporto alle web socket;
- supporto all’autenticazione e ad alle sessioni HTTPS;
- possibilità di utilizzo di API REST.
Webslayer
Concludiamo questa breve panoramica sugli strumenti per la generazione di attacchi contro le applicazioni web con WebSlayer. Anch'esso parte del progetto OWASP, consentirà di scovare risorse non direttamente accessibili, quali directory, servlet, script, file, i parametri di GET e POST, così come lo username e la password per i moduli di login.
Lanciamo l’interfaccia da riga di comando e digitiamo:
webslayer
Otterremo in risposta l'interfaccia grafica, che si mostra come segue:
Tra le innumerevoli possibilità offerte, segnaliamo le seguenti:
- utilizzo di ricorsione nelle URL per determinare la mappa completa dell’applicazione;
- attacchi a forza bruta dei moduli di login;
- attacchi a forza bruta sui parametri delle GET e POST;
- SQL ed XSS injection;
- bilanciamento del carico tramite proxy multipli;
- strumenti di page inspection inegrati (webkit);
- attacchi a dizionario.