10 junio 2014

Cracking de formularios Web con Hydra

Pese a la época en la que nos encontramos (año 2014) aun hoy día es bastante fácil encontrar sitios web cuyos formularios de 'login' carecen de protecciones anti fuerza bruta.

Todo o casi todo el mundo conoce el concepto 'captcha' como técnica destinada a mitigar los ataques de fuerza bruta. Incluso hay sistemas menos molestos que permiten bloquear por IP a partir de cierto número de intentos de login.

Hoy voy a explicar cómo sacar partido de esos formularios web de autenticación que no disponen de métodos para evitar ataques de fuerza bruta.

Vamos a tomar una muy sencilla aplicación de ejemplo escrita en PHP cuya interface HTML es esta:

Y cuya parte PHP esta:

Que luce tal que así:


Con esto en la mano, el objetivo es identificar patrones de éxito o fracaso en función de las pruebas que hacemos. Obviamente lo más fácil es identificar patrones de fracaso, es decir, combinaciones que no conducen a acceso. Probamos algo cualquiera:


Vale, ya tenemos un patrón de fracaso: si fallamos la autenticación obtenemos un mensaje que pone 'Acceso denegado'. Con eso es suficiente para instruir a Hydra a la hora de hacer un ataque de fuerza bruta al formulario.

Ejecutamos Hydra tal que así:

$ hydra 192.168.9.13 http-form-post "/login.php:username=^USER^&password=^PASS^:Acceso Denegado" -L diccionario.txt -P diccionario.txt -t 10 -w 30

Y los parámetros importantes son:

1- La IP y la ruta del formulario(obvio...)
2- La petición que hay que lanzar al formulario y que la podemos ver en el código HTML de la página. En este caso username y password
3- El diccionario que vamos a usar

Si tenemos suerte podremos localizar logins y password válidos:

[80][www-form] host: 172.16.183.179   login: pedro   password: 123456