Web API Pentesting
Reading time: 10 minutes
tip
AWSハッキングを学び、実践する:
HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:
HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
API Pentesting 手法の概要
Pentesting 対象のAPIは、脆弱性を発見するために構造化されたアプローチを必要とします。本ガイドは実践的なテクニックとツールを重視した包括的な手法をまとめています。
APIタイプの理解
- SOAP/XML Web Services: ドキュメントは通常
?wsdlパスで提供される WSDL 形式を利用します。SOAPUI や WSDLer (Burp Suite Extension) のようなツールは、リクエストの解析と生成に有用です。例としてのドキュメントは DNE Online で参照できます。 - REST APIs (JSON): ドキュメントは WADL ファイルで提供されることもありますが、Swagger UI のようなツールがより扱いやすいインターフェースを提供します。Postman はサンプルリクエストの作成・管理に便利です。
- GraphQL: API のデータに関する完全で理解しやすい記述を提供するクエリ言語です。
Practice Labs
- VAmPI: OWASP API トップ10 の脆弱性を網羅する、実習用の意図的に脆弱なAPIです。
API Pentesting の効果的なテクニック
- SOAP/XML Vulnerabilities: XXE 脆弱性を探索しますが、DTD 宣言はしばしば制限されています。CDATA タグは、XML が有効なままであればペイロード挿入を許す場合があります。
- Privilege Escalation: 権限レベルが異なるエンドポイントをテストして、不正アクセスの可能性を特定します。
- CORS Misconfigurations: 認証済みセッションからの CSRF 攻撃で悪用可能かどうか、CORS 設定を調査します。
- Endpoint Discovery: API パターンを利用して隠しエンドポイントを発見します。fuzzer のようなツールでこのプロセスを自動化できます。
- Parameter Tampering: リクエストにパラメータを追加・置換して、許可されていないデータや機能へアクセスできないか試します。
- HTTP Method Testing: リクエストメソッド(GET, POST, PUT, DELETE, PATCH)を変えて、予期しない挙動や情報漏えいを発見します。
- Content-Type Manipulation: 異なる content-type(x-www-form-urlencoded, application/xml, application/json)を切り替えて、パースの問題や脆弱性をテストします。
- Advanced Parameter Techniques: JSON ペイロードで予期しないデータ型を試したり、XML データで XXE を試したりします。parameter pollution やワイルドカード文字も幅広いテストに役立ちます。
- Version Testing: 古い API バージョンは攻撃に対して脆弱である可能性が高いです。複数の API バージョンを常に確認してテストしてください。
Authorization & Business Logic (AuthN != AuthZ) — tRPC/Zod protectedProcedure pitfalls
近年の TypeScript スタックでは tRPC と Zod を組み合わせた入力バリデーションが一般的です。tRPC の protectedProcedure は通常リクエストに有効なセッション(認証)があることを保証しますが、呼び出し元が適切な role/permission(認可)を持っていることを意味しません。このミスマッチは、敏感な手続きが protectedProcedure だけで保護されている場合に Broken Function Level Authorization/BOLA を引き起こします。
- Threat model: 役割チェックが欠如していると、低権限の認証ユーザが管理者向けの手続きを呼び出せる可能性があります(例: background migrations, feature flags, tenant-wide maintenance, job control)。
- Black-box signal: 基本アカウントで成功するはずのない管理者専用の
POST /api/trpc/<router>.<procedure>エンドポイントが成功する場合。Self-serve signups は悪用可能性を大幅に高めます。 - Typical tRPC route shape (v10+): JSON ボディは通常 {"input": {...}} の形でラップされます。
Example vulnerable pattern (no role/permission gate):
// The endpoint for retrying a migration job
// This checks for a valid session (authentication)
retry: protectedProcedure
// but not for an admin role (authorization).
.input(z.object({ name: z.string() }))
.mutation(async ({ input, ctx }) => {
// Logic to restart a sensitive migration
}),
Practical exploitation (black-box)
- 通常のアカウントを登録し、認証済みセッション (cookies/headers) を取得する。
- “list”/“all”/“status” 手続きを介して、background jobs やその他の機密性の高いリソースを列挙する。
curl -s -X POST 'https://<tenant>/api/trpc/backgroundMigrations.all' \
-H 'Content-Type: application/json' \
-b '<AUTH_COOKIES>' \
--data '{"input":{}}'
- ジョブの再起動などの特権操作を実行する:
curl -s -X POST 'https://<tenant>/api/trpc/backgroundMigrations.retry' \
-H 'Content-Type: application/json' \
-b '<AUTH_COOKIES>' \
--data '{"input":{"name":"<migration_name>"}}'
評価すべき影響
- non-idempotent restarts によるデータ破損: migrations/workers の同時実行を強制すると race conditions や inconsistent partial states を引き起こし得る(silent data loss、broken analytics)。
- worker/DB starvation による DoS: 重いジョブを繰り返し起動すると worker pools や database connections が枯渇し、tenant-wide outages を引き起こす可能性がある。
API Pentesting のツールとリソース
- kiterunner: API endpoints を発見するのに非常に有用。target APIs に対して paths and parameters を scan や brute force するために使う。
kr scan https://domain.com/api/ -w routes-large.kite -x 20
kr scan https://domain.com/api/ -A=apiroutes-220828 -x 20
kr brute https://domain.com/api/ -A=raft-large-words -x 20 -d=0
kr brute https://domain.com/api/ -w /tmp/lang-english.txt -x 20 -d=0
- https://github.com/BishopFox/sj: sj は、関連する API endpoints を確認して weak authentication をチェックすることで、exposed Swagger/OpenAPI definition files の監査を支援するコマンドラインツールです。手動の脆弱性テスト用のコマンドテンプレートも提供します。
- 追加ツールとして automatic-api-attack-tool, Astra, restler-fuzzer などがあり、attack simulation から fuzzing や vulnerability scanning に至るまで、API security testing に特化した機能を提供します。
- Cherrybomb: これは OAS ファイルに基づいて API を監査する API セキュリティツールです(ツールは rust で書かれています)。
学習と演習リソース
- OWASP API Security Top 10: 一般的な API の脆弱性を理解するための必読資料 (OWASP Top 10).
- API Security Checklist: API を保護するための包括的なチェックリスト (GitHub link).
- Logger++ Filters: API の脆弱性を探索するために、Logger++ は有用なフィルタを提供します (GitHub link).
- API Endpoints List: テスト目的での潜在的な API エンドポイントをまとめたキュレーションリスト (GitHub gist).
参考
tip
AWSハッキングを学び、実践する:
HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:
HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
HackTricks