X-JWT
jwt_tool
Toolkit en Python para validar, manipular y falsificar JSON Web Tokens en busca de fallos comunes de firma y claims.
Sitio oficialVolver al catálogo
RESUMEN
jwt_tool (github.com/ticarpi/jwt_tool), con licencia MIT y escrito en Python, es un toolkit construido específicamente en torno a JSON Web Tokens: dado un token capturado, su modo de escaneo (-M pb, playbook scan) lo somete automáticamente a una batería de clases de fallo conocidas — confusión de algoritmo (downgrade de RS256 a HS256), el bypass del algoritmo 'none', secretos HMAC débiles o por defecto vía un modo de cracking integrado, y manipulación de claims como alterar la expiración o campos de rol/permiso — y reporta qué comprobaciones rechaza realmente la lógica de validación del objetivo frente a cuáles acepta en silencio.
Más allá del escaneo automatizado, expone cada técnica individualmente (falsificar un token con una clave elegida, inyectar headers como jku/kid para ataques de confusión de clave, fuzzear valores de claims) para que un hallazgo del escaneo pueda reproducirse y demostrarse como una prueba mínima independiente en lugar de depender del puntaje propio de la herramienta.
CASOS DE USO
Casos de uso en un engagement
- 01
Ejecutar el escaneo automatizado tipo playbook contra un JWT capturado para priorizar qué clases de fallo vale la pena perseguir.
- 02
Intentar una confusión de alg o un downgrade al algoritmo 'none' para ver si el servidor realmente verifica el algoritmo de firma.
- 03
Crackear un secreto HMAC débil o por defecto para falsificar tokens arbitrarios una vez encontrada una coincidencia en la wordlist.
- 04
Manipular claims (expiración, rol, ID de usuario) para probar control de acceso roto reforzado solo en la capa del token.
PRIMEROS PASOS
Con un JWT capturado en mano durante un engagement web, para revisar sistemáticamente su algoritmo de firma, fortaleza del secreto y manejo de claims en busca de fallos comunes.
- Captura un JWT válido emitido por la aplicación objetivo (por ejemplo, de una respuesta de login o un header de auth).
- Instala jwt_tool (git clone más sus requisitos de Python) en la máquina de testing.
- Ejecuta el escaneo automatizado tipo playbook contra el token y el endpoint objetivo para priorizar clases de fallo.
- Sigue cualquier resultado positivo con la técnica específica (crack, forge, tamper) para construir una prueba mínima reproducible.
- Confirma la clave/algoritmo de firma real que acepta el servidor antes de reportar un hallazgo como explotable.
python3 jwt_tool.py <JWT> -t https://target.example.com/api/endpoint -rc "Authorization: Bearer jwttool_test_token" -M pbANTES DE USARLA
Qué revisar antes de lanzarla
Un resultado del escaneo es una pista, no una vulnerabilidad confirmada — confirma siempre la clave/algoritmo de firma real que acepta el servidor antes de reportar confusión de alg o un secreto crackeado como explotable.
El modo de cracking de secretos puede generar un volumen alto de peticiones o uso intensivo de CPU local según el tamaño de la wordlist; confirma los rate limits y la carga autorizada antes de correrlo contra un objetivo en vivo.
Los tokens falsificados con acceso elevado son artefactos muy sensibles — manéjalos y guárdalos según las reglas de manejo de evidencia del engagement, y revoca/rota cualquier secreto real recuperado durante el cracking.