SqlDumper
Copyright (C) 2006 Antonio "s4tan" Parata <s4tan@ictsc.it>
Ultimo aggiornamento: 26/10/2006
NB: Attualmente sqldumper funziona solo con DBMS MySql, se hai la possibilita' e vorresti utilizzarlo su altre piattaforme, scrivimi!
Se riscontrate qualche malfunzionamento, fatemelo sapere!!!
1. Introduzione
SqlDumper nasce come tool di aiuto in sessioni di penetration testing. Sfruttando una vulnerabilita' da Sql Injection SqlDumper permette di effettuare il dump di un qualsiasi file
presente sul filesystem (diritti di accesso permettendo).
Il tool si basa su tecniche di inferenza la cui teoria e' esposta in questo articolo.
2. Installazione
SqlDumper non necessita di installazione, basta decomprimere il file scaricato e lanciare il comando ./sqlDumper.sh se il sistema operativo e' Linux o sqlDumper.bat se il sistema operativo e' windows. SqlDumper e' scritto in java, per cui e' necessario aver installato la JVM sul proprio sistema.
3. Utilizzo
SqlDumper e' in alcuni casi in grado di riuscire a capire se il sito e' exploitabile oppure no. Si consiglia comunque di non fare molto affidamento su tale caratteristica e piuttosto verificare manualmente se il sito e' o meno exploitabile.
L'utilizzo di sqldumper verra' spiegato tramite un esempio. Supponiamo di esaminare il seguente sito web: http://www.example.com contenente un parametro vulnerabile di nome id raggiungibile dalla home page.
Per prima cosa verifichiamo che sia presente una vulnerabilita' da sql injection. Dirigiamo il browser al seguente indirizzo:
http://www.example.com/index.php?id=1'
se ci viene ritornato un qualche errore vi e' una possibile vulnerabilita'. Ora proviamo a scrivere
http://www.example.com/index.php?id=1' AND '1' = '1
se non otteniamo nessun errore, allora significa che la vulnerabilita' e' exploitabile.
Da questo esempio abbiamo capito che possiamo inserire una qualsiasi query con il solo vincolo di rendere corretta la query. Consideriamo dunque il seguente url (non valido)
http://www.example.com/index.php?id=1' INJECTION AND '1' = '1
dove la parola INJECTION indica il fatto che in quel punto possiamo inserire delle query valide. In particolare sqldumper utilizzera' cio' per eseguire le sue query. Infine indichiamo con il termine QUERY il valore ' INJECTION AND '1' = '1, ottenendo la seguente query (non valida)
http://www.example.com/index.php?id=1QUERY
E' necessario specificare a sqldumper una query del genere, perche' potrebbero esserci ulteriori parametri dopo il parametro id, per cui e' necessario specificare dove dovra' essere inserita la query. QUERY contiene anche il valore INJECTION, indispensabile a sqldumper perche' indica il posto dove inserire le query di inferenza. In conclusione il significato dei vari parametri di input rappresentati in figura e':
url: url del sito web vulnerabile, deve contenere anche la stringa che identifica dove inserire la query. Nel nostro esempio e' http://www.example.com/index.php?id=1QUERY
query: identifica la query che dovra' essere aggiunta all'url. Tale query deve contenere la stringa che identifica dove inserire le query di inferenza. Inoltre la query deve essere forgiata in un modo che ritorni un valore sempre vero, utilizzando solo operatori AND. Nel esempio e' ' INJECTION AND '1' = '1
query identifier: e' la stringa che identifica dove dovra' essere inserita' la query. sqldumper sostituira' a tale valore il valore della query, in pratica e' un segnaposto.
Nell'esempio e' QUERY
injection identifier: identifica il segnaposto che sqldumper utilizzera' per effettuare i suoi test. Nell'esempio e' INJECTION
4. Flah Demo
Per visualizzare una flash demo, cliccate qui.
5. Download
Per scaricare sqldumper cliccate qui per la versione Linux [1.7 MB]
cliccate qui per la versione Windows [2.5 MB].
Per i sorgenti cliccate qui