Hace ya año y medio desde que se publicó el Reto Hacking IV sobre Blind LDAP Injection. Ese que ganó El gran Mandingo y que iba sobre la serie Alias. El solucionario del reto fue publicado y cualquiera puede jugar con él hoy en día.
Meses después pasamos, en Abril de 2008, por la Blackhat Europe 2008 donde publicamos un paper sobre LDAP Injection y Blind LDAP Injection junto con la charla. Para impartir la charla, yo, que soy amante de los GUIs en las charlas, pedí a Rodol que me preparase una pequeña tool para inyectar LDAP en la charla.
La utilidad se llamo LDAP Injector y es sólo eso, un GUI para realizar cuatro funciones que seguro que un amante de Pipper, curl o python puede sustituir, pero, como lo dejamos publicado en esta URL, voy a explicar brevemente como funciona. La herramienta realiza tres tipos de inyecciones a ciegas:
Ataque por diccionario
La primera es por diccionario y, simplemente, realiza una sustitución de la palabra que aparece en el fichero por el patrón [$0] que aparece en la URL de configuración. Si el "String to find" aparece en la página de respuesta se toma como una respuesta TRUE y aparecerá como un valor válido. Es útil para buscar atributos o valores de atributos en entornos en los que no está permitido el uso del carácter comodín. Mil herramientas hacen esta misma función.
Ataque a Strings
La segunda es un ataque a valores alfanuméricos booleanizando. Primero realiza una reducción del charset y luego pasa a ejecutar el proceso de booleanización. En el siguiente ejemplo se puede ver funcionando la herramienta con el Reto Hacking IV.
La web vulnerable
En el reto hacking el parámetro vulnerable estaba en la búsqueda de recursos. Una vez que se buscan objetos con algún valor en el atributo uid aparece una única impresora.
Valor True
Si se busca por un nombre de usuario que no existe, por ejemplo Maligno, obtendremos un valor falso sin ninguna impresora.
Valor False
A partir de ese momento se puede utilizar LDAP Injector para extraer el valor del usuario. Se configura la URL vulnerable, se pone [$0] en el valor a buscar y se utiliza como string to find en resultados positivos el nombre del fichero de la imagen de la impresora. Se selecciona búsqueda de valores string y para adelante.
Fase 1: Reducción del charset
Utilizando la idea de RoMaNSoFt se averigua que caracteres se encuentran en el valor buscado.
Buscando los caracteres que forman parte del valor
Fase 2: Booleanización
Una vez reducido el charset se procede a realizar la booleanización del valor para ordenar los caracteres en el valor.
Booleanización de los caracteres
Al final se obtiene el usuario buscado en el reto hacking.
Usuario del Reto Hacking IV
Búsqueda de valores numéricos
La tercera opción sirve para obtener valores numericos realizando búsqueda binaria. La opción requiere configurar el valor sin operador, es decir, si se quisiera averiguar el valor del atributo salario mediante búsqueda binaria se configuraría (salario[$0]) el resto ya lo hace la herramienta.
No soporta cookies, no soporta sesiones, no soporta proxy, es sólo un GUI para jugar en una conferencia, pero... servía para solucionar el Reto Hacking IV.
Saludos Malignos!
Meses después pasamos, en Abril de 2008, por la Blackhat Europe 2008 donde publicamos un paper sobre LDAP Injection y Blind LDAP Injection junto con la charla. Para impartir la charla, yo, que soy amante de los GUIs en las charlas, pedí a Rodol que me preparase una pequeña tool para inyectar LDAP en la charla.
La utilidad se llamo LDAP Injector y es sólo eso, un GUI para realizar cuatro funciones que seguro que un amante de Pipper, curl o python puede sustituir, pero, como lo dejamos publicado en esta URL, voy a explicar brevemente como funciona. La herramienta realiza tres tipos de inyecciones a ciegas:
Ataque por diccionario
La primera es por diccionario y, simplemente, realiza una sustitución de la palabra que aparece en el fichero por el patrón [$0] que aparece en la URL de configuración. Si el "String to find" aparece en la página de respuesta se toma como una respuesta TRUE y aparecerá como un valor válido. Es útil para buscar atributos o valores de atributos en entornos en los que no está permitido el uso del carácter comodín. Mil herramientas hacen esta misma función.
Ataque a Strings
La segunda es un ataque a valores alfanuméricos booleanizando. Primero realiza una reducción del charset y luego pasa a ejecutar el proceso de booleanización. En el siguiente ejemplo se puede ver funcionando la herramienta con el Reto Hacking IV.
La web vulnerable
En el reto hacking el parámetro vulnerable estaba en la búsqueda de recursos. Una vez que se buscan objetos con algún valor en el atributo uid aparece una única impresora.
Valor True
Si se busca por un nombre de usuario que no existe, por ejemplo Maligno, obtendremos un valor falso sin ninguna impresora.
Valor False
A partir de ese momento se puede utilizar LDAP Injector para extraer el valor del usuario. Se configura la URL vulnerable, se pone [$0] en el valor a buscar y se utiliza como string to find en resultados positivos el nombre del fichero de la imagen de la impresora. Se selecciona búsqueda de valores string y para adelante.
Fase 1: Reducción del charset
Utilizando la idea de RoMaNSoFt se averigua que caracteres se encuentran en el valor buscado.
Buscando los caracteres que forman parte del valor
Fase 2: Booleanización
Una vez reducido el charset se procede a realizar la booleanización del valor para ordenar los caracteres en el valor.
Booleanización de los caracteres
Al final se obtiene el usuario buscado en el reto hacking.
Usuario del Reto Hacking IV
Búsqueda de valores numéricos
La tercera opción sirve para obtener valores numericos realizando búsqueda binaria. La opción requiere configurar el valor sin operador, es decir, si se quisiera averiguar el valor del atributo salario mediante búsqueda binaria se configuraría (salario[$0]) el resto ya lo hace la herramienta.
No soporta cookies, no soporta sesiones, no soporta proxy, es sólo un GUI para jugar en una conferencia, pero... servía para solucionar el Reto Hacking IV.
Saludos Malignos!
Genial!!!!! Ya era hora de que viese la luz
ResponderEliminarUno de los primeros papers que hablan sobre blind ldap injection (y donde se describe la técnica del charset reduction por primera vez) es mi solucionario a dicho reto, que podéis encontrar en:
ResponderEliminarhttp://www.rs-labs.com/papers/i64-reto_IV-solve.txt
PD: Saludos muchos, que ya hace tiempo que no comentaba nada... (esto de tirar de google reader te hace cada vez más perrón :-)).
-r
Hace tiempo que leo tu blog.
ResponderEliminarMe sorprendió verlo ayer en el prograam de la Milá!!
un saludo
Milá quiero un hijo tuyo
ResponderEliminarchemita y pa cuando un reto nuevo, para verano habra alguno no?? :P
ResponderEliminarpor cierto eres famoso en to los laos yo tmb t vi por ahi en el programa maliggggno xD, no habras exo cosas malas con la tia k salio despues de porno no?? jeje
Uno, dos, tres, cuatro, cinco, seis, siete!! INFECTADOS! Uno, dos, tres! OS SALVÁIS... Magistral...xDD
ResponderEliminarVenga, un saludete.