
PenTest Sqlmap – Scovare vulnerabilità web application
Cari lettori di Tecnogalaxy, oggi vedremo come testare una web application cercando di scovare delle vulnerabilità chiamate in gergo tecnico sqlinjection.
Questo tipo di attacco viene fatto su web application che hanno un database ad esempio SQL, prendiamo come esempio il classico sito internet che ha la lista dei prodotti e una pagina di login.
Un database SQL ha delle tabelle contenenti righe e colonne, ad ogni riga corrisponde una voce nella tabella, i dati contenuti in ogni colonna possono rappresentare una gamma di informazioni.
Se prendiamo come esempio la tabella “Clienti” conterrà informazioni sulle persone che ad esempio faranno acquisti sul nostro negozio online.
Troveremo colonne come CustomerName dove verrà memorizzato il loro nome, la City dove verrà memorizzata la città in cui abitano, e così via, ogni riga è come se rappresentasse un cliente unico.
Per accedere alle informazioni e interagire con il database, viene utilizzato un linguaggio chiamato appunto in questo caso SQL. Per interrogare il nostro database utilizzeremo le query – Structured Query Language–
Abbastanza semplici da utilizzare con una sintassi simile all’inglese.
Possiamo eseguire una query sulla tabella Clienti per recuperare ad esempio i nomi dei clienti, la città, il numero di telefono etc…..semplicemente scrivendo quanto segue:
SELECT CustomerName, City FROM Clienti;
Potremmo ad esempio utilizzare * modificando la nostra query in modo da recuperare tutti i dettagli associati a ciascuna voce nella tabella Clienti.
SELECT * FROM Clienti;
Ovviamente è improbabile che venga sfruttata una vulnerabilità sul server SQL, sarà sicuramente più facile sfruttare una vulnerabilità legata a qualche errore o a qualche leggerezza da parte dello sviluppatore.
In molti casi le vulnerabilità sono legate al codice di programmazione, input dell’utente non controllato e sanificato mandando in errore la SQL.
Ad esempio nella pagina di login potremmo fare questo test inserendo nel campo UserID (admin) e nel campo Password (1′ or ‘1’=’1). Se l’input non viene “sanificato” bypasseremmo la pagina di login.
Fortunatamente possiamo utilizzare tolls che fanno tutti questi test in modo automatico, come ad esempio
SQLMap installato di default su Kali Linux, questo tool offre diverse opzioni a seconda del tipo di applicazione Web attaccata.E’ un tool a riga di comando che automatizza molte delle attività più laboriose, come ad esempio le UNION Query.
Passiamo al nostro test andando a vedere come usare questi concetti attaccando un database di un sito internet per recuperare le info per poter accedere alla pagina di login.
Scovare vulnerabiltià web application con Sqlmap
Iniziamo con l’Information Gathering (è la fase di raccolta delle informazioni che consente all’attaccante di acquisire dati utili in merito al sistema in esame).
Ovviamente avviamo il nostro caro amico Kali Linux andando a scansionare il nostro target tramite il tool Nmap con il seguente comando:
nmap -sT -F -Pn -T3 -A “ip da testare”
Abbiamo 2 servizi esposti, testiamo la porta 80, apriamo un browser e raggiungiamo la pagina.
Non avendo abbastanza informazioni per poter accedere all’application web, utilizziamo il famoso SQLmap
Per effettuare un semplice crawling all’interno delle pagine del sito, cercando se è presente qualche vulnerabilità. Eseguiamo il seguente comando:
sqlmap -u http://nostrosito/register.php --forms --crawl=2 --time-sec 30
Vediamo nel dettaglio i comandi utilizzati:
-u (Specifichiamo l’ URL di partenza)
–forms (Verifichiamo che siano presenti vulnerabilità su tutte le forms del sito)
–crawl (Impostiamo la profondità del nostro crawling)
–time-sec (Impostiamo un timeout)
Il tool nel caso trovasse delle vulnerabilità si fermerà e ci avvertirà!

Ok, vulnerabilità trovata il campo log_email è vulnerabile a SQLi. Possiamo procedere all’attacco vero e proprio andando a vedere la lista dei Database presenti nell’applicazione web testato usando il comando:
sqlmap -u http://nostrosito/register.php --forms --crawl=2 --time-sec 30 --dbs
Il comando se controllate è identico al precedente, l’unica cosa che andremo ad aggiungere sarà –dbs per listare tutti i database.
Adesso che abbiamo recuperato la lista dei database, andiamo ad esaminare ad esempio il database mysql estraendo tutte le tabelle contenute.
Scriviamo il seguente comando:
sqlmap -u http://nostrosito/register.php --forms --crawl=2 --time-sec 30 --tables -D mysql
–tables (comando per estrapolare tutte le tabelle dal database)
-D (nome del database da testare)
Andiamo a vedere il contenuto della tabella user in cerca degli utenti e delle password per poter accedere all’application web, scrivendo il seguente comando:
sqlmap -u http://nostrosito/register.php --forms --crawl=2 --time-sec 30 --dump -D mysql -T users
Traguardo ottenuto, abbiamo gli hash di tutti gli utenti dell’application we.
Ovviamente le password non sono in chiaro (anche se ancora molti siti le registrano in chiaro), a questo punto non ci rimane che cracckarne uno per poter accedere all’account di quell’utente. Prendiamo ad esempio questo hash:
f1267830a78c0b59acc06b05694b2e28
Dobbiamo però capire di cosa si tratta, utilizziamo il tool hash-identifier per analizzare l’hash.
Ok è un hash MD5.
Segniamoci l’hash all’interno di un file txt (hash.txt) e utilizziamo il tool hashcat per cracckarlo scrivendo il seguente comando:
hashcat -m 0 hash.txt ../tools/wordlists/rockyou.txt --force
Andiamo ad impostare il tipo di hash con il flag “-m”. Nel nostro caso MD5 equivale a 0. Potete trovare tutti i tipi di hash nella pagina di help di Hashcat. Successivamente andiamo a selezionare il dictionary con cui effettuare il bruteforce (Utilizzate sempre rockyou.txt e non sbaglierete mai). Potete andavi a prendere un caffè ora….
-m (tipo di hash nel nostro caso MD5 equivale a 0)
rockyou.txt (il dizionario che utilizzeremo per cercare di craccare la password)
Ovviamente non è detto che sia sempre così facile, potrebbero esserci delle applicazioni che controllano le richieste fatte alla web application.
SQLMap di default non utilizza tecniche di offuscamento del payload inviato, questa fase comporta l’essere facilmente individuati da tutti quei tools che monitorano le richieste fatte al web server, mi riferisco ai web application firewall (WAF) o IPS. Fortunatamente in alcuni casi possiamo aggirare il problema utilizzando alcune tecniche implementate in SQLMap tramite l’utilizzo di alcuni scripts.
Per prima cosa dobbiamo determinare se il server Web è protetto da WAF / IPS / IDS
Utilizziamo il seguente comando:
sudo sqlmap -u "http://sitodatestare.com/contents.php?id=51&types=4" --thread 10 --identify-waf
Poi il comando:
sudo sqlmap -u "http://sitodatestare.com/contents.php?id=51&types=4" --thread 10 --check-waf
Un’altra cosa importante durante un Penetration Testing e quello di non fare rumore (come si dice in gergo tecnico) e non lasciare tracce.
E’ possibile grazie all’utilizzo di proxy facilmente configurabili tramite l’opzione “–proxy”, “–proxy-cred” e “–tor”.
Eseguiamo il comando:
sudo sqlmap -u "http://sitodatestare.com/listproducts.php?cat=1" -o --threads 10 --dbms Mysql -D acuart -T users --dump --start 1 --stop 5 --tor
Come sempre fatene buon uso facendo dei test su vostri device / computer , farli su device/computer non vostri è illegale.
Al prossimo articolo 😊
N.B.: Non mi assumo nessuna responsabilità dell’uso che farete della guida, in quanto stilata per uso didattico e formativo.
Giorgio Perego
IT Manager
Leggi anche:
- Top 10 annunci avvenuti durante il WWDC
- Le 4 migliori app mobili per scommesse: caratteristiche, costi e utilizzo su iOS e Android
- Come riparare file video corrotti
- Come risparmiare sulla partita iva nel 2023
- ChatGPT potrebbe diventare senziente?
Ti è stato di aiuto questo articolo? Aiuta questo sito a mantenere le varie spese con una donazione a piacere cliccando su questo link. Grazie!
Seguici anche su Telegram cliccando su questo link per rimanere sempre aggiornato sugli ultimi articoli e le novità riguardanti il sito.
Se vuoi fare domande o parlare di tecnologia puoi entrare nel nostro gruppo Telegram cliccando su questo link.
© Tecnogalaxy.it - Vietato riprodurre il contenuto di questo articolo.
I PIÙ LETTI
ARTICOLI RECENTI