Revisar opciones de HTTP POST con -U
En este paso, exploraremos las opciones de HTTP POST disponibles en Hydra utilizando la bandera -U
. La bandera -U
se utiliza para especificar un nombre de usuario al realizar una solicitud POST. Esto es especialmente útil cuando el servicio objetivo requiere que se envíe un nombre de usuario como parte de los datos POST.
Antes de sumergirnos en el ejemplo práctico, entendamos el concepto básico de las solicitudes HTTP POST. HTTP POST es un método utilizado para enviar datos a un servidor para crear o actualizar un recurso. A diferencia de las solicitudes GET, las solicitudes POST llevan los datos en el cuerpo de la solicitud, lo que las hace adecuadas para enviar cantidades mayores de datos, como envíos de formularios.
Hydra es una herramienta poderosa para forzar la entrada de credenciales de inicio de sesión. Cuando se apunta a servicios que utilizan HTTP POST para la autenticación, necesitamos proporcionar a Hydra la información necesaria, incluyendo los campos de nombre de usuario y contraseña, así como la URL a la que se debe enviar la solicitud POST.
La opción -U
en Hydra te permite especificar un solo nombre de usuario para utilizar en todos los intentos de inicio de sesión. Esto es útil cuando ya conoces el nombre de usuario y solo necesitas forzar la entrada de la contraseña.
Veamos cómo usar la opción -U
con un ejemplo sencillo. Supongamos que queremos atacar una aplicación web que utiliza HTTP POST para el inicio de sesión, y sabemos que el nombre de usuario es testuser
. Podemos usar el siguiente comando de Hydra:
hydra -l testuser -P ~/project/password.txt "/login.php:username=^USER^&password=^PASS^:F=Invalid username or password" < target_ip > http-post-form
En este comando:
hydra
: El comando para invocar Hydra.
-l testuser
: Especifica el nombre de usuario como testuser
. Ten en cuenta que aquí estamos usando -l
en lugar de -U
. -l
especifica un solo nombre de usuario, mientras que -U
especifica un archivo que contiene una lista de nombres de usuario.
-P ~/project/password.txt
: Especifica la ruta al archivo de lista de contraseñas. Asegúrate de tener un archivo password.txt
en tu directorio ~/project
. Puedes crear uno usando nano
:
nano ~/project/password.txt
Agrega algunas contraseñas comunes al archivo, una contraseña por línea, por ejemplo:
password
123456
qwerty
Guarda el archivo y sal de nano
.
<target_ip>
: Reemplaza esto con la dirección IP del servidor objetivo. Para este laboratorio, necesitarás reemplazar esto con la dirección IP real del servidor que estás atacando. Asumiremos que la dirección IP objetivo es 127.0.0.1
con fines de demostración.
http-post-form
: Especifica que estamos utilizando el módulo de formulario HTTP POST.
"/login.php:username=^USER^&password=^PASS^:F=Invalid username or password"
: Esta es la parte más importante. Le dice a Hydra cómo construir la solicitud POST.
/login.php
: La URL a la que se debe enviar la solicitud POST.
username=^USER^&password=^PASS^
: Los datos POST. ^USER^
y ^PASS^
son marcadores de posición que Hydra reemplazará con el nombre de usuario y la contraseña, respectivamente.
F=Invalid username or password
: Esto le dice a Hydra qué cadena buscar en la respuesta para determinar si el intento de inicio de sesión falló. Si Hydra encuentra esta cadena, sabe que el intento de inicio de sesión no fue exitoso.
Ahora, ejecutemos el comando con la dirección IP de ejemplo:
hydra -l testuser -P ~/project/password.txt 127.0.0.1 http-post-form "/login.php:username=^USER^&password=^PASS^:F=Invalid username or password"
Este comando intentará forzar la entrada de la contraseña para la cuenta testuser
utilizando las contraseñas en el archivo password.txt
. Hydra enviará solicitudes HTTP POST a la URL /login.php
con los campos de nombre de usuario y contraseña configurados en consecuencia. Si Hydra encuentra una contraseña válida, la mostrará en la pantalla.
Este ejemplo demuestra el uso básico de la opción -l
con el módulo http-post-form
. En los siguientes pasos, exploraremos opciones y técnicas más avanzadas para atacar formularios HTTP POST con Hydra.