Herramientas de automatización de BLIND SQL INJECTION (I de III)

Para aquellos que conozcan las técnicas de inyección de código a ciegas sabrán el divertido calvario que hay que pasar para realizar buenas cadenas de inyección (tipo comparando los resultados con valores ASCII, hexadecimales...). Voy a hablaros sobre algunas herramientas de automatización de estas tareas - algunas de las herramientas usadas fueron mencionadas por alex en las 15 herramientas gratuitas para detectar inyección SQL -.

# Mysql_Bftools
printa1mysqlbftools.jpg

Herramienta de pen-test implementada y escrita en C. Mediante fuerza bruta prueba miles de combinaciones (en modo de peticiones/inyecciones) al servidor/aplicación. Se interactúa desde linea de comandos y la estructura es la siguiente

code:
mysqlbf.exe "www.target.com/file/parametrovulnerable?=ID "[1]" "[2]"
[1] Función que queramos adivinar... soporta system_user(), version().... [2] Palabra que haya en la página para saber si nos encontramos ante una página distinta o estamos en la página original. Aparte mysqbftools viene acompañado por dos herramientas más: mysqlget y mysqlst. Mysqlget te permite bajar archivos de la aplicación vulnerable y mysqlst es una herramientas usada para leer y parsear tablas sin necesidad de bajarse toda la base de datos. En la próxima veremos y explicaremos el funcionamiento de Sqlninja.

Técnicas de BLIND SQL INJECTION (I de III)

¿Quién hoy en día no conoce el archi-famoso ataque de SQL INJECTION?
Una variante que me fascina bastante de este tipo de ataque es el BLIND SQL INJECTION ó inyección de código a ciegas. Presentada hace solo un par de años en el Black Hat ha sido y es un dolor de cabeza más para los desarrolladores de aplicaciones web.

En esta primera entrada vamos a ver un poco que es esto del ataque a ciegas con un par de demos y en artículos próximos veremos como funciona realmente este tipo de ataque. Este ataque podría clasificarse bajo los ataques en base a error. El concepto del ataque es muy simple básicamente podemos saber cuando algo es cierto o no en base a roles de preguntas -me explico un poco más-.

Tenemos la siguiente URL:

asp:
http://vulnerable.com/vulnerable_parametro.asp?id_programa=166

E inyectamos código:

asp:
http://vulnerable.com/vulnerable_parametro.asp?id_programa=166 and 1=1

Como la condición 1=1 se cumple la aplicación no nos devolverá ningún error pero ¿ y si inyectamos 1=2 ?. Obviamente la condición 1=2 no se cumple, la aplicación generara una pantalla de error. Hasta aquí todo bien ¿y esto que riesgo puede tener, algún tonto que no sabe que 1=1?.

Tenemos infinidad de formas de explotar esto tipo de fallo ¿y si nos ponemos a enviarles peticiones con letras para adivinar en pocos minutos el nombre de la tabla de la base de datos ? o mejor aun la contraseña de administrador.

Hasta la próxima entrega 🙂