CRITICAL

JWT Attacks — alg:none, secreto débil, confusión de algoritmos

Tres ataques sobre tokens JWT mal configurados: algoritmo none sin firma, secreto predecible crackeable offline, y confusión RS256→HS256

Ejemplos de explotación:

Ver documentación del lab

Descripción de los tres ataques disponibles y sus parámetros

/api/lab/jwt
Generar JWT con secreto débil (role=user)

El servidor firma con secreto='secret'. Crackeable con hashcat -m 16500 en segundos

/api/lab/jwt?action=generate&role=user
Generar JWT con role=admin (escalada de privilegios)

Con el secreto conocido cualquiera puede firmar tokens con el rol que quiera

/api/lab/jwt?action=generate&role=admin
Forjar token admin con alg:none

Crea un token sin firma con payload admin — el servidor lo acepta

/api/lab/jwt?action=craft-none
Verificar token legítimo (HS256)

El servidor acepta este token firmado con secreto débil

/api/lab/jwt?action=verify&token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwiZW1haWwiOiJ1c2VyQGFpdGFuYS5jbG91ZCIsInJvbGUiOiJ1c2VyIiwiaWF0IjoxNzAwMDAwMDAwfQ.fake
Verificar token con alg:none (bypass firma)

Token con alg:none sin firma — aceptado por el servidor vulnerable

/api/lab/jwt?action=verify&token=eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJzdWIiOiIxIiwiZW1haWwiOiJhZG1pbkBhaXRhbmEuY2xvdWQiLCJyb2xlIjoiYWRtaW4ifQ.
Hashcat — cracking del secreto (info)

Comando para crackear el secreto: hashcat -a 0 -m 16500 <token> /usr/share/wordlists/rockyou.txt

/api/lab/jwt?action=generate
Confusión de algoritmos (RS256 → HS256)

Si el servidor usa RS256, firmar con HS256 usando la clave pública como secreto HMAC

/api/lab/jwt?action=generate&role=admin

Vulnerabilidad Crítica

Tres vulnerabilidades JWT en un solo lab: (1) alg:none — el servidor acepta tokens sin firma si el header indica algoritmo 'none'; (2) Secreto débil 'secret' — cualquier atacante puede obtener el secreto con hashcat -m 16500 en segundos y luego forjar tokens arbitrarios; (3) Confusión de algoritmos — si el servidor soporta RS256 y HS256, se puede firmar un token HS256 usando la clave pública RSA (conocida) como secreto HMAC. OWASP A02:2021 — CVSS 9.1.

Esta aplicación es vulnerable por diseño - Solo para propósitos educativos

© 2025 Aitana Security Lab