Brute-forcing a stay-logged-in cookie
SUMMARY
Debemos autenticarnos con la cuenta del usuario carlos a traves del login de un sitio web. Además, el enunciado del laboratorio nos provee las credenciales del usuario wiener. Primero, analice la lógica utilizada en la funcionalidad Stay logged in, que me permitía omitir la autenticación del login del sitio web a pesar de que cierre todas las sesiones del navegador web. Luego, me di cuenta de que el sitio web establece una cookie en nuestro navegador web para la implementación de esta funcionalidad. Luego, debido a que la cookie no tenía un alto grado de entropía, pude saber qué estaba conformado por el username y password del usuario, y utilizaba la codificación base64 y un hash MD5. Luego, cree un script en Python para encontrar la cookie y contraseña correcta del usuario carlos con el fin de omitir la autenticación del login del sitio web.
RESOLUCION
En este laboratorio tenemos que autenticarnos exitosamente en un login de un sitio web con el usuario carlos. Para ello la plataforma de PortSwigger (https://portswigger.net/web-security/authentication/other-mechanisms/lab-brute-forcing-a-stay-logged-in-cookie) nos proveen las credenciales de un usuario valido. (wiener:peter), y un wordlist compuesta de contraseñas.
Podemos observar que se ha implementado un metodo complementario a la autenticacion basica a traves de un login, que viene a ser llamado Stay logged in. Ademas, si cerrramos todas las sesiones del navegador web, y volvemos a ingresar al sitio web, seguiremos autenticados con el username wiener. Esto se debe a que la aplicación web le ha asignado a nuestro navegador una cookie persistente llamada stay-logged-in que va ir asociada a la cuenta del usuario wiener, y nos permite omitir la autenticacion a traves del login del sitio web.
Ahora pondremos a prueba la robustez o el grado de entropia que tiene la cookie persistente stay-logged-in, para ello supondremos que pueda estar codificado con alguna codificacion bidirreccional o una funcion hash unidireccional.
Podemos observar que la cookie esta conformado por dos valores estaticos que vienen a ser el username y passsword del usuario. Ademas, la codificacion y funcion hash implementadas son bastantes basicas.
Ahora que sabemos como esta conformado la cookie stay-logged-in, generaremos un script en Python para poder encontrar la cookie asignada al usuario carlos y omitir la autenticacion del login. Ademas, debemos tener en cuenta que la URL de la seccion My Account del sitio web tiene un parametro GET id que viene a ser contener el username del usuario, y si intentamos cambiar ese valor por otro username valido, se nos cierra la sesion automaticamente. Esta logica la tendremos en cuenta para elaborar el script.
Podemos observar que el script logro determinar el password del usuario carlos, y de esta manera logramos omitir la autenticacion del login del sitio web, y logramos resolver el laboratorio.
El script utilizado en el desarrollo de este laboratorio lo puedes encontrar en mi repositorio Github.