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をサポートする

API Pentesting 手法の概要

Pentesting 対象のAPIは、脆弱性を発見するために構造化されたアプローチを必要とします。本ガイドは実践的なテクニックとツールを重視した包括的な手法をまとめています。

APIタイプの理解

  • SOAP/XML Web Services: ドキュメントは通常 ?wsdl パスで提供される WSDL 形式を利用します。SOAPUIWSDLer (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):

ts
// 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)

  1. 通常のアカウントを登録し、認証済みセッション (cookies/headers) を取得する。
  2. “list”/“all”/“status” 手続きを介して、background jobs やその他の機密性の高いリソースを列挙する。
bash
curl -s -X POST 'https://<tenant>/api/trpc/backgroundMigrations.all' \
-H 'Content-Type: application/json' \
-b '<AUTH_COOKIES>' \
--data '{"input":{}}'
  1. ジョブの再起動などの特権操作を実行する:
bash
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 するために使う。
bash
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をサポートする