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メソッドとメディアフォーマット
GET
、POST
、PUT
、DELETE
など、どのHTTPメソッドが利用可能かを特定する。また、JSONやXMLなど、APIが受け付けるデータフォーマットも確認する。レートリミット(リクエスト制限)と認証機構
APIがどの程度のリクエストを許容するか(例えば、1分間に100リクエストなど)を確認し、認証の仕組み(APIキー、OAuth、JWTなど)を理解する。
3. APIリコンのコツ
開発者向けドキュメントの確認
公式ドキュメントやSwagger UI、Postmanコレクションなどを探し、APIの仕様を把握する。エラーメッセージの分析
不正なリクエストを送って、APIのエラーメッセージを確認することで、隠れたパラメータやエンドポイントの存在を推測できる。パブリックAPIディレクトリを検索
APIが公開されている場合、RapidAPIやPostman API Networkなどで検索して情報を集める。プロキシツールを活用
Burp SuiteやOWASP ZAPを使い、Webアプリの通信を傍受して、隠れたAPIエンドポイントを発見する。
このように、APIの情報を事前にしっかり収集することで、より効果的なテストや脆弱性診断が可能になります。
Best regards, (^^ゞ