
Descripción
This lab contains a logic flaw that exposes an encryption oracle to users. To solve the lab, exploit this flaw to gain access to the admin panel and delete the user carlos
.
You can log in to your own account using the following credentials: wiener:pete
r
Authentication bypass via encryption oracle writeup
Al entrar al laboratorio veremos un blog. Entraremos en ‘My account’ e iniciaremos sesión con el usuario ‘wiener’ y la contraseña ‘peter’. También pulsaremos la nueva opción de este laboratorio ‘Stay logged in’. El servidor nos devolverá la siguiente petición, donde en base a nuestros datos proporcionados nos da la cookie ‘stay-logged-in’:

Ahora crearemos un comentario en un post, y pondremos en el campo de ‘email’ ‘test’. Esto genera dos peticiones. Una de cifrado email -> cookie ‘notification’:

Y otra de descifrado ‘notification’-> Texto:

Llevaremos ambas peticiones al ‘Repeater’ con Ctrl + R o Click derecho -> Send to Repeater. Allí descifraremos nuestra cookie de ‘stay-logged-in’ poniendo su valor en la de ‘notification’. El resultado es el siguiente:

Ahora sabemos que el formato para cifrar es ‘username:timestamp’. Intentaremos cifrar el usuario ‘administrator’ poniendo en el valor de ‘email’ de la petición que cifra, junto con el timestamp de ‘wiener:

La cookie de notification ahora tiene el valor: ‘T18aSFr0uYjSxJ8KmTVO0lPLD7dYgqBLtMqaPujyaoaQbn6y8C2QWzrPYCMV%2b8kCBsnkC1BY0MDDyEyq8IFTRw%3d%3d’.
El problema es que si la pegamos en la cookie de ‘notification’ de la petición que descifra, veremos el siguiente mensaje:

Nótese la diferencia respecto a una cookie válida (como la de sesión que tenemos actualmente):

El servidor ha añadido ‘Invalid email address: ‘ a nuestra cookie en el proceso, por lo que debemos quitárselo, pero al hacer esto la cadena no será múltiplo de 16, por lo que antes la modificaremos:
Primero, poniendo 33 (32 + 1 al empezar notepad a contar por 1) caracteres delante (da igual cuáles, puesto que serán borrados):

Luego añadiendo detrás los suficientes espacios como para que la cadena sea múltiplo de 64 (en este caso no es 65 porque se añadirá automáticamente el fin de línea):

Ciframos esta cadena de caracteres y nos la llevamos al ‘Decoder’. Allí primero decodificaremos de URL y luego de Base64. Luego borraremos las 2 primeras filas (32 huecos) con Click derecho-> Delete selected bytes. Volveremos a codificar a Base 64 y a URL:

Nota: Ahora descifrando la cadena podremos comprobar que es correcta:

Encenderemos el proxy e iniciaremos sesión. Cuando veamos la cookie de ‘stay-logged-in’ la cambiaremos por la nueva generada y borraremos la de sesión:

Al apagar el ‘Proxy’ se completará el inicio de sesión y nos aparecerá en el menú la opción de ‘Admin panel’, donde podremos borrar al usuario ‘carlos’ y acabar este laboratorio:
