
JSON Web Token ハックツールキット
JSON Web Token ハックツールキット
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
通常の JWT と DEFLATE 圧縮された JWT の両方をデコードできます。このツールは圧縮されたトークンを自動的に検出して解凍します。
jwt-hack decode eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0In0.CHANGED
jwt-hack decode COMPRESSED_JWT_TOKEN
JWE(JSON Web Encryption)トークンをデコードして構造を解析します。このツールは JWE 形式(5 パート)を自動的に検出し、暗号化の詳細を表示します。
# JWE トークン構造のデコード
jwt-hack decode eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIn0..ZHVtbXlfaXZfMTIzNDU2.eyJ0ZXN0IjoiandlIn0.ZHVtbXlfdGFn
# JWE ヘッダー、暗号化キー、IV、暗号文、認証タグを表示
jwt-hack encode '{"sub":"1234"}' --secret=your-secret
--compress オプションを使用して、JWT ペイロードに DEFLATE 圧縮を適用できます。
jwt-hack encode '{"sub":"1234"}' --secret=your-secret --compress
# 秘密鍵を使用する場合
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
暗号化された JWT シナリオをテストするための JWE(JSON Web Encryption)トークンを作成します。
# 基本的な JWE エンコード
jwt-hack encode '{"sub":"1234", "data":"encrypted"}' --jwe --secret=your-secret
# JWE トークンは暗号化されており、適切なキーでのみ復号できます
jwt-hack encode '{"sensitive":"data"}' --jwe
提供されたシークレットまたはキーを使用して、JWT の署名が有効かどうかをチェックします。
# シークレットを使用する場合(HS256、HS384、HS512 などの HMAC アルゴリズム)
jwt-hack verify YOUR_JWT_TOKEN_HERE --secret=your-256-bit-secret
# 秘密鍵を使用する場合(RS256、ES256、EdDSA などの非対称アルゴリズム)
jwt-hack verify YOUR_JWT_TOKEN_HERE --private-key path/to/your/RS256_private.key
辞書攻撃とブルートフォース攻撃は、DEFLATE で圧縮された JWT もサポートしています。
# 辞書攻撃
jwt-hack crack -w wordlist.txt JWT_TOKEN
jwt-hack crack -w wordlist.txt COMPRESSED_JWT_TOKEN
# ブルートフォース攻撃
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
JWT トークンを自動的にスキャンして、一般的なセキュリティ問題や脆弱性を検出します。
# 弱いシークレットの検出とペイロード生成を含む完全スキャン
jwt-hack scan JWT_TOKEN
# より高速な結果を得るためにシークレットクラックをスキップ
jwt-hack scan JWT_TOKEN --skip-crack
# ペイロード生成をスキップ
jwt-hack scan JWT_TOKEN --skip-payloads
# 弱いシークレット検出にカスタムワードリストを使用
jwt-hack scan JWT_TOKEN -w custom_wordlist.txt
# シークレットテスト試行回数を制限
jwt-hack scan JWT_TOKEN --max-crack-attempts 50
スキャンコマンドは以下をチェックします:
自動化と統合のためのローカル REST API を起動します。認証が必要な場合は、--api-key を使用し、リクエストに X-API-KEY を含めます。
# API キー保護付きで localhost:3000 で起動
jwt-hack server --api-key your-api-key
# リクエスト例(--api-key 設定時は X-API-KEY を含める必要があります)
curl -s http://127.0.0.1:3000/health -H 'X-API-KEY: your-api-key'
jwt-hack は MCP サーバーとして実行でき、AI モデルが標準化されたプロトコルを通じて JWT 機能と対話できるようにします。
# MCP サーバーの起動(stdio 経由で通信)
jwt-hack mcp
MCP サーバーは以下のツールを公開します:
MCP サーバーは AI モデルと MCP クライアントによる使用を想定して設計されています。各ツールは JSON パラメータを受け取り、構造化されたレスポンスを返します。
デコードツール:
{
"name": "decode",
"arguments": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
}
エンコードツール:
{
"name": "encode",
"arguments": {
"json": "{\"sub\":\"1234\",\"name\":\"test\"}",
"secret": "mysecret",
"algorithm": "HS256"
}
}
jwt-hack の MCP サーバーを一般的な MCP 対応クライアントに接続できます。jwt-hack バイナリがシステム上にあり、クライアントからアクセス可能であることを確認してください。
VSCode
{
"servers": {
"jwt-hack": {
"type": "stdio",
"command": "jwt-hack",
"args": [
"mcp"
]
}
},
"inputs": []
}
Claude Desktop
{
"mcpServers": {
"jwt-hack": {
"command": "jwt-hack",
"args": ["mcp"],
"env": {}
}
}
}
| アルゴリズム | 説明 |
|---|---|
| A128GCM | 128 ビットキーを使用した AES-GCM |
| A256GCM | 256 ビットキーを使用した AES-GCM |
| アルゴリズム | 説明 |
|---|---|
| dir | 共有対称キーの直接使用 |
DEFLATE 圧縮サポート
jwt-hackツールキットは JWT の DEFLATE 圧縮をサポートしています。
encodeで--compressオプションを使用して、圧縮された JWT を生成します。decodeとcrackモードは圧縮された JWT を自動的に検出して処理します。
Urx はオープンソースプロジェクトであり、❤️ で作られています。 このプロジェクトにコントリビュートしたい場合は、CONTRIBUTING.md を参照し、クールな内容で Pull-Request を送ってください。
| モード | 説明 | サポート |
|---|
| Encode | JWT/JWE エンコーダ | シークレットベース / キーベース / アルゴリズム / カスタムヘッダー / DEFLATE 圧縮 / JWE |
| Decode | JWT/JWE デコーダ | アルゴリズム、発行時刻チェック、DEFLATE 圧縮、JWE 構造 |
| Verify | JWT 検証器 | シークレットベース / キーベース(非対称アルゴリズム用) |
| Crack | シークレットクラッカー | 辞書攻撃 / ブルートフォース / DEFLATE 圧縮 |
| Payload | JWT 攻撃ペイロードジェネレーター | none / jku&x5u / alg_confusion(--public-key で署名)/ kid & claim インジェクション / claims 改ざん / 署名の改変 / JWE プローブ / x5c / cty |
| Scan | 脆弱性スキャナー | 一般的な JWT 脆弱性の自動セキュリティチェック |
| Server | API サーバー | API サーバーモードの実行(http://localhost:3000) |
| MCP | Model Context Protocol サーバー | 標準化されたプロトコルによる AI モデル統合 |
| ツール | 説明 | パラメータ |
|---|
decode | JWT トークンのデコード | token (string) |
encode | JSON を JWT にエンコード | json (string), secret (オプション), algorithm (デフォルト: HS256), no_signature (boolean) |
verify | JWT 署名の検証 | token (string), secret (オプション), validate_exp (boolean) |
crack | JWT トークンのクラック | token (string), mode (dict/brute), chars (string), max (number) |
payload | 攻撃ペイロードの生成 | token (string), target (string), jwk_attack (オプション), jwk_protocol (デフォルト: https), public_key (オプションの PEM/パス、署名付き alg-confusion 用) |
| アルゴリズム | 説明 | タイプ |
|---|
| HS256 | SHA-256 を使用した HMAC | 対称 |
| HS384 | SHA-384 を使用した HMAC | 対称 |
| HS512 | SHA-512 を使用した HMAC | 対称 |
| RS256 | SHA-256 を使用した RSASSA-PKCS1-v1_5 | 非対称 |
| RS384 | SHA-384 を使用した RSASSA-PKCS1-v1_5 | 非対称 |
| RS512 | SHA-512 を使用した RSASSA-PKCS1-v1_5 | 非対称 |
| ES256 | P-256 と SHA-256 を使用した ECDSA | 非対称 |
| ES384 | P-384 と SHA-384 を使用した ECDSA | 非対称 |
| PS256 | SHA-256 を使用した RSASSA-PSS | 非対称 |
| PS384 | SHA-384 を使用した RSASSA-PSS | 非対称 |
| PS512 | SHA-512 を使用した RSASSA-PSS | 非対称 |
| EdDSA | Edwards-curve デジタル署名アルゴリズム | 非対称 |
| none | デジタル署名なし | - |