Hacking etico - SQL Injection
SQL injection è un insieme di comandi SQL che vengono inseriti in una stringa URL o in strutture dati al fine di recuperare una risposta che desideriamo dai database collegati alle applicazioni web. Questo tipo di attacchi avviene generalmente su pagine web sviluppate utilizzando PHP o ASP.NET.
Un attacco SQL injection può essere eseguito con le seguenti intenzioni:
Per eseguire il dump dell'intero database di un sistema,
Per modificare il contenuto dei database, o
Per eseguire query diverse non consentite dall'applicazione.
Questo tipo di attacco funziona quando le applicazioni non convalidano correttamente gli input, prima di passarli a un'istruzione SQL. Le iniezioni vengono normalmente inserite nelle barre degli indirizzi, nei campi di ricerca o nei campi dati.
Il modo più semplice per rilevare se un'applicazione web è vulnerabile a un attacco di iniezione SQL è utilizzare il carattere "'" in una stringa e vedere se viene visualizzato un errore.
Esempio 1
Proviamo a comprendere questo concetto utilizzando alcuni esempi. Come mostrato nello screenshot seguente, abbiamo utilizzato un carattere "'" nel campo Nome.
Ora, fai clic su Loginpulsante. Dovrebbe produrre la seguente risposta:
Significa che il campo "Nome" è vulnerabile a SQL injection.
Esempio 2
Abbiamo questo URL - http://10.10.10.101/mutillidae/index.php?page=site-footer-xssdiscussion.php
E vogliamo testare la variabile "page" ma osservare come abbiamo inserito un carattere "'" nella stringa URL.
Quando premiamo Invio, produrrà il seguente risultato che è con errori.
SQLMAP
SQLMAP è uno dei migliori strumenti disponibili per rilevare le iniezioni SQL. Può essere scaricato dahttp://sqlmap.org/
È precompilato nella distribuzione di Kali. Puoi trovarlo in - Applicazioni → Valutazione del database → Sqlmap.
Dopo aver aperto SQLMAP, andiamo alla pagina in cui abbiamo l'iniezione SQL e quindi otteniamo la richiesta di intestazione. Dall'intestazione, eseguiamo il seguente comando in SQL:
./sqlmap.py --headers="User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:25.0)
Gecko/20100101 Firefox/25.0" --cookie="security=low;
PHPSESSID=oikbs8qcic2omf5gnd09kihsm7" -u '
http://localhost/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit#' -
level=5 risk=3 -p id --suffix="-BR" -v3
SQLMAP testerà tutte le variabili e il risultato mostrerà che il parametro "id" è vulnerabile, come mostrato nello screenshot seguente.
SQLNinja
SQLNinja è un altro strumento di iniezione SQL disponibile nella distribuzione di Kali.
Iniezione di JSQL
JSQL Injection è in Java e fa iniezioni SQL automatizzate.
Consigli veloci
Per evitare che la tua applicazione web subisca attacchi di SQL injection, tieni presente i seguenti punti:
L'input utente non selezionato al database non dovrebbe essere autorizzato a passare attraverso la GUI dell'applicazione.
Ogni variabile che passa nell'applicazione deve essere disinfettata e convalidata.
L'input dell'utente che viene passato nel database dovrebbe essere citato.