Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
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ésSécurité WebFuzzingCryptographieCTFTests d'Intrusion
GitHubticarpi/jwt_tool

jwt_tool

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

Voir le dépôt
6.7k812il y a 1 anVérifié par Kitploit

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

root@kitploit:~
# 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

Différentes réponses à la requête sont affichées :

  • Code de réponse
  • Taille de la réponse
  • Identifiant unique de suivi de requête (pour une utilisation avec la journalisation)
  • Mode/options utilisés

Workflow courant

Voici un aperçu rapide d'une évaluation de base d'une implémentation JWT. Si ces options ne fonctionnent pas, creusez plus profondément dans les autres modes et options pour chasser de nouvelles vulnérabilités (ou des zero-days !).

Reconnaissance :

Lisez la valeur du jeton pour avoir une idée des claims/valeurs attendus par l'application :
$ python3 jwt_tool.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.aqNCvShlNT9jBFTPBpHDbt2gBB1MyHiisSDdp8SQvgw

Scan :

Lancez un Playbook Scan en utilisant le jeton fourni directement contre l'application pour rechercher les erreurs de configuration courantes :
$ python3 jwt_tool.py -t https://www.ticarpi.com/ -rc "jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.bsSwqj2c2uI9n7-ajmi3ixVGhPUiY7jO9SUn9dm15Po;anothercookie=test" -M pb

Exploitation :

Si des vulnérabilités exploitables sont trouvées, modifiez les claims pertinents pour tenter de les exploiter (ici en utilisant l'exploit Inject JWKS et en injectant un nouveau nom d'utilisateur) :
$ 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 :

Creusez plus loin en testant des valeurs et des claims inattendus pour identifier des comportements applicatifs inattendus, ou lancez des attaques sur la logique de programmation ou le traitement des jetons :
$ 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

Revue :

Examinez toute exploitation réussie en interrogeant les journaux pour en savoir plus sur la requête et :
$ python3 jwt_tool.py -t https://www.ticarpi.com/ -rc "jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.bsSwqj2c2uI9n7-ajmi3ixVGhPUiY7jO9SUn9dm15Po;anothercookie=test" -X i -I -pc name -pv admin


Aide

Pour obtenir la liste des options, appelez la fonction d'utilisation : Certaines options, comme la vérification des jetons, nécessitent la fourniture de paramètres/fichiers supplémentaires :
$ python3 jwt_tool.py -h

Un guide utilisateur plus détaillé est disponible sur la page wiki.


JWT Attack Playbook - nouveau contenu wiki !

playbook_logo

Rendez-vous sur le JWT Attack Playbook pour un aperçu détaillé de ce que sont les JWT, ce qu'ils font, et un workflow complet pour les tester en profondeur à la recherche de vulnérabilités, de faiblesses courantes et d'erreurs de codage involontaires.


Astuces

Regex pour trouver des JWT dans la recherche Burp
(assurez-vous que les options « Case sensitive » et « Regex » sont cochées)
[= ]eyJ[A-Za-z0-9_-]*\.[A-Za-z0-9._-]* - version JWT compatible URL
[= ]eyJ[A-Za-z0-9_\/+-]*\.[A-Za-z0-9._\/+-]* - toutes les versions JWT (probabilité plus élevée de faux positifs)


Lectures complémentaires

  • JWT Attack Playbook (https://github.com/ticarpi/jwt_tool/wiki) - pour une méthodologie complète de test des JWT

  • Une excellente introduction aux JWT - https://jwt.io/introduction/

  • Une grande partie de l'inspiration initiale de cet outil provient des vulnérabilités découvertes par Tim McLean.
    Consultez son blog sur les faiblesses des JWT ici : https://auth0.com/blog/critical-vulnerabilities-in-json-web-token-libraries/

  • Tout un ensemble d'exercices pour tester les vulnérabilités JWT est fourni par Pentesterlab (https://www.pentesterlab.com). Je recommande vivement un abonnement PRO si vous vous intéressez au pentest d'applications web.

    VEUILLEZ NOTER : Cette boîte à outils résoudra la plupart des exercices JWT de Pentesterlab en quelques secondes si elle est utilisée correctement, mais je vous encourage fortement à faire ces exercices vous-même, en comprenant la structure et les faiblesses. Après tout, l'important est d'apprendre...

Télécharger l’outil