En este post vamos a estar resolviendo el laboratorio “JWT authentication bypass via weak signing key”:


Lo primero de todo es iniciar el laboratorio:


Una vez lo iniciamos, nos dirigimos a “My account” e iniciamos sesión con las credenciales que nos dan en la descripción:






Una vez hemos iniciado sesión, ya sea con Burp Suite, las herramientas de desarrollador o como en este caso, la extensión Cookie Editor, podemos ver que se nos ha asignado un JWT:


Podemos decodearlo en la web de jwt.io:


Si nos fijamos en este JWT se está usando el algoritmo HMAC, concretamente el HS256. Esto quiere decir que la firma y su comprobación se hace a través de una clave.
Lo interesante de esto es que es como si tuviésemos el hash de una contraseña, es decir, podemos intentar crackear el “secret” que se ha usado para firmar el JWT. En caso de que lo obtengamos, podremos firmar tokens JWT que sean válidos para el servidor, y, asimismo, podremos editarlos.
Para realizar la fuerza bruta podemos usar la herramienta de jwtear:
- jwtear bruteforce -t <JWT> -l <diccionario>


En este caso, el servidor ha usado la palabra “secret1” para firmar los tokens JWT. Ahora que conocemos la palabra con la que se ha firmado los tokens, podemos intentar editar un JWT a nuestro beneficio y firmarlo usando “secret1”:




Hemos cambiado el usuario de “wiener” por el de “administrator” con el fin de que, en caso de que la firma funcione y, el usuario “administrator” exista, podamos convertirnos en él.
Si ahora cambiamos nuestro JWT por el JWT que acabamos de generar y actualizamos:




Nos convertimos en usuarios administradores :), todo debido a que se ha usado un “secret” débil en la firma de los JWT.
Ya simplemente para finalizar el laboratorio, nos dirigimos al panel de administración y eliminamos al usuario “carlos”:






De esta manera, el laboratorio ya estaría completado:


JWTear no es la única herramienta que se puede usar para hacer fuerza bruta a JWT, buscando un poco podemos encontrar infinidad de ellas:


Asimismo, podemos encontrar diccionarios para realizar fuerza bruta:


SecLists también tiene un diccionario:

