Nuevos labs cada semana — Accede a todos desde 7,99€/mes
Ver labs →Labs de JWT
JSON Web Token (JWT) Attacks
¿Qué es JWT?
Los ataques a JSON Web Tokens explotan implementaciones inseguras de firma y verificación. Desde aceptar alg=none hasta confusión de algoritmo RS256→HS256, secretos débiles y kid injection: cualquiera de ellos permite forjar tokens y suplantar a cualquier usuario, incluido admin.
¿Por qué practicar JWT?
El JWT es el estándar de facto para sesiones en APIs y SPAs modernas, y los devs siguen tropezando con los mismos fallos de firma. Un JWT forjable es account takeover directo de cualquier cuenta, incluido admin: P1 inmediato con bounties de $2,000-$30,000.
¿Qué aprenderás con los labs de JWT?
Aprenderás a auditar el header y el payload, forzar alg=none, ejecutar key confusion firmando con la clave pública como secreto HMAC, crackear secretos HS256 débiles con hashcat, e inyectar el campo kid/jku/x5u para que el server valide con una clave que tú controlas.
Tipos de JWT que cubrimos
- alg=none
Cambias el header a {"alg":"none"} y eliminas la firma. Librerías mal configuradas aceptan el token sin verificar.
- Algorithm confusion (RS256→HS256)
El server espera RS256 (asimétrico) pero acepta HS256. Firmas el token con la clave pública (conocida) como secreto HMAC.
- Secreto HS256 débil
Si el secreto es corto/común, lo crackeas offline con hashcat y firmas tokens arbitrarios elevando tu rol a admin.
- kid / jku / x5u injection
El header kid/jku/x5u indica de dónde sacar la clave. Inyectas un path, SQL o una URL tuya para controlar la clave de verificación.
¿Cómo encontrar y explotar JWT?
Playbook práctico — del recon a la prueba de concepto.
- 1
Decodificar el token
Separa los tres segmentos y decodifica header y payload en base64url. Mira el algoritmo, el campo kid y claims como role o user_id.
echo $JWT | cut -d. -f1 | base64 -d → {"alg":"RS256","kid":"1"} - 2
Probar alg=none
Cambia el algoritmo a none, edita el payload (p. ej. role=admin) y manda el token sin firma. Librerías vulnerables lo aceptan.
header {"alg":"none","typ":"JWT"} · payload {"user":"admin"} · firma vacía: header.payload. - 3
Algorithm confusion RS256→HS256
Si conoces la clave pública RSA, firma un token HS256 usándola como secreto HMAC. El server que verifica con la pública lo da por válido.
jwt_tool $JWT -X k -pk public.pem (confusion attack) - 4
Crackear secretos HS256 débiles
Vuelca el JWT a hashcat y prueba un diccionario. Un secreto crackeado te deja firmar cualquier token.
hashcat -a 0 -m 16500 jwt.txt rockyou.txt - 5
Inyectar kid/jku
Manipula kid para apuntar a un fichero de clave conocida (/dev/null → secreto vacío) o jku/x5u a un JWKS que tú alojas.
{"alg":"HS256","kid":"../../../../dev/null"} → firma con secreto vacío
Aprende la teoría
Academy: Authentication Bypass
Cargando labs...
Ver en catálogo completo →Preguntas frecuentes
¿Qué es un ataque a JWT?
Es la explotación de fallos en la firma o verificación de un JSON Web Token. Si el servidor no valida correctamente la firma (alg=none, confusión de algoritmo, secreto débil, kid injection), un atacante puede forjar tokens y suplantar a cualquier usuario.
¿Cómo se explota un JWT inseguro?
Se decodifica el token, se altera el payload (por ejemplo role=admin) y se logra que el servidor acepte la firma: poniendo alg=none, firmando con la clave pública como secreto HMAC (RS256→HS256), crackeando un secreto débil o inyectando kid/jku hacia una clave controlada.
¿Cómo encontrar fallos JWT en bug bounty?
Decodifica cada token, mira el header (alg, kid, jku) y prueba alg=none, la confusión de algoritmo y un crack del secreto con hashcat. Herramientas como jwt_tool automatizan el barrido de estas técnicas contra el endpoint.
¿Cómo prevenir ataques a JWT?
Fija el algoritmo permitido en el servidor (no leas alg del token), usa secretos largos y aleatorios o claves asimétricas bien gestionadas, valida estrictamente kid/jku contra una allowlist, y considera tokens opacos con sesión server-side para datos sensibles.
¿Diferencia entre un ataque a JWT y un Authentication Bypass genérico?
El ataque a JWT es una sub-categoría concreta del Authentication Bypass centrada en la firma de tokens. El Authentication Bypass es el paraguas que también incluye password reset poisoning, fallos de OAuth o bypass de MFA.
Otras categorías relacionadas
Empieza con labs de JWT
Practica JSON Web Token (JWT) Attacks con labs basados en reportes reales. En español. Desde 7,99€/mes.
Empieza con el primer lab de JWT