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!
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!
Matemàtica pura. Después un montón de gente se pregunta por qué se estudia matemáticaen informática si "no sirve"
ResponderEliminarMmmmm.... si un espacio es 32 en las tablas ASCII, entonces según esa "fórmula ¿matemática?" el retraso sería inferior a cero.
ResponderEliminarSeguro que funciona así? De todos modos aplicar una diferencia de tiempo tan pequeña es jugársela mucho, no?