En este paso, identificarás y analizarás un formulario web objetivo para un ataque de password spraying (spray de contraseñas). Utilizaremos una aplicación web deliberadamente vulnerable que se ejecuta en http://localhost:8080
para este ejercicio. El password spraying consiste en probar algunas contraseñas comunes en muchas cuentas de usuario, por lo que es crucial entender la estructura del formulario de inicio de sesión antes de lanzar el ataque.
-
Primero, verifica que la aplicación web objetivo esté en funcionamiento:
curl -I http://localhost:8080/login
La opción -I
le dice a curl que solo recupere las cabeceras HTTP. Deberías ver un estado 200 OK
que confirme que la página de inicio de sesión es accesible. Si obtienes un error de conexión, asegúrate de que el servidor web esté en funcionamiento antes de continuar.
-
Examina la estructura del formulario de inicio de sesión viendo el código fuente de la página:
curl http://localhost:8080/login | grep -A5 -B5 "form"
Este comando recupera el contenido HTML y muestra 5 líneas antes y después de cualquier etiqueta <form>
. Busca el atributo action
del formulario (a donde se envían los datos) y los nombres de los campos de entrada - estos suelen llamarse username
y password
, pero pueden variar.
-
Crea un archivo de solicitud de prueba para documentar los parámetros del formulario:
nano form_test.txt
Agrega este contenido para registrar los detalles clave que Hydra necesitará:
Target URL: http://localhost:8080/login
Method: POST
Username field: username
Password field: password
Failure indicator: "Invalid credentials"
El indicador de fallo ayuda a Hydra a reconocer cuándo los intentos de inicio de sesión fallan. Usaremos este archivo más adelante para configurar nuestro ataque.
-
Prueba el formulario manualmente con un par de credenciales:
curl -X POST -d "username=admin&password=wrongpass" http://localhost:8080/login -v
-X POST
especifica el método HTTP, mientras que -d
envía los datos del formulario. La opción -v
muestra una salida detallada para que puedas verificar la respuesta "Invalid credentials". Esto confirma que el formulario funciona como se espera con inicios de sesión fallidos.
-
Comprueba las políticas de bloqueo de cuentas enviando 5 solicitudes rápidas:
for i in {1..5}; do
curl -X POST -d "username=admin&password=wrong$i" http://localhost:8080/login -s -o /dev/null -w "Attempt $i: %{http_code}\n"
done
Este bucle envía 5 intentos fallidos rápidamente. Observa si el código de estado HTTP cambia de 200 (éxito) a 403 (prohibido), lo que indicaría protecciones de bloqueo. Las aplicaciones del mundo real a menudo tienen estas salvaguardias, pero nuestro entorno de prueba no las tiene.