Offline password cracking
SUMMARY
Debemos eliminar la cuenta del usuario carlos 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 se establecia a traves de una cookie persistente, y que permitía omitir la autenticación del login del sitio web a pesar de que cierre todas las sesiones del navegador web. 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. Luego, cree un script en Python para intentar obtener la cookie de carlos, pero no pude hacerlo debido a que no tenia el wordlist adecuado. Luego, aproveche la vulnerabilidad XSS en la funcionalidad de comentarios en los posts del sitio web, para robar las cookies de los usuarios que se autenticaron con la funcionalidad Stay logged, logrando obtener el password del usuario carlos.
RESOLUCION
En este laboratorio tenemos que eliminar la cuenta del usuario carlos. Para ello la plataforma de PortSwigger (https://portswigger.net/web-security/authentication/other-mechanisms/lab-offline-password-cracking) nos proveen las credenciales de un usuario valido (wiener:peter), y un servidor web bajo nuestro control.
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, podriamos utilizar el siguiente script en Python para poder realizar un ataque de fuerza bruta sobre la cookie y encontrar la cookie asignada al usuario carlos y omitir la autenticacion del login. El problema de este metodo es que el laboratorio no nos brinda un wordlist de contraseñas y si intentamos realizar el ataque de fuerza bruta con el wordlist de la plataforma, no llegaremos a obtener la cookie ni la contraseña de carlos. Por lo que debemos buscar otro vector de ataque.
Pondremos a prueba si la funcionalidad de los comentarios del sitio web valida o sanatizar los comentarios que ingresan los usuario arbitrarios. Para ello ingresaremos un payload XSS basico que generara una ventana emergente en el caso de que esta funcionalidad sea vulnerable a XSS.
Podemos observar que la funcionalidad de Comentarios es vulnerable a XSS. Por lo que cualquier usuario que vea esta post, le aparecera esta ventana emergente con el mensaje Vulnerable.
Ahora cambiaremos el payload XSS para capturar las cookies de los usuarios que tengan una cuenta en el sitio web, y que se hayan autenticado con la funcionalidad Stay Logged in. Ademas, utilizaremos la URL de el servidor web que nos provee la plataforma PortSwigger para observar las cookies capturadas en el registro de acceso del servidor web.
Podemos observar en el registro de acceso del servidor web una solicitud GET con una cookie stay-logged-in.
Ahora decodificaremos el valor de esta cookie para saber si le pertenece al usuario carlos.
Podemos observar que las cookies si le pertenecen al usuario calos. Luego, crackeamos el hash de la contraseña del usuario carlos con John The Ripper.
Ahora que conocemos las credenciales de carlos, nos autenticaremos en el login del sitio web, eliminaremos su cuenta para culminar el laboratorio.