Come utilizzare SQLMAP per cercare vulnerabilità di iniezione in SQL?

SQLMAP è uno strumento open source che automatizza il processo di rilevamento e sfruttamento delle vulnerabilità dell’iniezione SQL come accesso ai server di database.

La sua architettura è ben progettata e viene fornita con un potente motore di rilevamento , oltre a molte funzionalità che gli consentono di andare oltre la raccolta di dati da un database.

Accesso al file system sottostante ed esecuzione di comandi nel sistema operativo. In questo breve articolo vedremo come sfruttare le vulnerabilità.

Possono consentire di caricare una shell sul server e persino modificare la password dell’utente amministratore eseguendo i comandi con SQLi.

Come utilizzare SQLMAP per cercare vulnerabilità nell’iniezione SQL?

Come utilizzare SQLMAP per cercare vulnerabilità di iniezione in SQL? 1

Elencare le informazioni sui database esistenti

Quindi, per prima cosa, dobbiamo inserire l’URL Web che vogliamo verificare insieme al parametro -u . Possiamo anche usare il parametro –tor se vogliamo testare il sito Web usando i proxy.

Ora, normalmente, vorremmo verificare se è possibile ottenere l’accesso a un database. Quindi usiamo l’opzione –dbs per farlo. –Dbs elenca tutti i database disponibili.

Andiamo alla pagina di test

sqlmap -u http://testphp.vulnweb.com/listproducts.php?cat=1 –dbs

Otteniamo l’output che ci mostra che ci sono due database disponibili. A volte, l’applicazione ti dirà che hai identificato il database e ti chiederà se vuoi provare altri tipi di database.

Puoi andare avanti e scrivere “Y”. Inoltre, è possibile chiedere se si desidera testare altri parametri per rilevare le vulnerabilità.

Digita “Y” qui, poiché vogliamo testare accuratamente l’applicazione web. Notiamo che ci sono due database, acuart e information_schema.

Elenca le informazioni sulle tabelle presenti in un database particolare

Per testare e accedere a qualsiasi database, dobbiamo modificare leggermente il nostro comando. Ora usiamo -D per specificare il nome del database a cui vogliamo accedere.

Una volta che avremo accesso al database, vorremmo vedere se possiamo accedere alle tabelle. Per fare ciò, usiamo la query -tables . Accediamo al database acuart.

sqlmap -u http://testphp.vulnweb.com/listproducts.php?cat=1 

MrGreen acuart --tables

Vedremo che sono state recuperate 8 tabelle. Quindi ora sappiamo sicuramente che il sito Web è vulnerabile.

Elenca le informazioni sulle colonne di una tabella particolare

Se vogliamo vedere le colonne di una particolare tabella, possiamo usare il seguente comando, in cui usiamo -T per specificare il nome della tabella e –columns per interrogare i nomi delle colonne.

Come utilizzare SQLMAP per cercare vulnerabilità di iniezione in SQL? 2

Proveremo ad accedere al tavolo “artisti”

sqlmap -u http://testphp.vulnweb.com/listproducts.php?cat=1 

MrGreen acuart -T artisti - colonne

Dump Column Data

Allo stesso modo, possiamo accedere alle informazioni in una colonna specifica usando il seguente comando , dove -C può essere usato per specificare il nome di più colonne separate da una virgola.

La query –dump recupera i dati:

sqlmap -u http://testphp.vulnweb.com/listproducts.php?cat=1

-D acuart -T artisti -C aname --dump

Possiamo vedere che abbiamo avuto accesso ai dati nel database . Allo stesso modo, su tali siti Web vulnerabili, possiamo letteralmente esplorare attraverso i database per estrarre informazioni.

Prevenire l’iniezione SQL

In genere, è possibile impedire l’iniezione di SQL utilizzando istruzioni preparate. Quando usiamo una dichiarazione preparata.

In pratica stiamo utilizzando un modello per il codice e analizziamo il codice come input dell’utente separatamente. Non mescola la query immessa dall’utente e il codice.

Nell’esempio fornito all’inizio di questo articolo, la voce inserita dall’utente viene inserita direttamente nel codice e compilata insieme, in modo da poter eseguire codice dannoso.

Per istruzioni preparate, in sostanza inviamo la query SQL con un segnaposto per l’input dell’utente e quindi inviamo l’input dell’utente effettivo come comando separato.

Come utilizzare SQLMAP per cercare vulnerabilità di iniezione in SQL? 3

Considera il seguente segmento di codice PHP

$ db = nuovo PDO ('dettagli di connessione');
$ stmt = db-> prepar ("Seleziona il nome dagli utenti dove id =: id");
$ stmt-> execute (array (': id', $ data));

In questo codice, l’input dell’utente non è combinato con l’istruzione preparata. Sono compilati separatamente. Poi.

Anche se il codice dannoso viene inserito come input dell’utente , il programma tratterà semplicemente la parte dannosa del codice come una stringa e non come un comando.

SQLMap è un buon strumento quando si tratta di rilevare e sfruttare le vulnerabilità dell’iniezione SQL. Con così tante opzioni compatibili.

Gli switch e la possibilità di creare e utilizzare lo script personalizzato si distingue dai numerosi strumenti open source per testare la vulnerabilità dell’iniezione SQL.

 

Potrebbe interessarti

Lascia un commento