PicoGym Exclusive - JAuth
September 2022
Descripción
Most web application developers use third party components without testing their security.
Can you become an admin?
You can login as test with the password Test123! to get started.
Solución
Ingresamos las credenciales que se nos indica en la descripción e iniciamos sesión.
Nuestro objetivo es ingresar como admin.
Mientras tenemos sesión iniciada como el usuario test abrimos las herramientos de desarrollador.
Vamos a la pestaña Storage y notamos lo que parece un JWT.
Nos dirigimos a la página jwt.io y pegamos el valor de la cookie.
Buscamos vulnerabilidades comunes de JWT, y nos encontramos con una vulnerabilidad donde el jwt permite el algoritmo None
. Esta vulnerabilidad nos permite cambiar el algoritmo que está usando el JWT (HS256 en este caso) por el algoritmo None
, y así eliminar la necesidad de un secreto.
Copiamos el valor del header.
Y lo guardamos en un archivo con el siguiente comando:
echo -n el_valor_del_header | base64 -d > header.txt
Abrimos el archivo con cualquier editor de texto.
Y cambiamos el valor del algoritmo por none
.
Volvemos a la página y copiamos el valor del payload que en este caso es de color rosado.
Lo guardamos en un archivo con el siguiente comando:
echo -n el_valor_del_payload | base64 -d > payload
Abrimos el archivo en cualquier editor de texto
Y modificamos el rol de user
a admin
.
Ahora transformamos el header a base64 con el siguiente comando.
cat header.txt | base64
Copiamos el resultado y lo pegamos en un archivo nuevo.
Hacemos lo mismo con el archivo payload.
cat payload | base64
Separamos por un punto y pegamos el valor del payload.
Borramos los saltos de línea para que todo forme una sola línea.
Borramos los signos de igual =
y agregamos un punto al final .
.
Guardamos el archivo y copiamos el resultado.
Volvemos a la página del reto.
Borramos el valor de la cookie.
Y pegamos la nuestra.
Recargamos la página y obtenemos la flag.
Flag
picoCTF{succ3ss_@u7h3nt1c@710n_72bf8bd5}