jueves, septiembre 04, 2008

BSQL Hacker & Deep Blind SQL Injection

A finales de agosto, Ferruh Mavituna de Portcullis Security, al que conoceréis casi todos por su SQL Injection Cheat Sheet, sacó una herramienta llamada BSQL Hacker y un paper sobre lo que él llama Deep Blind SQL Injection.

Deep Blind SQL Injection

La técnica de Deep Blind SQL Injection es una forma de hacer Time-Based blind SQL Injection, por ejemplo utilizando el método de waitfor delay en SQL Server, pero intentando averiguar más de un caracter en cada petición. Esto reduce el número de peticiones que hay que realizar al servidor, según dice él, hasta en un 66%.

La idea es que el tiempo que tiene que parar la base de datos dependa del valor ASCII de la letra. Supongamos que establecemos que 10 segundos de retardo es un valor TRUE y menos es un valor FALSE. Entonces se aplica la siguiente fórmula:

IF @x>97 SET @x=@x-87 ELSE SET @x=@x-48;

Así, si la letra es la "c", cuyo valor ASCII es 99 el retraso sería de 12 segundos ya que cae en el if de las letras. De esta forma si el retaro son 10 segundos es una "a" si son 11 segundos es una "b" si son 12 segundos es una "c"... En el caso de que fuera un número se haría partiendo del número 48, el 0 en ASCII.

BSQL Hacker

La herramienta que ha liberado implementa, para MySQL, Oracle y MSSQL Server los métodos de extracción basados a patrones, errores, tiempos y mediante Deep Blind y tiene un wizzard muy sencillo de utilizar para automatizar todos los ataques.

BSSQL Opciones de Extracción

He probado la herramienta con una migración del Reto Hacking I a un entorno de MSSQL server y estos han sido los pasos de ejecución:

Fase 1: Se arranca el Wizard


Fase 2: Se configura la URL y el parámetro vulnerable


Fase 3: El Wizard detecta si es o no vulnerable y el motor de BBDD


Fase 4: Comienza el ataque y en el Dashboard se va mostrando la info descubierta


Fase 5: Al final, en Database extraction queda la info descubierta


Conclusiones

El método de Deep Blind SQL Injection es curioso cuanto menos, tiene los mismos problemas que todas las extracciones por tiempo, es decir, la fiabilidad de los tiempos de respuesta, pero es otro punto de vista a tener en cuenta en una extracción de información. La herramienta BSQL Hacker funciona muy bien en unos entornos, pero en otros entornos vulnerables no ha sido capaz de descubrirlos ni de extraer información. Supongo que habrá que realizar un ajuste fino de la misma, pero desde luego, va a ser parte del "arsenal" de herramientas a usar en un test ya que hace algo Absinthe... las pruebas de detección del motor de base de datos.

Saludos Malignos!

2 comentarios:

Juan dijo...

Matemàtica pura. Después un montón de gente se pregunta por qué se estudia matemáticaen informática si "no sirve"

Anónimo dijo...

Mmmmm.... si un espacio es 32 en las tablas ASCII, entonces según esa "fórmula ¿matemática?" el retraso sería inferior a cero.

Seguro que funciona así? De todos modos aplicar una diferencia de tiempo tan pequeña es jugársela mucho, no?

Entrada destacada

Seis recomendaciones personales de libros de @0xWord para disfrutar y aprender

Este verano pude disfrutar de la lectura de un libro que me encantó. El libro de Factfulness que me había regalado mi compañera Beatriz Ce...

Entradas populares