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
hunters entrenando
labs de reportes reales
completaciones
en bounties practicados
Practica JWT en labs reales
Cada lab de JWT replica un reporte real de bug bounty que se pagó. Crea tu cuenta gratis, empieza por la Academy y pasa a los labs cuando quieras.
Sin tarjeta · Academy gratis · cancela cuando quieras