Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
jwt_tool — :snake: Un toolkit per testare, modificare e decifrare JSON Web Tokens | Kitploit
Strumenti/GitHubGitHub/ticarpi/jwt_tool
Scanner di VulnerabilitàTest di Sicurezza delle APISicurezza WebFuzzingCrittografiaCTFPenetration TestingSicurezza delle APITop in Sicurezza delle API n.8Top in Test di Sicurezza delle API n.8
6.7k812541 anno faRevisionato da Kitploit
GitHubticarpi/jwt_tool

jwt_tool

🐍 Un toolkit per testare, modificare e decifrare JSON Web Tokens

Vedi Repository

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

The JSON Web Token Toolkit v2

jwt_tool.py è un toolkit per validare, forgiare, scansionare e manomettere JWT (JSON Web Tokens).

jwt_tool version python version

logo

Le sue funzionalità includono:

  • Verifica della validità di un token
  • Test per exploit noti:
    • (CVE-2015-2951) La vulnerabilità di bypass della firma alg=none
    • (CVE-2016-10555) La vulnerabilità di discrepanza della chiave pubblica RS/HS256
    • (CVE-2018-0114) La vulnerabilità di key injection (iniezione di chiave)
    • (CVE-2019-20933/CVE-2020-28637) La vulnerabilità della password vuota
    • (CVE-2020-28042) La vulnerabilità della firma nulla
    • (CVE-2022-21449) La vulnerabilità ECDSA Psychic Signature
  • Scansione per errori di configurazione o debolezze note
  • Fuzzing dei valori dei claim per provocare comportamenti inattesi
  • Verifica della validità di un segreto/file di chiave/chiave pubblica/chiave JWKS
  • Identificazione di chiavi deboli tramite un attacco a dizionario ad alta velocità
  • Forgiatura di nuovi contenuti per header e payload del token e creazione di una nuova firma con la chiave o tramite un altro metodo di attacco
  • Manomissione dei timestamp
  • Generazione di chiavi RSA ed ECDSA e ricostruzione (da file JWKS)
  • Rate-limiting per tutti gli attacchi
Scarica lo strumento
  • ...e molto altro!

  • Audience

    Questo strumento è scritto per pentester, che devono verificare la robustezza dei token in uso e la loro suscettibilità agli attacchi noti. Sono disponibili diverse opzioni di manomissione, firma e verifica per approfondire le potenziali debolezze presenti in alcune librerie JWT.
    È stato inoltre utile per i partecipanti a CTF — visto che i CTF sembrano molto interessati ai JWT al momento.
    Può essere utile anche per gli sviluppatori che usano JWT nei propri progetti e vogliono testarne la stabilità e le vulnerabilità note quando si utilizzano token forgiati.


    Requirements

    Questo strumento è scritto nativamente in Python 3 (versione 3.6+) usando le librerie comuni; tuttavia varie funzioni crittografiche (e la resa grafica/leggibilità generale) richiedono l'installazione di alcune librerie Python comuni.
    (Una versione precedente basata su Python 2.x di questo strumento è disponibile sul branch legacy per chi ne avesse bisogno, anche se non è più supportata o aggiornata)


    Installation

    Docker

    L'uso preferito di jwt_tool è tramite l'immagine Docker ufficiale di jwt_tool ospitata su Dockerhub
    Il comando base per eseguirlo è il seguente:
    Comando base per eseguire jwt_tool:
    docker run -it --network "host" --rm -v "${PWD}:/tmp" -v "${HOME}/.jwt_tool:/root/.jwt_tool" ticarpi/jwt_tool

    Usando il comando sopra puoi aggiungere qualsiasi altro argomento come al solito.
    Nota che i file locali nella tua directory di lavoro corrente verranno mappati nella directory /tmp del container Docker, quindi puoi usarli impiegando quel percorso assoluto nei tuoi argomenti.
    Es.
    /tmp/localfile.txt

    Manual Install

    L'installazione consiste semplicemente nel scaricare il file jwt_tool.py (oppure fare git clone del repository).
    (Eseguire anche chmod sul file se si vuole aggiungerlo al proprio $PATH e richiamarlo da qualsiasi posizione.)

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

    Al primo avvio lo strumento genererà un file di configurazione, alcuni file di utilità, un file di log e un set di chiavi pubbliche e private in vari formati.

    Custom Configs

    • Per sfruttare al meglio le opzioni di scansione è fortemente consigliato copiare il file JWKS generato su misura in una posizione accessibile da remoto tramite URL. Questo indirizzo va poi salvato in jwtconf.ini come valore "jwkloc".
    • Per intercettare le interazioni con servizi esterni, come lookup DNS e richieste HTTP, inserisci il tuo indirizzo univoco per Burp Collaborator (o altri strumenti alternativi come RequestBin) nel file di configurazione come valore "httplistener".
      Controlla le altre opzioni nel file di configurazione per personalizzare la tua esperienza.

    Colour bug in Windows

    Per risolvere i colori non funzionanti in Windows cmd/Powershell: decommenta le due righe seguenti in jwt_tool.py (rimuovi il "# " all'inizio di ogni riga)
    Dovrai anche installare colorama: python3 -m pip install colorama

    root@kitploit:~
    # import colorama
    # colorama.init()
    

    Usage

    Il primo argomento deve essere il JWT stesso (a meno che non venga fornito in un header o in un cookie). Se non si forniscono argomenti aggiuntivi, verranno mostrati i valori decodificati del token per la revisione.
    $ python3 jwt_tool.py <JWT>
    oppure il comando base Docker:
    $ docker run -it --network "host" --rm -v "${PWD}:/tmp" -v "${HOME}/.jwt_tool:/root/.jwt_tool" ticarpi/jwt_tool

    Il toolkit validerà il token e mostrerà i valori di header e payload.

    Additional arguments

    I numerosi argomenti aggiuntivi ti portano direttamente alla funzione appropriata e ti restituiscono un token pronto per l'uso nei tuoi test.
    Ad esempio, per manomettere il token esistente esegui il seguente comando:
    $ python3 jwt_tool.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.aqNCvShlNT9jBFTPBpHDbt2gBB1MyHiisSDdp8SQvgw -T

    Molte opzioni richiedono valori aggiuntivi per impostare le opzioni.
    Ad esempio, per eseguire un particolare tipo di exploit devi scegliere l'opzione eXploit (-X) e selezionare la vulnerabilità (qui usando "a" per l'exploit alg:none):
    $ python3 jwt_tool.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.aqNCvShlNT9jBFTPBpHDbt2gBB1MyHiisSDdp8SQvgw -X a

    Extra parameters

    Alcune opzioni, come la verifica dei token, richiedono parametri/file aggiuntivi (qui fornendo la chiave pubblica in formato PEM):
    $ python3 jwt_tool.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.aqNCvShlNT9jBFTPBpHDbt2gBB1MyHiisSDdp8SQvgw -V -pk public.pem

    Sending tokens to a web application

    Tutte le modalità ora consentono di inviare il token direttamente a un'applicazione.
    È necessario specificare:

    • URL di destinazione (-t)
    • al posto di un URL di destinazione, puoi inserire la tua richiesta HTTP in un file e fare riferimento al file con -r. Questo popola AUTOMATICAMENTE header, cookie e dati POST, quindi è l'opzione consigliata
    • un header di richiesta (-rh) o cookie di richiesta (-rc) necessari all'applicazione (almeno uno deve contenere il token)
    • (opzionale) eventuali dati POST (quando la richiesta è una POST)
    • (opzionale) eventuali opzioni aggiuntive di jwt_tool, come modalità o opzioni di manomissione/iniezione
    • (opzionale) un canary value (-cv) - un valore testuale che ti aspetti di vedere in un uso riuscito del token (es. "Welcome, ticarpi")
      Una richiesta di esempio potrebbe essere questa (usando la modalità di scansione per errori forzati):
      $ python3 jwt_tool.py -t https://www.ticarpi.com/ -rc "jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.bsSwqj2c2uI9n7-ajmi3ixVGhPUiY7jO9SUn9dm15Po;anothercookie=test" -rh "Origin: null" -cv "Welcome" -M er

    Vengono visualizzate varie risposte dalla richiesta:

    • Codice di risposta
    • Dimensione della risposta
    • ID di tracciamento univoco della richiesta (per l'uso con il logging)
    • Modalità/opzioni usate

    Common Workflow

    Ecco una rapida panoramica di una valutazione di base di un'implementazione JWT. Se con queste opzioni non si ottengono risultati, approfondisci con altre modalità e opzioni per cercare nuove vulnerabilità (o zero-day!).

    Recon:

    Leggi il valore del token per farti un'idea dei claim/valori attesi dall'applicazione:
    $ python3 jwt_tool.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.aqNCvShlNT9jBFTPBpHDbt2gBB1MyHiisSDdp8SQvgw

    Scanning:

    Esegui una Playbook Scan usando il token fornito direttamente contro l'applicazione per cercare errori di configurazione comuni:
    $ python3 jwt_tool.py -t https://www.ticarpi.com/ -rc "jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.bsSwqj2c2uI9n7-ajmi3ixVGhPUiY7jO9SUn9dm15Po;anothercookie=test" -M pb

    Exploitation:

    Se vengono trovate vulnerabilità sfruttabili, modifica i claim rilevanti per provare a sfruttarle (qui usando l'exploit Inject JWKS e iniettando un nuovo nome utente):
    $ 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:

    Scava più a fondo testando valori e claim inattesi per identificare comportamenti imprevisti dell'app, oppure esegui attacchi sulla logica di programmazione o sull'elaborazione dei token:
    $ 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

    Review:

    Rivedi qualsiasi exploit riuscito interrogando i log per leggere più dati sulla richiesta e :
    $ python3 jwt_tool.py -t https://www.ticarpi.com/ -rc "jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.bsSwqj2c2uI9n7-ajmi3ixVGhPUiY7jO9SUn9dm15Po;anothercookie=test" -X i -I -pc name -pv admin


    Help

    Per un elenco delle opzioni, richiama la funzione di usage: Alcune opzioni, come la verifica dei token, richiedono parametri/file aggiuntivi:
    $ python3 jwt_tool.py -h

    Una guida utente più dettagliata è disponibile nella pagina wiki.


    JWT Attack Playbook - nuovi contenuti wiki!

    playbook_logo

    Vai al JWT Attack Playbook per una descrizione dettagliata di cosa sono i JWT, cosa fanno, e un flusso di lavoro completo su come testarli a fondo per vulnerabilità, debolezze comuni ed errori di programmazione involontari.


    Tips

    Regex per trovare JWT in Burp Search
    (assicurati che le opzioni 'Case sensitive' e 'Regex' siano spuntate)
    [= ]eyJ[A-Za-z0-9_-]*\.[A-Za-z0-9._-]* - versione JWT url-safe
    [= ]eyJ[A-Za-z0-9_\/+-]*\.[A-Za-z0-9._\/+-]* - tutte le versioni JWT (maggiore possibilità di falsi positivi)


    Further Reading

    • JWT Attack Playbook (https://github.com/ticarpi/jwt_tool/wiki) - per una metodologia completa di testing dei JWT

    • Un'ottima introduzione ai JWT - https://jwt.io/introduction/

    • Gran parte dell'ispirazione iniziale per questo strumento deriva dalle vulnerabilità scoperte da Tim McLean.
      Dai un'occhiata al suo blog sulle debolezze dei JWT qui: https://auth0.com/blog/critical-vulnerabilities-in-json-web-token-libraries/

    • Un'intera serie di esercizi per testare le vulnerabilità dei JWT è fornita da Pentesterlab (https://www.pentesterlab.com). Consiglio vivamente un abbonamento PRO se sei interessato al Pentesting di applicazioni web.

      NOTA BENE: Questo toolkit risolverà la maggior parte degli esercizi JWT di Pentesterlab in pochi secondi se usato correttamente, ma ti incoraggio fortemente a svolgere questi esercizi da solo, individuando la struttura e le debolezze. Dopotutto, è tutta una questione di apprendimento...