SQL Injection con SQLMap di cosa stiamo parlando?
Bene, per chi non lo sapesse la SQL Injection è una tecnica di pentesting ed attività di hacking che mira a colpire siti e applicazioni web che dialogano con database relazionali SQL, sfruttando le vulnerabilità dei controlli sui parametri in input ed inserendo codice malevolo all’interno delle query SQL (richieste di azione) effettuate sul database.
La particolarità di tale attacco è quello di poter accedere direttamente dal database di un sito Web, il quale contiene tutte quelle informazioni necessarie ad accedere ad un eventuale pannello di amministrazione o che già di per se contiene tutti i dati di cui abbiamo bisogno.
Sommario
SQL Injection con SQLMap: installazione
Il primo passo da fare, ovviamente, è quello di installare il tool in questione. Per comodità, il mio consiglio è quello di scaricarvi una distro Linux da emulare con vMware Player. Così facendo, non dovrete impazzire a realizzare una nuova partizione sul vostro computer o un’eventuale versione USB.
SQLMap è disponibile anche per Windows, ma gli strumenti di pentesting, spesso e volentieri, mal funzionano con tale sistema operativo.
Per velocizzare le cose, in definitiva, il mio consiglio è quello di scaricarvi la versione per vMware Player di Kali Linux, una distro studiata appositamente per eseguire centinaia di test di sicurezza informatica. Kali, infatti, integra già decine e decine di tools per attacchi e test informatici di ogni tipo. Potrete, oltre che con SQLMap, studiare e divertirvi con altri strumenti, in modo semplice e veloce, senza dover pensare a noiose installazioni e configurazioni.
Partiamo con SQLMap in Kali Linux
Dopo aver installato Kali, avviate la distro (nome utente e password di default per Kali sono: “root” e “toor”) ed aprite SQLMap, il quale si trova sotto la categoria “Database Assessment”.
Vi si aprirà il terminale con le istruzioni di utilizzo. Vediamo insieme quali sono i principali parametri da prendere in considerazione, prima di fare qualche esempio concreto.
- -u indica l’URL da colpire.
- -data sono i dati che SQLMap invia al database per provare ad autenticarsi.
- -v indica la verbosità, ossia quanto dovrà essere prolisso l’output (spazia da 0 a 6).
- -dbs se l’URL è vulnerabile, SQLMap elenca tutti i database presenti.
- -tables mostra l’elenco delle tabelle presente nel database di riferimento.
- -tor –tor-type=SOCKS5 permette di usare SQLMap mediante proxy TOR.
- -dump permette di leggere una copia dei dati contenuti nella tabella indicata.
Individuare il sito web vulnerabile
Questa è la parte più lunga e noiosa, ma indispensabile per raggiungere il nostro scopo.
Un sito è vulnerabile ad un attacco SQL Injection quando i parametri che vengono passati non sono correttamente verificati, permettono di interrogare il database in qualsiasi modo. Apriamo un browser e digitiamo nella barra di ricerca di Google:
inurl:”index.php?id=”
Questo è solo uno dei cosiddetti Google dorks disponibili, tramite una breve ricerca potrete trovarne a centinaia.
Fatto questo, la pagina di ricerca di Google vi fornirà svariate pagine con url simili al seguente: http://www.sitoweb.com/index.php?=1
Apriamo una delle pagine in questione. Una volta aperta, andiamo sulla barra degli indirizzi, aggiungiamo un apostrofo in fondo all’url della pagina http://www.sitoweb.com/index.php?id=1′, e premiamo Invio. Se il sito visualizza un errore relativo al database, allora fa al caso nostro.
Attacco SQL Injection con SQLMap
Come prima cosa, dobbiamo verificare se il sito in questione è vulnerabile. Per fare ciò, passiamo l’URL che riteniamo vulnerabile ad SQLMap ed aspettiamo che effettui tutti i test in modo automatico, in questo modo:
sqlmap -u http://www.sito.com/section.php?id=
nel momento in cui SQLMap trova delle vulnerabilità, queste saranno indicate. Nel caso in cui sia presente un sistema di protezione WAF, una dicitura rossa “CRITICAL” apparirà sullo schermo. Qui di seguito, lo screenshot nel caso in cui il sito analizzato sia vulnerabile.
Ammettiamo, nel nostro caso, di aver trovato un sito Web vulnerabile. Il prossimo passo fare è quello di elencare i database presenti. Per fare ciò, dobbiamo lanciare il seguente comando:
sqlmap -u “http://www.sitemap.com/section.php?id=51” –dbs
Come risultato, avremo qualcosa di simile allo screenshot qui sotto.
Adesso che abbiamo trovato i database presenti, dobbiamo elencare le tabelle di quello a cui siamo interessati.
Enumerare le tabelle del database con SQLMap
Dopo avere lanciato il comando precedente, ammettiamo di avere trovato un database chiamato “bricks“, per vedere le tabelle che contiene, scriviamo
sqlmap -u http://www.sitoweb.com/index.php?id=1 -o –dbms MySql -D bricks –tables
A questo punto, arriviamo alla parte più interessante di tutte, quella in cui leggiamo effettivamente i dati contenuti nella tabella che ci interessa.
Mettiamo caso di aver trovato la tabella “customers”, in cui sono contenuti tutti i clienti del sito Web che siamo riusciti a violare.
Per leggere i valori, dovremmo eseguire il dump in questo modo:
sqlmap -u http://www.sito.com/index.php?id=1 -o –dbms MySql -D NOME_DATABASE -T NOME_TABELLA–columns –dump
In questo modo ci vedremo stampati tutti i dati contenuti (motivo per cui le password devono essere memorizzate in modo cifrato all’interno di un database! Se qualcuno riuscisse mai ad ottenere l’accesso, così facendo, la chiave di accesso non sarebbe utilizzabile così com’è), un po’ come nello screenshot qui sotto riportato.
SQL Injection con SQLMap e TOR Proxy
Se volete utilizzare SQLMap garantendovi un anonimato completo, potete eseguire tutte le istruzioni utilizzando TOR Proxy. Ricordatevi che, in questo caso, la velocità dell’intero processo diminuirà drasticamente.
Il comando da lanciare è il seguente:
sqlmap –tor –tor-type=SOCKS5 -u “http://www.site.org/view_section.php?id=10”
Ovviamente, prima di fare ciò, è necessario lanciare TOR e verificare che il daemon sia attivo sulla porta 9050.
Se volessimo aumentare ancora di più il grado di anonimato, potremmo modificare anche l’user-agent con cui i test vengono effettuati. In questo caso, il parametro diventa:
sqlmap –tor –tor-type=SOCKS5 -u “http://www.site.org/view_section.php?id=10″ –user-agent=”Googlebot (compatible; Googlebot/2.1; +http://www.google.com/bot.html)”
Così facendo, tutte le operazioni eseguite passeranno come se fosse il Googlebot a compierle.
L’elenco completo dei comandi di SQLMap è immenso. Per avere un’idea completa di tutto ciò che è in grado di fare, vi rimando direttamente alla pagina GitHub ufficiale!
Conclusione
Sql Injection con Sqlmap è un tipo di attacco estremamente semplice quanto potente, che dà la possibilità ad utenti della rete malintenzionati di visualizzare e manipolare dati privati ed ottenere l’accesso ad aree riservate dei siti web.
Altri post che potrebbero interessarti: