Cari lettori di Tecnogalaxy, oggi riprenderemo a parlare della tecnica SQL Injection. Nella sicurezza informatica SQL injection è una tecnica di code injection, utilizzata per attaccare applicazioni di gestione dati. Vengono inserite delle stringhe di codice SQL malevole all’interno di campi di input in modo che queste ultime vengano poi eseguite (ad esempio per fare inviare il contenuto del database all’attaccante).

Come funziona

In generale le applicazioni più attaccate con questa tecnica sono le applicazioni web, ad oggi esistono ancora molti siti anche importanti attaccabili con questa tecnica. Di solito quando devo testare un’applicazione web, prima di utilizzare i vari tools passo a tappeto tutta l’applicazione a manina (è molto più divertente), in un secondo momento utilizzo i vari tools per raccogliere maggiori informazioni.

Non perdiamo tempo e passiamo subito alla parte pratica.

Tramite le google dorks cerco tutte le applicazioni web che hanno una pagina di login (per sapere come funzionano le google dorks, fate riferimento all’articolo precedente).

Al termine della ricerca Google mostra una lista di siti, prendo il primo e testo se l’applicazione è vulnerabile inserendo nel form di login le seguenti informazioni e confermo con l’invio.

  • nel campo UserId scrivo admin
  • nel campo Password scrivo 1′ or ‘1’=’1

Nel mio test la pagina è fatta in ASP e non prevede la validazione dell’input, (vedremo più avanti cosa significa) magicamente il sito mostra:

Good Morning, Administrator!

Sono dentro nel pannello di controllo come utente admin , (se ci pensate è pazzesco), in pochi secondi ho bypassato il form di login, inoltre posso modificare la query a mio piacimento. (Pensate ad un malintenzionato cosa potrebbe fare).

Normalmente inseriamo la propria username e la propria password per poter leggere ad esempio la posta elettronica, accedere al sito dove siamo iscritti etc…dopo aver confermato i dati inseriti, lo script si collega al database e verifica le nostre autorizzazioni e se la ricerca è positiva ci consente l’accesso, tutto questo tramite interrogazioni SQL.

Altri metodi di verifica

Un altro modo per testare l’applicazione web è inserire il carattere di apostrofo nel campo di ricerca e quindi premere invio. A seconda della reazione ottenuta, sapremo se l’applicazione si presta o meno a manipolazioni.

Ritorniamo al nostro form di login, dopo aver inserito le info descritte sopra e aver confermato con l’invio, appare una scritta che ci avverte che username e/o password non sono validi, la nostra avventura probabilmente si conclude qui. Pazienza cercherò altre vulnerabilità all’interno del sito 😊.

Se al contrario appare un errore HTTP 500 (Errore interno del server) oppure una descrizione di errore ODBC  possiamo immedesimarci per qualche minuto nell’hacker che trova una nuova “preda”.

Le informazioni che si possono ottenere iniettando i comandi SQL nella query sono tantissime, potremmo estrapolare i dati direttamente scrivendo le query direttamente dall’url del sito stesso.

Comandi per SQL Injection

Esistono molti altri modi per manipolare il login e per eseguire comandi sul server, vediamone alcune:

Username: admin’ — Effetto: Autenticazione come utente admin

Username: ‘ OR “=’ Password: ‘ OR “=’ Effetto: Autenticazione senza credenziali

Username: ‘ ; drop table members– Effetto: Eliminazione della tabella di un database

Username: aaaaaaaaaaaaaaa’ Password: ‘ ; shutdown — Effetto: Chiusura del database

Username: ‘ ;EXEC master..xp_cmdshell ‘dir’;– Effetto: Esecuzione del comando dir per ottenere un listato delle directory

Username: ‘ ;EXEC master..xp_regread HKEY_LOCAL_MACHINE,’percorso’,’chiave’– Effetto: Lettura di una chiave del registro di Windows

Username: ‘ or 0=0 –sp_password Effetto: Autenticazione come primo utente della tabella users. L’aggiunta di sp_password fa in modo che la stringa non venga visualizzata fra i log di SQL Server (vale per tutti i comandi).

Un malintenzionato sarà facilitato nel compito se il database supporta molti comandi speciali tramite le query SQL. Il database che si presta meglio a queste tecniche di Avanced SQL injection è il Ms SQL Server, a causa del supporto dei comandi xp_cmdshell e simili, seguito da Postgree, DB2, Oracle e MySQL (generalmente il meno vulnerabile).

Prevenire SQL Injection

Adesso che conosciamo a grandi linee come potrebbe muoversi un malintenzionato che vuole intrufolarsi nelle nostre applicazioni web, possiamo valutare le contromisure più adatte a fermarlo. Essere in grado di riconoscere autonomamente gli script a rischio è già un buon passo avanti; adesso vediamo in che modo prevenire gli attacchi.

  • Validazione dell’input

Implementiamo delle procedure (all’interno del codice di programmazione) di validazione nei nostri script, prevediamo e blocchiamo ogni tipo di carattere pericoloso che può essere immesso. La validazione deve essere fatta rigorosamente lato server. I JavaScript sono praticamente inutili contro un malintenzionato.

  • Controllo delle informazioni

I dati che il nostro server web si lascia “scappare” sono importantissimi per un malintenzionato; alcuni esempio di messaggi di errore ODBC che il server visualizza sulla pagina web, possono essere manipolati facilmente. Configuriamo IIS in modo che in caso di errore invii un messaggio invece che specifico.

  • Ridurre i privilegi

Il servizio del server SQL non deve avere privilegi superiori, in modo da contrastare le tecniche di hacking che invece li richiedono.

  • Aggiornare spesso

Molti punti vulnerabili alla SQL injection non sono così evidenti come nei casi che abbiamo visto finora. Per questo non abbiamo la possibilità di riconoscerli subito. Gli update degli script (forum, sistemi di gestione) risolvono questi problemi appena vengono trovati, quindi teniamoci aggiornati!

Come sempre fatene buon uso, 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:

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.