Entrada

JWT Lab 2

JWT Lab 2

Skills

  • JWT authentication bypass via flawed signature verification

Certificaciones

  • eWPT
  • eWPTXv2
  • OSWE
  • BSCP

Descripción

Este laboratorio utiliza un mecanismo basado en JWT para manejar las sesiones. El servidor está mal configurado para aceptar JWTs sin firma. Para resolver el laboratorio, debemos modificar nuestro token de sesión para obtener acceso al panel de administración en /admin y eliminar al usuario carlos. Podemos iniciar sesión en nuestra propia cuenta utilizando las credenciales wiener:peter


Resolución

Al acceder a la web nos sale esto

Pulsamos sobre My account y nos logueamos con credenciales wiener:peter

Recargamos la página y capturamos la petición mediante Burpsuite

Debemos tener instalado la extensión JWT Editor, esta extensión nos avisará si detecta un token

Los JWT pueden ser de dos tipos: JWS (JSON Web Signature) y JWE (JSON Web Encryption). Los JWS se utilizan para garantizar la integridad y la autenticidad de los datos mediante una firma digital, pero no cifran la información, por lo que los datos pueden ser leídos, aunque no modificados sin invalidar la firma. En cambio, los JWE están diseñados para proteger la confidencialidad de los datos mediante cifrado, asegurando que solo las partes autorizadas puedan acceder a la información, pero no garantizan la autenticidad sin mecanismos adicionales

Modificamos el nombre de usuario en el payload

Ejecutamos el ataque none Signing Algorithm y usamos el primer payload, si no funcionara, deberíamos probar con los demás

Hacemos Ctrl + Shift + i y pegamos el nuevo valor en el parámetro session

Recargamos la web con F5 y nos aparece el panel de administrador, lo que quiere decir que nos hemos convertidos en ese usuario

Esto ha sido posible debido a que Los JWTs pueden ser firmados utilizando una variedad de algoritmos diferentes, pero también pueden ser dejados sin firma. En este caso, el parámetro alg se establece en none, lo que indica un JWT denominado unsecured JWT. Debido a los obvios peligros de esto, los servidores generalmente rechazan los tokens sin firma. Sin embargo, dado que este tipo de filtrado depende del análisis de strings, en ocasiones podemos eludir estos filtros utilizando técnicas clásicas de ofuscación, como la capitalización mixta y codificaciones inesperadas

Esta entrada está licenciada bajo CC BY 4.0 por el autor.