Dopo aver affrontato in un precedente articolo i principali problemi di sicurezza presenti nelle moderne applicazioni web, analizziamo ora brevemente i software che un esperto di sicurezza ha a disposizione per individuare, in modo semi-automatico, le vulnerabilità presenti in un'applicazione web.
La parola auditing identifica il processo attraverso il quale si verifica che certi requisiti e standard all'interno del software siano stati raggiunti, identificando eventualmente le aree che necessitano di modifiche e miglioramenti.
Il tema dell'individuazione di falle di sicurezza è attuale oltre che estremamente interessante per i risvolti economici di tale attività: determinare e correggere gli errori software prima che l'applicazione sia effettivamente in produzione, permette di evitare ulteriori costi, ritardi sullo sviluppo e disagi per gli utenti.
Il problema della ricerca di vulnerabilità nelle applicazioni web trova prevalentemente soluzione in ambito commerciale, anche se esistono tool open source e progetti di ricerca in ambito universitario.
È importare sottolineare come questi strumenti software sono solamente un tentativo di soluzione di un problema complesso e con forte mutabilità: molte di queste applicazioni lavorano in maniera automatica cercando casi noti di vulnerabilità, mettendo quindi in campo una vasta base di conoscenza piuttosto che un vero e proprio riconoscimento automatico.
Il limite intrinseco di questi strumenti deriva anche dall'approccio utilizzato che, nella maggioranza dei casi, è di tipo online sfruttando la connessione al server, inviando particolari richieste crafted e interpretando le risposte.
Oltre a distinguere gli strumenti tra online-offline, gli esperti utilizzano spesso una categorizzazione basata sull'interazione umana necessaria allo svolgimento dell'attività: parliamo quindi di strumenti automatici, semi-automatici o manuali. Come in tutte le attività che richiedono una forte componente d'intuito, intelligenza ed astuzia, l'uomo supera brillantemente la macchina: l'auditing svolto da personale competente è un'attività insostituibile se si vuole garantire la sicurezza dei propri applicativi.
L'importanza di analizzare manualmente le applicazioni è riassunta in un motto che incita a ricercare nella propria testa i migliori strumenti per svolgere un auditing: "I've always said, your best pentest tool is in your head" ("Come ho sempre ripetuto: il miglior strumento di penetration test è nella tua testa", Jeff Williams, esperto di sicurezza).
Strumenti come quelli presentati di seguito possono però affiancare l'esperto nello svolgimento dell'auditing, oltre ad assistere gli sviluppatori nelle fasi iniziali del progetto al fine di determinare gli errori più banali.
Per correttezza nei confronti del lettore è importante sottolineare come gli strumenti elencati non sono gli unici a disposizioni degli sviluppatori e degli esperti di security ma solamente un campione esemplificativo dei diversi approcci al problema; inoltre, come intravisto all'interno della OWASP Top Ten, i problemi delle applicazioni non sono legati solamente al codice applicativo ma possono derivare da problemi dell'installazione e configurazione dei sistemi che eseguono l'applicazione stessa: alcuni di questi software analizzano dettagliatamente anche questi aspetti.
WebInspect
Sistema operativo: Windows
Tipologia prodotto: commerciale
Azienda: SPI Dynamics
Tool molto potente, controlla circa 1500 vulnerabilità note su web server e sulle applicazioni; permette anche la ricerca di casi triviali di vulnerabilità durante il passaggio di parametri, path manipulation, command execution, password guessing, SQL injection, ecc. Supporto completo per JavaScript, Macromedia Flash e Ajax.
Dispone inoltre di una serie di strumenti utili per interagire manualmente con l'applicazione (Cookie Cruncher, HTTP editor, Encoder e Decoder per differenti standard, SQL Injector per estrarre dati da eventuali punti in cui risulti possibile compiere SQL Injection).
N-Stealth Security Scanner
Sistema operativo: Windows
Tipologia prodotto: commerciale
Azienda: N-Stalker
Prodotto principalmente destinato all'analisi dei web server; dichiara di effettuare ricerche contro oltre 30000 casistiche di problemi su HTTP e HTTPS, oltre a permettere la scrittura di firme di vulnerabilità "personalizzate".
Attraverso un motore di aggiornamento compatibile con la notazione CVE (Common Vulnerabilities and Exposures) è possibile mantenersi al passo con le vulnerabilità scoperte. Permette inoltre dei security test veloci che vanno a verificare il web server secondo le vulnerabilità presenti nella nota Top20 SANS/FBI.
AppScan
Sistema operativo: Windows
Tipologia prodotto: commerciale
Azienda: Watchfire
Ricerca comuni vulnerabilità che affliggono i web server ed a livello applicativo simula situazioni di attacco alla ricerca di falle di sicurezza. Permette l'analisi delle dieci vulnerabilità critiche individuate da OWASP oltre a numerose altre; interessante il supporto legato alle nuove tecnologie del web (XML/SOAP Test, XPath Injection) e la buona capacità di riconoscimento di XSS (Cross site scripting).
Un eccellente report oltre ad una buona velocità nel caso di piccole applicazioni rendono questo prodotto abbastanza interessante.
Figura 1: l'intrefaccia di AppScan
(clic per l'ingrandimento)
Web Vulnerability Scanner
Sistema operativo: Windows
Tipologia prodotto: commerciale
Azienda: Acunetix
Web Vulnerability Scanner si presenta con un'interfaccia grafica estremamente intuitiva, la migliore tra i prodotti presentati. La capacità di riconoscimento dichiarata dal produttore spazia dal Cross-Site Scripting, SQL Injection, Code execution, File Inclusion all'interessante "Google hacking", che sicuramente affronteremo in uno dei prossimi articoli. Con questo termine si vuole identificare una tecnica tramite la quale eventuali aggressori possono trarre informazioni critiche utilizzando semplicemente un motore di ricerca. Questo prodotto indicizza i contenuti dell'applicazione analizzata tramite un crawler e poi esegue le query classiche utilizzate dagli aggressori. Interessante anche la funzione HTTP Fuzzer con cui è possibile creare delle regole personalizzate che generino degli attacchi dinamici.
Un semplice esempio è quello di una richiesta HTTP con parametri in GET simile alla seguente http://www.sito.com?item=1; in questo caso è possibile definire il parametro item come una variabile che varia da 1 a 100, generando in maniera automatica una serie di richieste e valutando in maniera "fuzzy" le pagine di risposta.
Figura 2: l'intrefaccia di Web Vulnerability Scanner
(clic per l'ingrandimento)
Nikto
Sistema operativo: Windows, Linux, Unix
Tipologia prodotto: GPL
Sviluppatori: CIRT.net
Ricerca errori di configurazione, file e script noti, software obsoleto su HTTP e HTTPS a livello di web server. È completamente aggiornabile via Internet e dispone di un buon database costantemente aggiornato.
Sebbene non analizzi direttamente l'applicazione è considerato uno degli strumenti Open Source migliori con cui iniziare la verifica di software online; ovviamente dopo aver verificato il server è necessario approfondire l'applicazione con altri strumenti.
Burp Suite
Sistema operativo: Windows, Linux, Unix
Tipologia prodotto: Freeware
Sviluppatori: Portswigger.net
Una suite completa di strumenti per testare il livello di sicurezza delle applicazioni web. È interamente sviluppata in Java e non necessita di nessuna installazione. Per chi si occupa professionalmente di sicurezza informatica rappresenta uno strumento ideale per eseguire dei test sulle applicazioni; il suo utilizzo implica però una buona conoscenza sull'argomento oltre che una buona capacità pratica.
La suite è composta da quattro componenti (proxy, spider, repeater e intruder) che interagiscono tra loro e permettono di manipolare le richieste HTTP.
Burp proxy permette di intercettare le richieste HTTP/HTTPS che dal browser vengono inviate verso il server; in questo modo è possibile ispezionare e modificare tutti i parametri.
Nella figura successiva si vede come la richiesta verso sicurezza.html.it, effettuata tramite il browser, è intercettata dal proxy locale che mostra in maniera dettagliata i parametri della request. A questo punto si potrebbe editare direttamente qualche parametro oppure inviare la richiesta agli altri strumenti della suite.
Burp spider
Burp repeater
Burp intruder
Terminiamo questo appuntamento invitando il lettore a provare di persona tutti gli strumenti presentati, per scoprire quale si adatta meglio al contesto applicativo in analisi. Le versioni demo o limitate nel tempo