SQLMap: tecnica di verifica vulnerabilità su DB

Indice

Alcuni degli attacchi più frequenti si basano sulla SQL Injection, ossia sulla possibilità di inoculare codice o comandi SQL all’interno di un sistema. Ma come si arriva a fare qualcosa del genere?

Senza scendere troppo nel dettaglio oggi parliamo di SQLMap, uno strumento software che ha la capacità di “testare” se un determinato database ha falle di sicurezza e, in caso, valutare la resistenza dello stesso ad attacchi dizionario.

SqlMap è reperibile sia all’interno del sito ufficiale http://sqlmap.org che già preconfezionato dentro molto toolkit di security assessment.  La cosa estremamente importante da capire è che un database aggiornato, ben costruito e correttamente protetto sarà resistente agli attacchi.  

I database supportati da SQLMap sono

  • MySQL,
  • Oracle,
  • PostgreSQL,
  • Microsoft SQL Server,
  • Microsoft Access,
  • IBM DB2,
  • SQLite,
  • Firebird,
  • Sybase,
  • SAP MaxDB,
  • HSQLDB,
  • Informix.

E tra le modalità di test/attacco vi sono boolean-based blind, time-based blind, error-based, UNION query-based, stacked queries and out-of-band. 

Tra queste in particolare andiamo ad analizzare la boolean-based blind. I campo booleani servono a contenere la scelta di due valori che generalmente sono vero/falso. L’attacco è blind (cieco) poiché a video non viene mostrato nulla circa gli errori. La documentazione ufficiale spiega. 

sqlmap replaces or appends to the affected parameter in the HTTP request, a syntatically valid SQL statement string containing a SELECT sub-statement, or any other SQL statement whose the user want to retrieve the output.

In parole estremamente povere, invece che inviare un comando contenente “vero” o “falso”, l’attaccante inserisce un comando intero che il database non può esimersi dall’analizzare. Un esempio tipico lo trovate qui.

Il corretto impiego del database, il suo costante aggiornamento e le operazioni di manutenzione e protezione ordinarie sono sufficienti ad evitare attacchi di questo tipo. Anche per questo tale strumento viene spesso considerato come un principio di pentest (penetration test) e non come un vettore di attacco definitivo. 

Gli attacchi SQLMap sono in grado di rilevare i dati contenuti in un db ma rilevano soprattutto la vecchiaia è l’inadeguatezza della struttura che ospita il DB. Spesso questo strumento viene considerato dai puristi dell’hacking o ethical hacking una “scorciatoia” al normale processo di attacco e restituisce un risultato di poca importanza se paragonato alle altre tipologie di attacco.

A parer di chi scrive, invece, questo strumento possiede una consistente importanza dal punto di vista delle verifiche di sicurezza e denota un punto di partenza a cui tutti gli operatori dei DB dovrebbero attenersi. È di fatto inutile “prendere a cannonate una porta” quando posso aprirla con la forcina. Significa che la porta in questione ha una serratura ridicola e facile da bypassare. È anche opportuno far notare che gli attacchi portati con SQLMap normalmente sono solo un inizio di attacco, il cui scopo potrebbe non essere legato al danneggiamento del database ma solo al reperimento dei dati in esso contenuti. Questo principio vale, ad esempio, per gli atti dimostrativi da parte degli hacker, o per eventuali fenomeni di sottrazione dei profili utenti; in tal senso SQLMap fornisce gli strumenti per fare un “lavoro rapido e pulito”.

Sbaglia quindi chi considera poco potente questo strumento ed i relativi attacchi, poichè la vera bravura non è solo nella capacità di procacciarsi i dati ma di ricavarne utili informazioni.