cuantas query necesito

12 de enero de 2009

Me dicen el otro día que si tengo alguna inyección para sacar el “nombre de usuario” del usuario que hace la consulta. Tal persona desconocida tenía una Web donde había encontrado un parámetro inyectable y quería una única query para sacar el nombre de usuario.

Pocas cosas se pueden conseguir hoy en día con una única query… es el caso del desconocido. Está muy difícil sacar información interesante y si no fuera por técnicas de booleanization y blind injection. Sería casi imposible.
El tiempo y el número de consultas que tenemos que hacer contra un parámetro que sepamos que es inyectable es mucho mayor que la longitud de los datos que obtenemos. Aquí tenéis un ejemplo de lo que os hablo sobre la booleanización. Por ejemplo para sacar que el nombre del usuario “sys” (tres letras) se han necesitado hacer 9 consultas contra la base de datos.

Para el administrador esto es una ventaja, ya que por un lado dificulta el ataque (aunque con las herramientas que corren esto no sirve de nada) y por otro lado el gran número de consultas no pasan desapercibidas dentro del log de la base datos (suponiendo que somos unos feroces lectores de logs).

Un ejemplo real:







En la primera inyección se han necesitado más de 20 querys para sacar que la base de datos es MySQL. Para el segundo y tercer caso se han necesitado más de 100 querys para sacar el nombre del usuario de la base de datos y el nombre de la base de datos.

Más información:
+ Lista de proxys anonimos
+ Mira un poquito el log de mysql para detectar estas cosas
+ Si te das prisa sabras más de estas cosas... pero prepara 100€