pentest-api-deep について
pentest-api-deepは、許可を得たセキュリティテスター向けのAPIペネトレーションテストスキルです。OWASP API Security Top 10(2023)の複数のリスクを、発見から検証までの手順で扱います。
主な機能
- 01APIエンドポイントと隠れたパラメーターの発見
- 02BFLAと一括代入のテスト
- 03レート制限とリソース消費のテスト
- 04過剰なデータ露出の確認
- 05SSRFと上流APIインジェクションのテスト
- 06APIバージョンと廃止済みエンドポイントの確認
活用シーン
- 01OpenAPI、GraphQL、gRPCの情報を使ったインターフェース列挙
- 02権限レベル別のAPIレスポンス比較
- 03APIのレート制限と複雑度制御の確認
- 04旧APIバージョンと上流データ処理のテスト
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ jd-opensource/ joysafeter --skill pentest-api-deepインストール後、Claude Code で/pentest-api-deepを入力して読み込まれたか確認します。
同梱ファイルreferences/tools.mdreferences/workflows.md
詳細
Pentest API Deep
目的
基本的な BOLA/GraphQL のテスト範囲を超えて、API 固有の脆弱性を重点的にテストします。OWASP API Security Top 10(2023)に基づき、Broken Function Level Authorization(BFLA)、マスアサインメント、レート制限、過剰なデータ露出、安全でないデータ消費に対応します。
前提条件
認可要件
- 書面による承認があり、API テストの範囲が明示的に含まれていること
- API ドキュメント(利用可能な場合は OpenAPI/Swagger の仕様、GraphQL スキーマ)
- 複数の権限レベルのテストアカウント(ユーザー、管理者、サービスアカウント)
- レート制限の把握 — 許容されるリクエスト量を対象の所有者に確認します
環境設定
- API を手動で調査するための Postman または Insomnia
- API 固有の拡張機能を備えた Burp Suite
- スキーマを可視化するための GraphQL Voyager
- gRPC サービスをテストするための grpcurl
基本ワークフロー
- API の検出:OpenAPI/Swagger の仕様、GraphQL イントロスペクション、gRPC リフレクション、トラフィック分析を通じてエンドポイントを列挙します。Kiterunner で文書化されていないエンドポイントを検出します。
- BFLA のテスト:一般ユーザーとして管理者専用の API 機能にアクセスします。HTTP メソッドの切り替え(GET→DELETE)を試します。オブジェクトレベル(BOLA)とは異なる、機能レベルの認可の欠落をテストします。
- マスアサインメント:POST/PUT で追加フィールド(role、isAdmin、balance)を送信します。レスポンスオブジェクトに内部フィールドの漏えいがないか確認します(WSTG-INPV-20)。
- レート制限とリソース:レート制限の欠落、GraphQL の深度/複雑性を悪用する攻撃、ページネーションの悪用、API 入力を介した正規表現 DoS をテストします。
- 過剰なデータ露出:権限レベルごとに API レスポンスを比較します。返されるものの UI には表示されないフィールドを特定します。詳細なエラーレスポンスをテストします。
- 安全でないデータ消費:上流 API 呼び出しを介した SSRF、信頼されているものの汚染された API レスポンスデータを介したインジェクションをテストします。
- API のバージョン管理:制御が弱い古い API バージョン、バージョンヘッダーの操作、非推奨エンドポイントへのアクセスをテストします。
OWASP API Security Top 10(2023)の対象範囲
| カテゴリー | テスト対象 | ステータス |
|---|---|---|
| API1 オブジェクトレベル認可の不備 | API パラメーターを介した IDOR | ✅ |
| API2 認証の不備 | トークン/キーの弱点 | ✅ |
| API3 オブジェクトプロパティレベル認可の不備 | マスアサインメント、過剰なデータ | ✅ |
| API4 リソース消費の制限の欠如 | レート制限、複雑性 | ✅ |
| API5 機能レベル認可の不備 | BFLA、メソッドの切り替え | ✅ |
| API6 機密性の高いビジネスフローへの無制限のアクセス | 自動化の悪用 | ✅ |
| API7 サーバーサイドリクエストフォージェリ | API をトリガーとする SSRF | ✅ |
| API8 セキュリティ設定の不備 | CORS、ヘッダー、バージョン管理 | ✅ |
| API9 不適切なインベントリ管理 | シャドー API、非推奨バージョン | ✅ |
| API10 サードパーティ API の安全でないデータ消費 | 上流でのインジェクション | ✅ |
ツールのカテゴリー
| カテゴリー | ツール | 目的 |
|---|---|---|
| API の検出 | Kiterunner、Swagger UI、GraphQL Voyager | エンドポイントの列挙 |
| パラメーターの検出 | Arjun、x8、ParamSpider | 隠れたパラメーターの検出 |
| ファジング | ffuf、Burp Intruder、カスタムスクリプト | マスアサインメント、BFLA |
| GraphQL | graphql-cop、InQL、BatchQL | GraphQL 固有の攻撃 |
| gRPC | grpcurl、grpc-tools | gRPC のリフレクションとテスト |
| レートテスト | カスタム aiohttp スクリプト、Turbo Intruder | レート制限の検証 |
参考資料
references/tools.md- ツールの関数シグネチャとパラメーターreferences/workflows.md- 攻撃パターンの定義とテストベクター
コメント
Markdown 対応