Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
jwt_tool — :snake: Un kit pour tester, ajuster et craquer les JSON Web Tokens | Kitploit
Outils/GitHubGitHub/ticarpi/jwt_tool
Scanners de VulnérabilitésTests de Sécurité des APISécurité WebFuzzingCryptographieCTFTests d'IntrusionSécurité des APITop en Sécurité des API n°8Top en Tests de Sécurité des API n°8
6.7k812111il y a 1 anVérifié par Kitploit
GitHubticarpi/jwt_tool

jwt_tool

🐍 Un kit pour tester, ajuster et craquer les JSON Web Tokens

Voir le dépôt

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Le kit d'outils JSON Web Token v2

jwt_tool.py est une boîte à outils pour valider, forger, scanner et falsifier les JWT (JSON Web Tokens).

jwt_tool version python version

logo

Ses fonctionnalités incluent :

  • Vérifier la validité d'un jeton
  • Tester les exploits connus :
    • (CVE-2015-2951) La vulnérabilité de contournement de signature alg=none
    • (CVE-2016-10555) La vulnérabilité de non-correspondance de clé publique RS/HS256
    • (CVE-2018-0114) La vulnérabilité d'injection de clé
    • (CVE-2019-20933/CVE-2020-28637) La vulnérabilité de mot de passe vide
    • (CVE-2020-28042) La vulnérabilité de signature nulle
    • (CVE-2022-21449) La vulnérabilité ECDSA de signature psychique
  • Rechercher des erreurs de configuration ou des faiblesses connues
  • Fuzzer les valeurs des claims pour provoquer des comportements inattendus
  • Tester la validité d'un secret/fichier de clé/clé publique/clé JWKS
  • Identifier les clés faibles via une attaque par dictionnaire à haute vitesse
  • Forger de nouveaux contenus d'en-tête et de payload de jeton et créer une nouvelle signature avec la clé ou via une autre méthode d'attaque
  • Altération des horodatages
  • Génération de clés RSA et ECDSA, et reconstruction (à partir de fichiers JWKS)
  • Limitation de débit pour toutes les attaques
  • ...et bien plus encore !

Public visé

Cet outil est conçu pour les pentesteurs, qui doivent vérifier la robustesse des jetons utilisés et leur susceptibilité aux attaques connues. Une gamme d'options d'altération, de signature et de vérification est disponible pour approfondir les faiblesses potentielles présentes dans certaines bibliothèques JWT.
Il a également été utile aux participants de CTF - car les CTF semblent friands de JWT actuellement.
Il peut aussi être utile aux développeurs qui utilisent des JWT dans leurs projets et souhaitent tester la stabilité et les vulnérabilités connues lors de l'utilisation de jetons forgés.


Prérequis

Cet outil est écrit nativement en Python 3 (version 3.6+) et utilise les bibliothèques courantes. Cependant, diverses fonctions cryptographiques (ainsi que le côté esthétique/la lisibilité en général) nécessitent l'installation de quelques bibliothèques Python courantes.
(Une version plus ancienne de cet outil en Python 2.x est disponible sur la branche legacy pour ceux qui en ont besoin, bien qu'elle ne soit plus prise en charge ni mise à jour)


Installation

Docker

L'utilisation préférée de jwt_tool se fait avec l'image docker jwt_tool hébergée sur Dockerhub.
La commande de base pour l'exécuter est la suivante :
Commande de base pour exécuter jwt_tool :
docker run -it --network "host" --rm -v "${PWD}:/tmp" -v "${HOME}/.jwt_tool:/root/.jwt_tool" ticarpi/jwt_tool

En utilisant la commande ci-dessus, vous pouvez ajouter n'importe quel autre argument comme d'habitude.
Notez que les fichiers locaux de votre répertoire de travail courant seront mappés dans le répertoire /tmp du conteneur docker, vous pouvez donc les utiliser via ce chemin absolu dans vos arguments.
c.-à-d.
/tmp/localfile.txt

Installation manuelle

L'installation consiste simplement à télécharger le fichier jwt_tool.py (ou à faire git clone du dépôt).
(Ajoutez aussi chmod au fichier si vous voulez l'ajouter à votre $PATH et l'appeler depuis n'importe où.)

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

Au premier lancement, l'outil générera un fichier de configuration, des fichiers utilitaires, un fichier journal, et un ensemble de clés publiques et privées dans différents formats.

Configurations personnalisées

  • Pour tirer le meilleur parti des options de scan, il est fortement conseillé de copier le fichier JWKS généré sur mesure vers un emplacement accessible à distance via une URL. Cette adresse doit ensuite être stockée dans jwtconf.ini comme valeur « jwkloc ».
  • Afin de capturer les interactions avec des services externes - comme les requêtes DNS et HTTP - placez votre adresse unique pour Burp Collaborator (ou d'autres outils alternatifs tels que RequestBin) dans le fichier de configuration comme valeur « httplistener ».
    Passez en revue les autres options du fichier de configuration pour personnaliser votre expérience.

Bug de couleurs sous Windows

Pour corriger les couleurs cassées sous Windows cmd/PowerShell : décommentez les deux lignes ci-dessous dans jwt_tool.py (retirez le « # » au début de chaque ligne)
Vous devrez également installer colorama : python3 -m pip install colorama

# import colorama
# colorama.init()

Utilisation

Le premier argument doit être le JWT lui-même (sauf si vous le fournissez dans un en-tête ou une valeur de cookie). Ne fournir aucun argument supplémentaire affichera les valeurs décodées du jeton pour examen.
$ python3 jwt_tool.py <JWT>
ou la commande de base Docker :
$ docker run -it --network "host" --rm -v "${PWD}:/tmp" -v "${HOME}/.jwt_tool:/root/.jwt_tool" ticarpi/jwt_tool

La boîte à outils validera le jeton et listera les valeurs de l'en-tête et du payload.

Arguments supplémentaires

Les nombreux arguments supplémentaires vous mènent directement à la fonction appropriée et vous renvoient un jeton prêt à l'utiliser dans vos tests.
Par exemple, pour altérer le jeton existant, exécutez la commande suivante :
$ python3 jwt_tool.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.aqNCvShlNT9jBFTPBpHDbt2gBB1MyHiisSDdp8SQvgw -T

De nombreuses options nécessitent des valeurs supplémentaires pour être configurées.
Par exemple, pour exécuter un type d'exploit particulier, vous devez choisir l'option eXploit (-X) et sélectionner la vulnérabilité (ici en utilisant « a » pour l'exploit alg:none) :
$ python3 jwt_tool.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.aqNCvShlNT9jBFTPBpHDbt2gBB1MyHiisSDdp8SQvgw -X a

Paramètres complémentaires

Certaines options, comme la vérification des jetons, nécessitent la fourniture de paramètres/fichiers supplémentaires (ici, la clé publique au format PEM) :
$ python3 jwt_tool.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.aqNCvShlNT9jBFTPBpHDbt2gBB1MyHiisSDdp8SQvgw -V -pk public.pem

Envoi de jetons à une application web

Tous les modes permettent désormais d'envoyer le jeton directement à une application.
Vous devez spécifier :

  • l'URL cible (-t)
  • au lieu d'une URL cible, vous pouvez placer votre requête HTTP dans un fichier et référencer ce fichier avec -r. Cela remplit AUTOMATIQUEMENT les en-têtes, cookies et données POST, c'est donc l'option recommandée
  • un en-tête de requête (-rh) ou des cookies de requête (-rc) nécessaires à l'application (au moins l'un d'eux doit contenir le jeton)
  • (facultatif) toutes données POST (lorsque la requête est un POST)
  • (facultatif) toutes autres options jwt_tool, comme les modes ou les options d'altération/injection
  • (facultatif) une valeur canari (-cv) - une valeur textuelle que vous vous attendez à voir en cas d'utilisation réussie du jeton (par exemple « Welcome, ticarpi »)
    Un exemple de requête pourrait ressembler à ceci (en utilisant le mode de scan des erreurs forcées) :
    $ python3 jwt_tool.py -t https://www.ticarpi.com/ -rc "jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.bsSwqj2c2uI9n7-ajmi3ixVGhPUiY7jO9SUn9dm15Po;anothercookie=test" -rh "Origin: null" -cv "Welcome" -M er
Télécharger l’outil