Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
jwt_tool — :snake: Ein Toolkit zum Testen, Anpassen und Knacken von JSON Web Tokens | Kitploit
Tools/GitHubGitHub/ticarpi/jwt_tool
SchwachstellenscannerAPI-SicherheitstestsWebsicherheitFuzzingKryptographieCTFPenetrationstestsAPI-SicherheitTop in API-Sicherheit Nr.8Top in API-Sicherheitstests Nr.8
6.7k81254vor 1 JahrVon Kitploit geprüft
GitHubticarpi/jwt_tool

jwt_tool

🐍 Ein Toolkit zum Testen, Anpassen und Knacken von JSON Web Tokens

Repository anzeigen

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Das JSON Web Token Toolkit v2

jwt_tool.py ist ein Toolkit zum Validieren, Fälschen, Scannen und Manipulieren von JWTs (JSON Web Tokens).

jwt_tool version python version

logo

Die Funktionalität umfasst:

  • Überprüfung der Gültigkeit eines Tokens
  • Testen auf bekannte Exploits:
    • (CVE-2015-2951) Die alg=none Signatur-Bypass-Schwachstelle
    • (CVE-2016-10555) Die RS/HS256 Public-Key-Mismatch-Schwachstelle
    • (CVE-2018-0114) Key-Injection-Schwachstelle
    • (CVE-2019-20933/CVE-2020-28637) Blank-Password-Schwachstelle
    • (CVE-2020-28042) Null-Signatur-Schwachstelle
    • (CVE-2022-21449) Psychic Signature ECDSA-Schwachstelle
  • Scannen nach Fehlkonfigurationen oder bekannten Schwachstellen
  • Fuzzing von Claim-Werten, um unerwartetes Verhalten auszulösen
  • Testen der Gültigkeit eines Secrets/Key-Datei/Public Key/JWKS-Key
  • Identifizieren schwacher Schlüssel mittels eines Hochgeschwindigkeits-Wörterbuchangriffs
  • Fälschen neuer Token-Header- und Payload-Inhalte und Erzeugen einer neuen Signatur mit dem Schlüssel oder über eine andere Angriffsmethode
  • Zeitstempel-Manipulation
  • Generierung von RSA- und ECDSA-Schlüsseln sowie Rekonstruktion (aus JWKS-Dateien)
  • Ratenbegrenzung für alle Angriffe
  • ...und vieles mehr!
Tool herunterladen

Zielgruppe

Dieses Tool wurde für Pentester geschrieben, die die Stärke der verwendeten Token und deren Anfälligkeit für bekannte Angriffe prüfen müssen. Eine Reihe von Manipulations-, Signier- und Verifizierungsoptionen steht zur Verfügung, um tiefer in die potenziellen Schwachstellen einzutauchen, die in einigen JWT-Bibliotheken vorhanden sind.
Es hat sich auch für CTF-Teilnehmer als nützlich erwiesen – da CTFs derzeit offenbar sehr auf JWTs stehen.
Es kann auch für Entwickler nützlich sein, die JWTs in Projekten verwenden, aber die Stabilität und bekannte Schwachstellen beim Einsatz gefälschter Token testen möchten.


Anforderungen

Dieses Tool ist nativ in Python 3 (Version 3.6+) geschrieben und verwendet die gängigen Bibliotheken. Verschiedene kryptografische Funktionen (und die allgemeine Optik/Lesbarkeit) erfordern jedoch die Installation einiger gängiger Python-Bibliotheken.
(Eine ältere Python-2.x-Version dieses Tools ist für diejenigen, die sie benötigen, im Legacy-Zweig verfügbar, wird jedoch nicht mehr unterstützt oder aktualisiert)


Installation

Docker

Die bevorzugte Verwendung für jwt_tool ist mit dem offiziellen, auf Dockerhub gehosteten jwt_tool-Docker-Image
Der Basisbefehl für die Ausführung lautet wie folgt:
Basisbefehl zum Ausführen von jwt_tool:
docker run -it --network "host" --rm -v "${PWD}:/tmp" -v "${HOME}/.jwt_tool:/root/.jwt_tool" ticarpi/jwt_tool

Mit dem obigen Befehl kannst du wie gewohnt beliebige weitere Argumente anhängen.
Beachte, dass lokale Dateien in deinem aktuellen Arbeitsverzeichnis in das /tmp-Verzeichnis des Docker-Containers gemappt werden. Du kannst sie also über diesen absoluten Pfad in deinen Argumenten verwenden.
z. B.
/tmp/localfile.txt

Manuelle Installation

Die Installation besteht lediglich darin, die Datei jwt_tool.py herunterzuladen (oder das Repo zu git clone).
(Führe auch chmod auf der Datei aus, wenn du sie zu deinem $PATH hinzufügen und von überall aufrufen möchtest.)

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

Beim ersten Start erzeugt das Tool eine Konfigurationsdatei, einige Hilfsdateien, eine Logdatei und einen Satz öffentlicher und privater Schlüssel in verschiedenen Formaten.

Benutzerdefinierte Konfigurationen

  • Für die optimale Nutzung der Scan-Optionen wird dringend empfohlen, die benutzerdefinierte JWKS-Datei an einen Ort zu kopieren, der über eine URL remote erreichbar ist. Diese Adresse sollte dann in jwtconf.ini als Wert "jwkloc" gespeichert werden.
  • Um Interaktionen mit externen Diensten – wie DNS-Lookups und HTTP-Anfragen – zu erfassen, trage deine eindeutige Adresse für Burp Collaborator (oder andere alternative Tools wie RequestBin) als Wert "httplistener" in die Konfigurationsdatei ein.
    Überprüfe die weiteren Optionen in der Konfigurationsdatei, um deine Erfahrung anzupassen.

Farbfehler unter Windows

Um defekte Farben in Windows cmd/Powershell zu beheben, entferne die Kommentierung der folgenden zwei Zeilen in jwt_tool.py (entferne das "# " am Anfang jeder Zeile).
Du musst außerdem colorama installieren: python3 -m pip install colorama

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

Verwendung

Das erste Argument sollte das JWT selbst sein (sofern es nicht in einem Header- oder Cookie-Wert bereitgestellt wird). Wenn keine weiteren Argumente angegeben werden, werden die dekodierten Token-Werte zur Überprüfung angezeigt.
$ python3 jwt_tool.py <JWT>
oder der Docker-Basisbefehl:
$ docker run -it --network "host" --rm -v "${PWD}:/tmp" -v "${HOME}/.jwt_tool:/root/.jwt_tool" ticarpi/jwt_tool

Das Toolkit validiert das Token und listet die Header- und Payload-Werte auf.

Zusätzliche Argumente

Die vielen zusätzlichen Argumente führen dich direkt zur entsprechenden Funktion und liefern dir ein Token, das du in deinen Tests verwenden kannst.
Um zum Beispiel das vorhandene Token zu manipulieren, führe Folgendes aus:
$ python3 jwt_tool.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.aqNCvShlNT9jBFTPBpHDbt2gBB1MyHiisSDdp8SQvgw -T

Viele Optionen benötigen zusätzliche Werte, um Optionen zu setzen.
Um beispielsweise einen bestimmten Exploit-Typ auszuführen, musst du die Option eXploit (-X) wählen und die Schwachstelle auswählen (hier wird "a" für den alg:none-Exploit verwendet):
$ python3 jwt_tool.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.aqNCvShlNT9jBFTPBpHDbt2gBB1MyHiisSDdp8SQvgw -X a

Zusätzliche Parameter

Einige Optionen wie das Verifizieren von Token erfordern zusätzliche Parameter/Dateien (hier wird der öffentliche Schlüssel im PEM-Format bereitgestellt):
$ python3 jwt_tool.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.aqNCvShlNT9jBFTPBpHDbt2gBB1MyHiisSDdp8SQvgw -V -pk public.pem

Senden von Token an eine Webanwendung

Alle Modi erlauben es nun, das Token direkt an eine Anwendung zu senden.
Du musst Folgendes angeben:

  • Ziel-URL (-t)
  • Anstelle einer Ziel-URL kannst du deine HTTP-Anfrage in eine Datei legen und mit -r auf die Datei verweisen. Dies füllt automatisch Header, Cookies und POST-Daten aus, daher ist dies die empfohlene Option.
  • Einen Request-Header (-rh) oder Request-Cookies (-rc), die von der Anwendung benötigt werden (mindestens einer muss das Token enthalten)
  • (optional) beliebige POST-Daten (wenn die Anfrage ein POST ist)
  • (optional) beliebige weitere jwt_tool-Optionen, wie Modi oder Manipulations-/Injektionsoptionen
  • (optional) einen Canary-Wert (-cv) – einen Textwert, den du bei einer erfolgreichen Verwendung des Tokens zu sehen erwartest (z. B. "Welcome, ticarpi")
    Eine Beispielanfrage könnte so aussehen (im Scan-Modus für erzwungene Fehler):
    $ python3 jwt_tool.py -t https://www.ticarpi.com/ -rc "jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.bsSwqj2c2uI9n7-ajmi3ixVGhPUiY7jO9SUn9dm15Po;anothercookie=test" -rh "Origin: null" -cv "Welcome" -M er

Verschiedene Antworten auf die Anfrage werden angezeigt:

  • Antwortcode
  • Antwortgröße
  • Eindeutige Anfrage-Tracking-ID (zur Verwendung mit Protokollierung)
  • Verwendete Modi/Optionen

Typischer Arbeitsablauf

Hier ist ein kurzer Durchlauf einer grundlegenden Bewertung einer JWT-Implementierung. Wenn du mit diesen Optionen keinen Erfolg hast, dann grabe tiefer in andere Modi und Optionen, um nach neuen Schwachstellen (oder Zero-Days!) zu suchen.

Aufklärung:

Lies den Token-Wert, um ein Gefühl für die in der Anwendung erwarteten Claims/Werte zu bekommen:
$ python3 jwt_tool.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.aqNCvShlNT9jBFTPBpHDbt2gBB1MyHiisSDdp8SQvgw

Scannen:

Führe einen Playbook-Scan mit dem bereitgestellten Token direkt gegen die Anwendung aus, um nach häufigen Fehlkonfigurationen zu suchen:
$ python3 jwt_tool.py -t https://www.ticarpi.com/ -rc "jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.bsSwqj2c2uI9n7-ajmi3ixVGhPUiY7jO9SUn9dm15Po;anothercookie=test" -M pb

Ausnutzung:

Wenn erfolgreiche Schwachstellen gefunden werden, ändere relevante Claims, um sie auszunutzen (hier mit dem Inject JWKS-Exploit und dem Injizieren eines neuen Benutzernamens):
$ 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:

Grabe tiefer, indem du auf unerwartete Werte und Claims testest, um unerwartetes Anwendungsverhalten zu identifizieren, oder führe Angriffe auf Programmlogik oder Token-Verarbeitung aus:
$ 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

Überprüfung:

Überprüfe erfolgreiche Ausnutzungen, indem du die Logs abfragst, um mehr Daten über die Anfrage zu lesen und :
$ python3 jwt_tool.py -t https://www.ticarpi.com/ -rc "jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.bsSwqj2c2uI9n7-ajmi3ixVGhPUiY7jO9SUn9dm15Po;anothercookie=test" -X i -I -pc name -pv admin


Hilfe

Für eine Liste der Optionen rufe die Usage-Funktion auf: Einige Optionen wie das Verifizieren von Token erfordern zusätzliche Parameter/Dateien:
$ python3 jwt_tool.py -h

Ein ausführlicheres Benutzerhandbuch findest du auf der Wiki-Seite.


JWT-Angriffs-Playbook – neue Wiki-Inhalte!

playbook_logo

Schau dir das JWT-Angriffs-Playbook an, um eine detaillierte Erklärung zu erhalten, was JWTs sind, was sie tun, sowie einen vollständigen Arbeitsablauf, wie man sie gründlich auf Schwachstellen, häufige Schwächen und unbeabsichtigte Codierungsfehler testet.


Tipps

RegEx zum Finden von JWTs in der Burp-Suche
(Stelle sicher, dass die Optionen 'Case sensitive' und 'Regex' aktiviert sind)
[= ]eyJ[A-Za-z0-9_-]*\.[A-Za-z0-9._-]* - URL-sichere JWT-Version
[= ]eyJ[A-Za-z0-9_\/+-]*\.[A-Za-z0-9._\/+-]* - alle JWT-Versionen (höhere Wahrscheinlichkeit von Fehlalarmen)


Weiterführende Literatur

  • JWT-Angriffs-Playbook (https://github.com/ticarpi/jwt_tool/wiki) - für eine gründliche JWT-Testmethodik

  • Eine großartige Einführung in JWTs - https://jwt.io/introduction/

  • Ein Großteil der ursprünglichen Inspiration für dieses Tool stammt aus den von Tim McLean entdeckten Schwachstellen.
    Schau dir hier seinen Blog über JWT-Schwächen an: https://auth0.com/blog/critical-vulnerabilities-in-json-web-token-libraries/

  • Eine ganze Reihe von Übungen zum Testen von JWT-Schwachstellen wird von Pentesterlab (https://www.pentesterlab.com) bereitgestellt. Ich empfehle dringend ein PRO-Abonnement, wenn du dich für Web-App-Pentesting interessierst.

    BITTE BEACHTE: Dieses Toolkit wird die meisten Pentesterlab-JWT-Übungen bei korrekter Anwendung in wenigen Sekunden lösen. Ich empfehle dir jedoch dringend, diese Übungen selbst durchzuarbeiten und die Struktur und die Schwachstellen herauszufinden. Letztendlich geht es doch ums Lernen...