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.