
Toolkit per attacchi a JSON Web Token
Kit di strumenti per l'hacking dei JSON Web Token
Un kit di strumenti ad alte prestazioni per testare, analizzare e attaccare i JSON Web Token.
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
Puoi decodificare sia JWT normali che compressi con DEFLATE. Lo strumento rileva e decomprime automaticamente i token compressi.
jwt-hack decode eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0In0.CHANGED
jwt-hack decode COMPRESSED_JWT_TOKEN
Decodifica i token JWE (JSON Web Encryption) per analizzarne la struttura. Lo strumento rileva automaticamente il formato JWE (5 parti) e mostra i dettagli di crittografia.
# Decodifica la struttura del token JWE
jwt-hack decode eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIn0..ZHVtbXlfaXZfMTIzNDU2.eyJ0ZXN0IjoiandlIn0.ZHVtbXlfdGFn
# Mostra header JWE, chiave crittografata, IV, testo cifrato e tag di autenticazione
jwt-hack encode '{"sub":"1234"}' --secret=your-secret
Puoi usare l'opzione --compress per applicare la compressione DEFLATE al payload del JWT.
jwt-hack encode '{"sub":"1234"}' --secret=your-secret --compress
# Con chiave privata
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
Crea token JWE (JSON Web Encryption) per testare scenari JWT crittografati.
# Codifica JWE di base
jwt-hack encode '{"sub":"1234", "data":"encrypted"}' --jwe --secret=your-secret
# I token JWE sono crittografati e possono essere decrittografati solo con la chiave corretta
jwt-hack encode '{"sensitive":"data"}' --jwe
Controlla se la firma di un JWT è valida utilizzando il segreto o la chiave forniti.
# Con segreto (algoritmi HMAC come HS256, HS384, HS512)
jwt-hack verify YOUR_JWT_TOKEN_HERE --secret=your-256-bit-secret
# Con chiave privata (per algoritmi asimmetrici come RS256, ES256, EdDSA)
jwt-hack verify YOUR_JWT_TOKEN_HERE --private-key path/to/your/RS256_private.key
Gli attacchi a dizionario e a forza bruta supportano anche JWT compressi con DEFLATE.
# Attacco a dizionario
jwt-hack crack -w wordlist.txt JWT_TOKEN
jwt-hack crack -w wordlist.txt COMPRESSED_JWT_TOKEN
# Attacco a forza bruta
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
Scansiona automaticamente i token JWT per problemi di sicurezza e vulnerabilità comuni.
# Scansione completa inclusa rilevazione di segreti deboli e generazione di payload
jwt-hack scan JWT_TOKEN
# Salta il cracking dei segreti per risultati più rapidi
jwt-hack scan JWT_TOKEN --skip-crack
# Salta la generazione dei payload
jwt-hack scan JWT_TOKEN --skip-payloads
# Usa una wordlist personalizzata per la rilevazione di segreti deboli
jwt-hack scan JWT_TOKEN -w custom_wordlist.txt
# Limita i tentativi di test dei segreti
jwt-hack scan JWT_TOKEN --max-crack-attempts 50
Il comando di scansione controlla:
Avvia un'API REST locale per automazione e integrazioni. Per richiedere l'autenticazione, usa --api-key e includi X-API-KEY nelle richieste.
# Avvia su localhost:3000 con protezione tramite API key
jwt-hack server --api-key your-api-key
# Esempio di richiesta (deve includere X-API-KEY quando è impostato --api-key)
curl -s http://127.0.0.1:3000/health -H 'X-API-KEY: your-api-key'
jwt-hack può essere eseguito come server MCP, consentendo ai modelli AI di interagire con le funzionalità JWT tramite un protocollo standardizzato.
# Avvia il server MCP (comunica tramite stdio)
jwt-hack mcp
Il server MCP espone i seguenti strumenti:
Il server MCP è progettato per essere utilizzato da modelli AI e client MCP. Ogni strumento accetta parametri JSON e restituisce risposte strutturate.
Strumento Decode:
{
"name": "decode",
"arguments": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
}
Strumento Encode:
{
"name": "encode",
"arguments": {
"json": "{\"sub\":\"1234\",\"name\":\"test\"}",
"secret": "mysecret",
"algorithm": "HS256"
}
}
Puoi collegare il server MCP di jwt-hack a client MCP popolari. Assicurati che il binario jwt-hack sia sul tuo sistema e accessibile dal client.
VSCode
{
"servers": {
"jwt-hack": {
"type": "stdio",
"command": "jwt-hack",
"args": [
"mcp"
]
}
},
"inputs": []
}
Claude Desktop
{
"mcpServers": {
"jwt-hack": {
"command": "jwt-hack",
"args": ["mcp"],
"env": {}
}
}
}
| Algoritmo | Descrizione |
|---|---|
| A128GCM | AES-GCM con chiave a 128 bit |
| A256GCM | AES-GCM con chiave a 256 bit |
| Algoritmo | Descrizione |
|---|---|
| dir | Uso diretto della chiave simmetrica condivisa |
Supporto compressione DEFLATE Il kit di strumenti
jwt-hacksupporta la compressione DEFLATE per i JWT.
- Usa l'opzione
--compressconencodeper generare JWT compressi.- Le modalità
decodeecrackrilevano e gestiscono automaticamente i JWT compressi.
Urx è un progetto open-source realizzato con ❤️ se vuoi contribuire a questo progetto, consulta CONTRIBUTING.md e invia una Pull-Request con i tuoi contenuti interessanti.
| Modalità | Descrizione | Supporto |
|---|
| Encode | Codificatore JWT/JWE | Basato su segreto / Basato su chiave / Algoritmo / Header personalizzato / Compressione DEFLATE / JWE |
| Decode | Decodificatore JWT/JWE | Algoritmo, Controllo data di emissione, Compressione DEFLATE, Struttura JWE |
| Verify | Verificatore JWT | Basato su segreto / Basato su chiave (per algoritmi asimmetrici) |
| Crack | Cracker di segreti | Attacco a dizionario / Forza bruta / Compressione DEFLATE |
| Payload | Generatore di payload di attacco JWT | none / jku&x5u / alg_confusion (firmato tramite --public-key) / iniezione kid & claim / manomissione dei claim / malleabilità della firma / sonde JWE / x5c / cty |
| Scan | Scanner di vulnerabilità | Controlli di sicurezza automatizzati per vulnerabilità JWT comuni |
| Server | Server API | Esegui la modalità Server API (http://localhost:3000) |
| MCP | Server Model Context Protocol | Integrazione con modelli AI tramite protocollo standardizzato |
| Strumento | Descrizione | Parametri |
|---|
decode | Decodifica token JWT | token (stringa) |
encode | Codifica JSON in JWT | json (stringa), secret (opzionale), algorithm (predefinito: HS256), no_signature (booleano) |
verify | Verifica firme JWT | token (stringa), secret (opzionale), validate_exp (booleano) |
crack | Cracca token JWT | token (stringa), mode (dict/brute), chars (stringa), max (numero) |
payload | Genera payload di attacco | token (stringa), target (stringa), jwk_attack (opzionale), jwk_protocol (predefinito: https), public_key (PEM o percorso opzionale per alg-confusion firmato) |
| Algoritmo | Descrizione | Tipo |
|---|
| HS256 | HMAC con SHA-256 | Simmetrico |
| HS384 | HMAC con SHA-384 | Simmetrico |
| HS512 | HMAC con SHA-512 | Simmetrico |
| RS256 | RSASSA-PKCS1-v1_5 con SHA-256 | Asimmetrico |
| RS384 | RSASSA-PKCS1-v1_5 con SHA-384 | Asimmetrico |
| RS512 | RSASSA-PKCS1-v1_5 con SHA-512 | Asimmetrico |
| ES256 | ECDSA con P-256 e SHA-256 | Asimmetrico |
| ES384 | ECDSA con P-384 e SHA-384 | Asimmetrico |
| PS256 | RSASSA-PSS con SHA-256 | Asimmetrico |
| PS384 | RSASSA-PSS con SHA-384 | Asimmetrico |
| PS512 | RSASSA-PSS con SHA-512 | Asimmetrico |
| EdDSA | Algoritmo di firma digitale a curva di Edwards | Asimmetrico |
| none | Nessuna firma digitale | - |