jwt-oauth-token-attacks は何をしますか?
JWTおよびOAuthトークン攻撃のプレイブック。トークンの信頼性検証、署名アルゴリズム、鍵管理、クレームの悪用、ベアラーフロー、OAuthアカウント紐付けの脆弱性を確認する際に使用します。
概要
このスキルは、JWT(JSON Web Token)とOAuth 2.0トークンに関連する一般的なセキュリティ攻撃を実行するための実践的なガイドです。以下の領域をカバーします:
- 署名アルゴリズムの検証(
noneアルゴリズム、アルゴリズム混同攻撃など) - 秘密鍵の管理ミス(弱い鍵、露出した鍵、鍵の再利用)
- クレームの改ざんと権限昇格
- ベアラートークンのインターセプトとリプレイ
- OAuthアカウント紐付けの脆弱性(CSRF、リダイレクトURI操作)
対象プラットフォーム
このスキルは、以下のプラットフォームで使用されるツールと互換性があります:
- yaklang:Yak言語ベースのセキュリティテストフレームワーク
- Burp Suite:プロキシツールとの連携
- Postman / curl:手動テスト用
使用方法
# yaklangスクリプトの例
jwt_attack:
target: "https://example.com/api"
token: "eyJhbGciOiJIUzI1NiIs..."
attack: "none_algorithm"
またはCLIから直接:
yak run jwt-attack --target https://example.com --token <token>
攻撃の種類
1. 署名アルゴリズム攻撃
- noneアルゴリズム:ヘッダーの
algフィールドをnoneに変更 - アルゴリズム混同:RS256からHS256への切り替え(公開鍵をHMAC秘密鍵として使用)
2. 鍵管理攻撃
- 弱い秘密鍵:
jwt-crackerなどのツールを使用したブルートフォース - 鍵の露出:ソースコードや設定ファイルからの鍵抽出
3. クレーム操作
- subクレームの改ざん:ユーザーIDの変更による権限昇格
- expクレームの無効化:有効期限の延長
4. OAuthアカウント紐付け攻撃
- CSRF:stateパラメータの欠如または固定
- リダイレクトURI操作:許可されていないリダイレクト先への転送
防御策
- 署名アルゴリズムをホワイトリスト方式で検証する
- 強力な秘密鍵を使用し、定期的にローテーションする
- すべてのクレームをサーバー側で検証する
- OAuthフローではCSRFトークン(state)を必須にする
- リダイレクトURIを厳密に検証する
参考リンク
ライセンス
このプロジェクトはMITライセンスの下で公開されています。