# OWASP CHALLENGE BRUTEFORCE 馃懢 ## Escenario *Al iniciar el reto nos encontramos con la siguiente descripci贸n:* > As a security specialist for ComTech, you have been tasked with seeking out all the vulnerabilities in company-owned assets. ComTech recently launched a new internal website. While reviewing its code, you notice that no security controls have been implemented to prevent excessive requests to the web application. > In this challenge, you will use a **brute force attack** to gain access to an **admin** account. > ComTech's new website is hosted at login.lab. Use a brute force attack to gain access to the admin account. Once you know the admin user's credentials, you must log in to that account. ## Reconocimiento Lo primero que hacemos es entrar en el dominio proporcionado **login.htb** y vemos lo siguiente: ![Screenshot 2023-12-13 125809](https://hackmd.io/_uploads/rkpL0Ww8T.png) Tenemos un panel de autenticaci贸n en el cual se nos pide los cl谩sicos *username y password*. Ya que el enunciado nos dice que no hay ninguna medida preventiva para bloquear las peticiones masivas, se nos podr铆a ocurrir intentar hacer un ataque de fuerza bruta usando el usuario **admin** y un diccionario com煤n como puede ser el **rockyou**. Sin embargo, antes de ponernos a probar cosas, es muy importante descubrir todas las funcionalidades de la web. Tenemos un bot贸n para registrar una nueva cuenta, por lo que vamos a intentar crear una para ver si podemos acceder a alg煤n recurso: ![Screenshot 2023-12-13 130647](https://hackmd.io/_uploads/BJnUgMw86.png) Podemos ver que se nos pide: * Username * Email * Password * Confirm Password Donde en la contrase帽a se nos pide que al menos sea de 12 caracteres y contenga: * May煤scula * Min煤scula * Car谩cter especial * S铆mbolo Una vez creada una cuenta, podemos ver lo siguiente: ![Screenshot 2023-12-13 131029](https://hackmd.io/_uploads/SkSNbfv8T.png) ### Una vez logueados, podemos ver un mensaje de bienvenida y un bot贸n de *"Solve the challenge!"* donde al pulsarlo nos avisa de que no tenemos permisos suficientes. Por lo que se puede intuir que una vez que entremos como el usuario administrador se nos proporcionar谩 alg煤n tipo de **flag**. Otra de las funcionalidades que tenemos en la web es la de recuperar la contrase帽a. Una vez entramos, podemos ver lo siguiente: ![Screenshot 2023-12-13 131555](https://hackmd.io/_uploads/Hk6dzMw8a.png) Probamos a poner el usuario **admin** y pedimos el c贸digo de recuperaci贸n: ![Screenshot 2023-12-13 131803](https://hackmd.io/_uploads/Skh4QzvI6.png) Esto tiene muy buena pinta, ya que podemos hacer todas las peticiones que queramos. Podemos probar a bruteforcear el PIN de 4 d铆gitos. Lo primero es ver el tipo de petici贸n que hacemos, para ello vamos a probar con cualquier c贸digo y vamos a ver la petici贸n en la ventana **Network**: ![Screenshot 2023-12-13 132251](https://hackmd.io/_uploads/Skz7VGwIT.png) ![Screenshot 2023-12-13 132327](https://hackmd.io/_uploads/B17SVGwIp.png) Con esta informaci贸n, podemos ver que la petici贸n es del tipo **POST** y se hace contra http://login.lab:3000/check-recovery-code y como par谩metros se pasan el username y el reset_token. ## Explotaci贸n En este caso, no vamos a usar una herramienta t铆pica de bruteforce como puede ser hydra. Para llevar a cabo la tarea, vamos a usar un FUZZER como **wfuzz**. Este reto es muy simple, por lo que no hay que arrastrar ninguna cookie de sesi贸n ni tampoco nos bloquean las peticiones asociadas a una IP con ning煤n firewall. ### Usando WFUZZ para bruteforcear el PIN Haciendo un uso de 200 hilos y usando un payload del tipo range desde 0000-9999, le pasamos como data POST los par谩metros mencionados y con la palabra FUZZ le decimos a la herramienta que nos sustituya el valor del rango en ese instante. Finalmente, le pasamos la direcci贸n donde se valida el PIN. > Hemos eliminado las respuestas con 26 caracteres que hacen referencia al error cuando el PIN no es correcto. ``` wfuzz --hh=26 -c -t 200 -z range,0000-9999 -d 'username=admin&reset_token=FUZZ' http://login.lab:3000/check-recovery-code ``` Ejecutamos la herramienta: ![Screenshot 2023-12-13 133707](https://hackmd.io/_uploads/rkEuPzwUT.png) Como podemos ver, hemos tenido una respuesta exitosa (200) con el payload "6109". Vamos a comprobar si es v谩lido introduci茅ndolo y ... voil脿, ahora podemos cambiar la contrase帽a del usuario admin e iniciar sesi贸n. ![Screenshot 2023-12-13 133840](https://hackmd.io/_uploads/HJOx_fvIp.png) Una vez cambiada, podemos ver lo siguiente: ![Screenshot 2023-12-13 134122](https://hackmd.io/_uploads/HJzOuGv8a.png) **隆Hemos completado el reto!**