SQL Injection è la principale tecnica sfruttata per colpire una applicazione web basata su un database di tipo SQL, potrebbe consentire ad un malintenzionato di manipolare in maniera opportuna i dati sui quali opera un sito Internet o un'applicazione riuscendo talvolta ad accedere ai dati sensibili. Un'analisi preventiva con software adeguati, potrebbe scongiurare pericolosi attacchi dall'esterno.
L'exploit si basa su una scrittura "imprecisa" del codice da parte dello sviluppatore, sono soggette ad attacchi di tipo SQL Injection le principali applicazioni web non correttamente verificate da parte dello sviluppatore. In questo articolo non ci soffermeremo sulle basi della tecnica ma andremo ad analizzare i
principali software Open Source in grado di individuare una falla di SQL Injection.
SQLMap
SQLMap è un software in grado di automatizzare il processo di individuazione e di sfruttamento delle falle di SQL Injection, sviluppato in Python e Open Source inoltre ha la peculiarità di essere multi piattaforma, richiede l'interprete Python per la corretta esecuzione. Supporta i principali server SQL tra i quali MySQL, Oracle, PostgreSQL, Microsoft SQL
Server, Microsoft Access, SQLite, Firebird, Sybase e SAP MaxDB.
SQLMap offre risorse veramente infinite e il suo uso è alquanto sofisticato, in questo articolo ci concentreremo sui comandi basi, lasciando a voi la facoltà di approfondire l'utilizzo attraverso il manuale molto completo disponibile sul sito ufficiale. Un primo approccio al software può essere ottenuto digitando il comando "python sqlmap.py -h" da riga di comando nel proprio sistema operativo, questo comando restituisce l'help di SQLMap contenente tutte le opzioni disponibili per l'uso del programma.
Per iniziare ad analizzare un applicativo web è possibile digitare da riga di comando la
seguente istruzione, specificando dopo l'opzione "-u" la risorsa che vogliamo analizzare:
python sqlmap.py -u http://www.applicativoweb.com/mysql/risorsa.php?id=1
Attraverso i cinque livelli di output è possibile visualizzare lo stato dell'analisi, basterà indicare
attraverso il comando verbosity il livello preferito (es. -v 1):
python sqlmap.py -u http://www.applicativoweb.com/mysql/risorsa.php?id=1 -v 1
È inoltre possibile analizzare un intero sito internet andando alla ricerca di tutte le possibili vulnerabilità, questa funzione è possibile grazie all'integrazione con il motore di ricerca Google attraverso il seguente comando:
python sqlmap.py -g "site:applicativoweb.com ext:php"
SQLMap procederà ad analizzare i primi 100 risultati riportati da Google relativi al dominio specificato, alla ricerca di risultati contenenti richieste di tipo GET, per poter procedere alla verifica di possibili vulnerabilità. Infine è possibile personalizzare il livello di test attraverso l'opzione "--level=X" dove specificheremo 1 per un test rapido fino al valore 5 per un test più accurato.
Sqlninja
Sqlninja è un software nato in Italia grazie all'idea di Alberto Revelli in grado di sferrare attacchi di tipo SQL Injection a sistemi basati su Microsoft SQL Server. Il tool permette di effettuare un attacco forza bruta per determinare la password di amministratore di sistema, un escalation per aggiungere un utente con i medesimi privilegi dell'amministratore, un fingerprint del server, un port scanning per determinare eventuali porte di sistema aperte e un tunneling attraverso la porta DNS oppure ICMP quando tutte le porte TCP/UDP sono chiuse ma il server risolve i nomi di host esterni.
Per iniziare ad utilizzare l'utility è necessario ottenere l'esatto HTTP Request dell'applicativo web che vogliamo analizzare, per ottenerlo possiamo utilizzare un semplice Proxy come Burp Suite o Owasp Zed Attack Proxy. Http Request dovrà essere riportato integralmente nel file di configurazione di sqlninja denominato sqlninja.conf senza dimenticarsi i marcatori "--httprequest_start--" e "--httprequest_end--" prima e dopo la nostra stringa.
Inizieremo ad effettuare un primo test della configurazione precedentemente impostata digitando il comando:
sqlninja -mode test
Se l'esito è positivo possiamo procedere ad effettuare un attacco tra le varie modalità proposte (fingerprint bruteforce, escalation, ecc ecc) oppure dovremo verificare il contenuto del file di configurazione.
Havij
Havij è uno dei principali software dotati di una veste grafica (GUI) compatibile con i sistemi
operativi Windows e distribuita nella licenza gratuita o commerciale, nella prima vengono
imposte alcune limitazioni come l'impossibilità di effettuare un Blind MsSQL oppure l'impossibilità di verificare un database Oracle e tante altre piccole restrizioni.
L'utilizzo di questo software è alla portata di tutti grazie al confortevole supporto grafico basterà infatti digitare nel campo "target" il sito Internet dell'applicativo web da verificare selezionare se le richieste dovranno essere inviate con il metodo GET o POST e avviare l'analisi semplicemente cliccando sul pulsante "Analyze"; nel riquadro Status avremo a disposizione tutte le informazioni sull'avanzamento della procedura di attacco.
W3AF
W3AF è un ottimo web scanner Open Source in grado di individuale diverse vulnerabilità in un applicazione web, tra queste vi è anche l'individuazione di falle di tipo SQL Injection. W3af è software scritto in python e compatibile sia per sistemi Linux, Window e Mac e gode di un'ottima interfaccia grafica ma per i più nostalgici è possibile usarlo anche da riga di comando.
All'interno de software vi sono diverse categorie le quali rendono più comprensibile la distinzione delle vulnerabilità, nel nostro caso dovremo selezionare l'opzione SQLi all'interno della categoria "Audit" una volta impostato il sito target sarà possibile avviare la scansione. Per chi preferisce effettuare una scansione da riga di comando potrà richiamare w3af digitando il comando "w3af_console".
SQLiX
SQLiX è un software sviluppato dalla OWASP scritto in Perl dedicato alla ricerca dei vettori per sferrare un attacco di tipo SQL Injection. La facilità di utilizzo di questa utility è veramente estrema basterà infatti digitare dalla shell il seguente comando per iniziare ad effettuare un test sull'applicativo web prescelto:
perl SQLiX.pl -url http://www.applicativoweb.com/mysql/risorsa.php?id=1
SQLix permette anche di personalizzare la scansione selezionando quale metodo di iniezione
preferiamo attraverso il comando -method, per qualsiasi altro dubbio basterà lanciare il
comando -help per visualizzare a monitor tutte le istruzioni e loro specifiche.