Shikata Ga Nai

Private? There is no such things.

APIリコン(情報収集)について

Hello there, ('ω')ノ

APIテストを始める前に、APIに関するできるだけ多くの情報を収集し、その攻撃対象領域(アタックサーフェス)を明らかにすることが重要です。

1. APIエンドポイントの特定

APIのエンドポイントとは、APIが特定のリソースに関するリクエストを受け取る場所のことを指します。たとえば、次のようなGETリクエストを考えてみましょう。

GET /api/books HTTP/1.1
Host: example.com

このリクエストのAPIエンドポイントは/api/booksです。これはライブラリの本のリストを取得するためのものです。また、特定のジャンルの本を取得するエンドポイントとして、例えば/api/books/mysteryのようなものも存在するかもしれません。

2. APIとの対話方法を理解する

エンドポイントを特定したら、次にAPIとのやり取り方法を把握します。具体的には、以下のような情報を収集することが重要です。

  • 入力データの種類
    APIが処理する入力データの形式や必須・オプションのパラメータを確認する。

  • サポートされるHTTPメソッドとメディアフォーマット
    GETPOSTPUTDELETEなど、どのHTTPメソッドが利用可能かを特定する。また、JSONやXMLなど、APIが受け付けるデータフォーマットも確認する。

  • レートリミット(リクエスト制限)と認証機構
    APIがどの程度のリクエストを許容するか(例えば、1分間に100リクエストなど)を確認し、認証の仕組み(APIキー、OAuth、JWTなど)を理解する。

3. APIリコンのコツ

  • 開発者向けドキュメントの確認
    公式ドキュメントやSwagger UI、Postmanコレクションなどを探し、APIの仕様を把握する。

  • エラーメッセージの分析
    不正なリクエストを送って、APIのエラーメッセージを確認することで、隠れたパラメータやエンドポイントの存在を推測できる。

  • パブリックAPIディレクトリを検索
    APIが公開されている場合、RapidAPIPostman API Networkなどで検索して情報を集める。

  • プロキシツールを活用
    Burp SuiteやOWASP ZAPを使い、Webアプリの通信を傍受して、隠れたAPIエンドポイントを発見する。

このように、APIの情報を事前にしっかり収集することで、より効果的なテストや脆弱性診断が可能になります。

Best regards, (^^ゞ