ペンリジェント・ヘッダー

JWTトークン解読チュートリアル:ツール、ステップ、ベストプラクティス

JWTをデコードする実際の意味

JWTのデコードとは、トークン内のアルゴリズム、メタデータ、クレームを明らかにするために、Base64URLエンコードされただけのJWTのヘッダーとペイロードを抽出することを意味する。このプロセスは ない その真正性を検証する。JWTは誰でも解読できるが 署名の検証のみ は、トークンが信頼できるかどうかを判断する。この区別は、安全な認証と侵入テストに不可欠である。

JWTトークン解読チュートリアル Penligent

JWTデコードの内部的な仕組み

JSONウェブトークンは、以下から構成される:

css

ヘッダー.ペイロード.シグネチャー ヘッダーもペイロードもBase64URLエンコードされたJSONオブジェクトである。例えば

json

// ヘッダー

{

"alg":「HS256」、

"typ":"JWT"

}

// ペイロード

{

"ユーザー名":"admin"、

"role":"スーパーユーザー"

}

手動によるデコードは、Base64URL操作のみを必要とする:

パイソン

インポート base64, json

def decode_part(segment):

padded = segment + "=" * (-len(segment) % 4)

return json.loads(base64.urlsafe_b64decode(padded))

header, payload, _ = token.split(".")

print(decode_part(header))

print(decode_part(payload))

これは、セキュリティの基本的な真実を示している: JWTの解読は信頼を意味しない.正当な検証には、署名、発行者、利用者、有効期限、署名アルゴリズムをチェックする必要がある。

JWTトークン

JWTトークンをデコードするための一般的なツール

工具強さリンク
JWT.ioリアルタイム解読、迅速な実験https://jwt.io
スーパートークンデコーダークリーンで開発者に優しいUIhttps://supertokens.com/jwt-encoder-decoder
Auth0 トークン・デバッガエンタープライズグレードの検証https://auth0.com/docs/tokens
PyJWTCLI + Pythonライブラリhttps://pyjwt.readthedocs.io
jwt-decode (JS)軽量ブラウザサイドデコーダーhttps://www.npmjs.com/package/jwt-decode

ペンテストで見られる実際のJWT攻撃例

JWTの解読は、攻撃者がシグネチャの欠陥、弱い秘密、安全でない検証を組み合わせたときに危険になる。以下は、現実の世界で頻繁に見られる攻撃シナリオである。

"alg: none" シグネチャー・バイパス

古いライブラリは署名のないJWTを受け入れた:

json

{

"alg":"なし"、

"typ":"JWT"

}

攻撃者は署名を完全に削除し、秘密なしで認証することができる。

ウィーク・シークレット・ブルート・フォース(HS256)

開発者はよくこんな秘密を使う:

nginx

シークレット

admin123

パスワード

攻撃者はハッシュキャットを使う:

css

hashcat -a 0 -m 16500 token.hash wordlist.txt

アルゴリズムの混乱(RS256 → HS256)

攻撃者だ:

  1. アルゴリズム変更 RS256 への HS256
  2. サーバーの公開鍵をHMACシークレットとして使用する。
  3. 管理者ロールを付与する有効なトークンを偽造する

これは、これまで発見されたJWT攻撃の中で最も影響力のあるものの1つである。

RS256 → HS256

XSSによるトークン盗難

JWTが ローカルストレージ攻撃者はそれを盗むことができる:

ジャバスクリプト

<スクリプト

fetch("" + localStorage.token);

</script>

トークンの露出につながるCORSの誤設定

CORS ポリシーがワイルドカードを許可している場合、ブラウザのリクエストは攻撃者が管理するドメインに JWT クッキーを漏らす可能性があります。

長寿命モバイルトークンにおけるリプレイ攻撃

攻撃者はトークンを取り出す:

  • 非暗号化ローカルストレージ
  • ルート化されたデバイス
  • 安全でないキャッシュ

リプレイはMFAを完全に回避できる。

多言語JWTデコードと検証コード

Node.js

ジャバスクリプト

const jwt = require("jsonwebtoken");

const decoded = jwt.verify(token, PUBLIC_KEY, {)

アルゴリズム:[「RS256」]、

発行者:「auth.example.com」、

オーディエンス「example.com」

});

console.log(decoded);

行く

行く

token, err := jwt.Parse(tokenString, func(t *jwt.Token) (interface{}, error) {.

return []byte("secret"), nil

})

さび

さび

let decoded = decode::()

トークン

&DecodingKey::from_secret(secret.as_ref())、

&バリデーション::new(アルゴリズム::HS256)

);

ペンテスターのための手動JWTデコーディング・ワークフロー

ペンテストの間、JWTデコードは明らかにする:

  • 平文で保存された特権
  • 行方不明 経験値 または アイアット
  • 設定ミスアルゴリズム
  • ペイロード内の機密データ
  • 特権昇格の可能性

このようにして、テスターは壊れたアクセス制御を特定し、ロールをエスカレーションする。

手動JavaScriptデコーダー(ライブラリなし)

ジャバスクリプト

関数デコード(seg) {

seg = seg.replace(/-/g, "+").replace(/_/g, "/");

seg += "=".repeat((4 - seg.length % 4) % 4);

JSON.parse(atob(seg))を返す;

}

高度なJWT攻撃チェーン(レッドチームのシナリオ)

JWT + IDOR → フルアカウント・テイクオーバー

流れだ:

  1. JWTをデコードする
  2. 変更 "sub":"501" への "sub":"1"
  3. 再署名またはバイパス署名
  4. ヒット特権エンドポイント
  5. 特権の昇格

このチェーンは毎週のように企業評価に登場する。

JWT + マイクロサービスのインパーソネーション

脆弱な内部バリデーションにより、攻撃者はサービスになりすますことができる:

  • 請求データへのアクセス
  • ユーザー権限の変更
  • メッセージキューを読む
  • APIゲートウェイをバイパスする

ディフェンスのベストプラクティス(ブルーチーム)

厳格なアルゴリズム実施

パイソン

jwt.decode(token, key, algorithms=["RS256"])

HS256の強い秘密

を使用して生成する:

パール

openssl rand -hex 32

標準クレームの検証

経験値

iss

監査

エヌビーエフ

HttpOnlyクッキーにJWTを保存する

XSSトークンの盗難を防止します。

キーローテーションの実施

分散鍵管理にはJWKSを使う:

JWTセキュリティ分析を統合 ペンリジェント

最近の認証システムは、それぞれが独自のJWTロジックを持つ数十のマイクロサービスを使用していることが多い。手作業でのレビューは時間がかかり、エラーも起こりやすい。 ペンリジェントインテリジェントな侵入テストプラットフォームであるJWTは、JWT分析を自動化されたセキュリティワークフローに直接統合しています。

ペンリジェント を披露する:

  • 署名検証チェック
  • CPUとGPUのハイブリッド・クラッキングを用いた弱い秘密の検出
  • アルゴリズム不一致検出
  • クレーム操作テスト
  • リプレイとリフレッシュ・トークンの乱用シミュレーション
  • JSバンドルのトークン漏洩スキャン
  • エンドポイント相関による一貫性のないJWT検証の検出

また、次のようなエクスプロイトチェーンも再構築する:

  • RS256 → HS256 キー混乱
  • 改ざんされたIDOR サブ 請求
  • 偽造による特権の昇格 役割 フィールド

大規模なアプリケーションでは、この自動化されたJWT分析によって手作業が大幅に削減されるとともに、従来のツールでは見逃されがちな脆弱性が浮き彫りになります。

包括的なJWT攻撃対防御マトリックス

攻撃説明ディフェンス
alg: なし署名を削除する空の署名フィールド符号なしJWTを拒否する
RS→HSコンフュージョンHMACシークレットとして使用される公開鍵偽造された管理者トークンアルゴリズム実施
弱い秘密ブルートフォース HS256「パスワード123」秘密32バイトのランダムキー
改ざんされたクレームロール/サブの変更「admin」ロールサーバー側の認証
XSS窃盗JSはJWTを盗むlocalStorage.トークンHttpOnlyクッキー
リプレー攻撃再利用トークンモバイルアプリショートTTL、回転
流出した内部トークンサービスのなりすましマイクロサービスmTLS、JWKS、スコープ

最終的な感想

JWTの解読は始まりに過ぎない。真のセキュリティは、署名の検証、厳格なアルゴリズムの実施、主張の検証、キーのローテーション、トークンの安全な保管から生まれる。最新のアプリケーションはトークン・ベースの認証に大きく依存しており、このためJWTの正しさはセキュリティ態勢の重要な一部となっている。

強力なエンジニアリングプラクティスと、次のような自動化されたセキュリティプラットフォームを組み合わせることで、セキュリティはより強固なものになります。 ペンリジェント組織は、誤った設定を迅速に特定し、特権昇格攻撃を防止し、最新の敵対的手法に対する認証システムの耐性を確保することができます。

記事を共有する
関連記事
jaJapanese