Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
jwt_tool — :snake: Un kit de herramientas para probar, ajustar y descifrar JSON Web Tokens | Kitploit
Herramientas/GitHubGitHub/ticarpi/jwt_tool
Escáneres de VulnerabilidadesSeguridad WebFuzzingCriptografíaCTFPruebas de Penetración
GitHubticarpi/jwt_tool

jwt_tool

🐍 Un kit de herramientas para probar, ajustar y descifrar JSON Web Tokens

Ver Repositorio
6.7k812hace 1 añoRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

El kit de herramientas JSON Web Token v2

jwt_tool.py es un kit de herramientas para validar, forjar, escanear y manipular JWTs (JSON Web Tokens).

jwt_tool version python version

logo

Su funcionalidad incluye:

  • Comprobar la validez de un token
  • Probar exploits conocidos:
    • (CVE-2015-2951) La vulnerabilidad de omisión de firma alg=none
    • (CVE-2016-10555) La vulnerabilidad de discrepancia de clave pública RS/HS256
    • (CVE-2018-0114) Vulnerabilidad de inyección de clave
    • (CVE-2019-20933/CVE-2020-28637) Vulnerabilidad de contraseña en blanco
    • (CVE-2020-28042) Vulnerabilidad de firma nula
    • (CVE-2022-21449) Vulnerabilidad ECDSA Psychic Signature
  • Escaneo de malas configuraciones o debilidades conocidas
  • Fuzzing de valores de claims para provocar comportamientos inesperados
  • Probar la validez de un secreto/archivo de clave/clave pública/clave JWKS
  • Identificar claves débiles mediante un ataque de diccionario de alta velocidad
  • Forjar nuevos contenidos de cabecera y payload del token y crear una nueva firma con la clave o mediante otro método de ataque
  • Manipulación de marcas de tiempo (timestamps)
  • Generación de claves RSA y ECDSA, y reconstrucción (a partir de archivos JWKS)
  • Limitación de velocidad (rate-limiting) para todos los ataques
  • ¡...y mucho más!

Público

Esta herramienta está escrita para pentesters, que necesitan comprobar la fortaleza de los tokens en uso y su susceptibilidad a ataques conocidos. Hay disponibles varias opciones de manipulación, firma y verificación para ayudar a profundizar en las posibles debilidades presentes en algunas librerías JWT.
También ha tenido éxito entre los participantes de CTF, ya que los CTFs parecen estar muy interesados en los JWTs actualmente.
También puede ser útil para desarrolladores que usan JWTs en sus proyectos, pero quieren probar la estabilidad y las vulnerabilidades conocidas al usar tokens forjados.


Requisitos

Esta herramienta está escrita de forma nativa en Python 3 (versión 3.6+) usando las librerías comunes; sin embargo, varias funciones criptográficas (y el aspecto/legibilidad general) requieren la instalación de unas pocas librerías comunes de Python.
(Una versión anterior de esta herramienta para Python 2.x está disponible en la rama legacy para quien la necesite, aunque ya no recibe soporte ni actualizaciones)


Instalación

Docker

El uso preferente de jwt_tool es con la imagen docker oficial de jwt_tool alojada en Dockerhub
El comando base para ejecutarlo es el siguiente:
Comando base para ejecutar jwt_tool:
docker run -it --network "host" --rm -v "${PWD}:/tmp" -v "${HOME}/.jwt_tool:/root/.jwt_tool" ticarpi/jwt_tool

Usando el comando anterior puedes añadir cualquier otro argumento con normalidad.
Ten en cuenta que los archivos locales de tu directorio de trabajo actual se asignarán al directorio /tmp del contenedor docker, por lo que puedes usarlos empleando esa ruta absoluta en tus argumentos.
es decir,
/tmp/localfile.txt

Instalación manual

La instalación consiste simplemente en descargar el archivo jwt_tool.py (o hacer git clone del repositorio).
(chmod al archivo también si quieres añadirlo a tu $PATH y ejecutarlo desde cualquier lugar.)

$ git clone https://github.com/ticarpi/jwt_tool
$ python3 -m pip install -r requirements.txt

En la primera ejecución, la herramienta generará un archivo de configuración, algunos archivos de utilidad, un archivo de log y un conjunto de claves públicas y privadas en varios formatos.

Configuraciones personalizadas

  • Para aprovechar al máximo las opciones de escaneo, se recomienda encarecidamente copiar el archivo JWKS generado personalizado a algún lugar al que se pueda acceder de forma remota mediante una URL. Esta dirección debe almacenarse en jwtconf.ini como el valor "jwkloc".
  • Para capturar interacciones con servicios externos - como consultas DNS y peticiones HTTP - coloca tu dirección única para Burp Collaborator (u otras herramientas alternativas como RequestBin) en el archivo de configuración como el valor "httplistener".
    Revisa las demás opciones del archivo de configuración para personalizar tu experiencia.

Error de color en Windows

Para arreglar los colores rotos en cmd/Powershell de Windows: descomenta las dos líneas siguientes en jwt_tool.py (elimina el "# " del principio de cada línea)
También necesitarás instalar colorama: python3 -m pip install colorama

root@kitploit:~
# import colorama
# colorama.init()

Uso

El primer argumento debe ser el propio JWT (a menos que se proporcione en un valor de cabecera o cookie). Si no se proporcionan argumentos adicionales, se mostrarán los valores decodificados del token para su revisión.
$ python3 jwt_tool.py <JWT>
o el comando base de Docker:
$ docker run -it --network "host" --rm -v "${PWD}:/tmp" -v "${HOME}/.jwt_tool:/root/.jwt_tool" ticarpi/jwt_tool

El kit de herramientas validará el token y listará los valores de la cabecera y el payload.

Argumentos adicionales

Los muchos argumentos adicionales te llevarán directamente a la función apropiada y te devolverán un token listo para usar en tus pruebas.
Por ejemplo, para manipular el token existente ejecuta lo siguiente:
$ python3 jwt_tool.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.aqNCvShlNT9jBFTPBpHDbt2gBB1MyHiisSDdp8SQvgw -T

Muchas opciones necesitan valores adicionales para configurarse.
Por ejemplo, para ejecutar un tipo concreto de exploit debes elegir la opción eXploit (-X) y seleccionar la vulnerabilidad (aquí usando "a" para el exploit alg:none):
$ python3 jwt_tool.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.aqNCvShlNT9jBFTPBpHDbt2gBB1MyHiisSDdp8SQvgw -X a

Parámetros extra

Algunas opciones, como verificar tokens, requieren que se proporcionen parámetros/archivos adicionales (aquí se proporciona la clave pública en formato PEM):
$ python3 jwt_tool.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.aqNCvShlNT9jBFTPBpHDbt2gBB1MyHiisSDdp8SQvgw -V -pk public.pem

Enviar tokens a una aplicación web

Todos los modos permiten ahora enviar el token directamente a una aplicación.
Debes especificar:

  • URL de destino (-t)
  • en lugar de una URL de destino, puedes poner tu petición HTTP en un archivo y referenciarlo con -r. Esto rellena AUTOMÁTICAMENTE cabeceras, cookies y datos POST, por lo que es la opción recomendada
  • una cabecera de petición (-rh) o cookies de petición (-rc) que la aplicación necesite (al menos una debe contener el token)
  • (opcional) cualquier dato POST (cuando la petición sea POST)
  • (opcional) cualquier opción adicional de jwt_tool, como modos u opciones de manipulación/inyección
  • (opcional) un valor canario (-cv) - un valor de texto que esperas ver en un uso exitoso del token (p. ej. "Welcome, ticarpi")
    Un ejemplo de petición podría ser así (usando el modo de escaneo de errores forzados):
    $ python3 jwt_tool.py -t https://www.ticarpi.com/ -rc "jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.bsSwqj2c2uI9n7-ajmi3ixVGhPUiY7jO9SUn9dm15Po;anothercookie=test" -rh "Origin: null" -cv "Welcome" -M er

Se muestran varias respuestas de la petición:

  • Código de respuesta
  • Tamaño de la respuesta
  • ID único de seguimiento de la petición (para usar con el registro/logging)
  • Modo/opciones utilizados

Flujo de trabajo común

Aquí tienes un repaso rápido a una evaluación básica de una implementación JWT. Si no hay éxito con estas opciones, profundiza en otros modos y opciones para buscar nuevas vulnerabilidades (¡o zero-days!).

Reconocimiento:

Lee el valor del token para hacerte una idea de los claims/valores esperados en la aplicación:
$ python3 jwt_tool.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.aqNCvShlNT9jBFTPBpHDbt2gBB1MyHiisSDdp8SQvgw

Escaneo:

Ejecuta un Playbook Scan usando el token proporcionado directamente contra la aplicación para buscar malas configuraciones comunes:
$ python3 jwt_tool.py -t https://www.ticarpi.com/ -rc "jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.bsSwqj2c2uI9n7-ajmi3ixVGhPUiY7jO9SUn9dm15Po;anothercookie=test" -M pb

Explotación:

Si se encuentra alguna vulnerabilidad con éxito, cambia los claims relevantes para intentar explotarla (aquí usando el exploit Inject JWKS e inyectando un nuevo nombre de usuario):
$ python3 jwt_tool.py -t https://www.ticarpi.com/ -rc "jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.bsSwqj2c2uI9n7-ajmi3ixVGhPUiY7jO9SUn9dm15Po;anothercookie=test" -X i -I -pc name -pv admin

Fuzzing:

Profundiza probando valores y claims inesperados para identificar comportamientos inesperados de la aplicación, o ejecuta ataques contra la lógica de programación o el procesamiento de tokens:
$ python3 jwt_tool.py -t https://www.ticarpi.com/ -rc "jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.bsSwqj2c2uI9n7-ajmi3ixVGhPUiY7jO9SUn9dm15Po;anothercookie=test" -I -hc kid -hv custom_sqli_vectors.txt

Revisión:

Revisa cualquier explotación exitosa consultando los logs para leer más datos sobre la petición y :
$ python3 jwt_tool.py -t https://www.ticarpi.com/ -rc "jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.bsSwqj2c2uI9n7-ajmi3ixVGhPUiY7jO9SUn9dm15Po;anothercookie=test" -X i -I -pc name -pv admin


Ayuda

Para obtener una lista de opciones, ejecuta la función de uso: Algunas opciones, como verificar tokens, requieren que se proporcionen parámetros/archivos adicionales:
$ python3 jwt_tool.py -h

Puedes encontrar una guía de usuario más detallada en la página wiki.


JWT Attack Playbook - ¡nuevo contenido wiki!

playbook_logo

Dirígete al JWT Attack Playbook para ver un repaso detallado de qué son los JWTs, qué hacen, y un flujo de trabajo completo de cómo probarlos a fondo en busca de vulnerabilidades, debilidades comunes y errores de codificación no intencionados.


Consejos

Regex para encontrar JWTs en Burp Search
(asegúrate de que las opciones 'Case sensitive' y 'Regex' están marcadas)
[= ]eyJ[A-Za-z0-9_-]*\.[A-Za-z0-9._-]* - versión JWT url-safe
[= ]eyJ[A-Za-z0-9_\/+-]*\.[A-Za-z0-9._\/+-]* - todas las versiones JWT (mayor posibilidad de falsos positivos)


Lecturas adicionales

  • JWT Attack Playbook (https://github.com/ticarpi/jwt_tool/wiki) - para una metodología exhaustiva de prueba de JWTs

  • Una gran introducción a los JWTs - https://jwt.io/introduction/

  • Gran parte de la inspiración inicial de esta herramienta proviene de las vulnerabilidades descubiertas por Tim McLean.
    Mira su blog sobre debilidades de JWT aquí: https://auth0.com/blog/critical-vulnerabilities-in-json-web-token-libraries/

  • Pentesterlab (https://www.pentesterlab.com) ofrece un montón de ejercicios para probar vulnerabilidades JWT. Recomiendo encarecidamente una suscripción PRO si estás interesado en el pentesting de aplicaciones web.

    TEN EN CUENTA: Este kit de herramientas resolverá la mayoría de los ejercicios JWT de Pentesterlab en unos segundos si se usa correctamente; sin embargo, te animo encarecidamente a que trabajes estos ejercicios por ti mismo, descubriendo la estructura y las debilidades. Después de todo, todo se trata de aprender...

Descargar herramienta