Shikata Ga Nai

Private? There is no such things.

APIドキュメントの発見方法

Hello there, ('ω')ノ

APIドキュメントが公開されていない場合でも、APIを利用しているアプリケーションを調査することでアクセスできる可能性があります。以下の方法を活用して、隠れたAPIドキュメントを見つけましょう。


1. アプリケーションの解析

APIドキュメントを発見するために、アプリケーションの通信や構造を調査します。

① Burp Scannerを使用する

Burp SuiteのBurp Scannerを使ってAPIをクロールし、関連するエンドポイントを発見できます。

② Burpのブラウザで手動調査

Burp Suiteの内蔵ブラウザを使い、Webアプリケーションを手動で閲覧しながら、APIドキュメントが存在する可能性のあるエンドポイントを探します。

③ APIドキュメントが含まれる可能性のあるパス

次のようなエンドポイントを探すと、APIドキュメントにアクセスできる場合があります。

/api
/swagger/index.html
/openapi.json
/swagger.json
/api-docs
/docs
/redoc

例えば、/swagger/index.html が見つかれば、Swagger UIが表示される可能性があります。


2. ベースパスの探索

もし特定のリソースエンドポイントが判明した場合、そのベースパスを辿ることでより多くの情報を得られることがあります。

例:発見されたエンドポイント

/api/swagger/v1/users/123

この場合、以下のパスも調査すると、APIドキュメントが見つかる可能性があります。

/api/swagger/v1
/api/swagger
/api

3. Burp Intruderで総当たり攻撃

Burp SuiteのIntruder機能を使い、よく使われるAPIドキュメントのパスを試すことで、隠れたドキュメントを発見できることがあります。

試すべき一般的なパスリスト

/api-docs
/openapi.json
/swagger.json
/redoc
/docs
/v1/api-docs
/v2/api-docs
/graphql/schema.json
/wsdl
/rest/api

Intruderを使ってこれらのパスを試し、HTTPレスポンスのステータスコード(200 OKなど)を確認することで、ドキュメントが存在するかどうかを特定できます。


4. GitHubやコードリポジトリの調査

APIドキュメントが開発者向けに提供されていない場合でも、GitHubリポジトリや他のソースコード共有プラットフォームを検索すると、設定ファイルやコード内にAPIの仕様が記載されていることがあります。

検索のポイント

  • site:github.com "openapi.json"
  • site:github.com "swagger.json"
  • site:github.com "API_KEY"

また、過去の誤設定によるリークを調べるために、PublicWWW などのツールも利用できます。


まとめ

APIドキュメントが見つからない場合でも、以下の方法で調査を進めることができます。

  1. Burp Scanner や手動ブラウズでエンドポイントを探索
  2. 既知のAPIドキュメントのパスを試す
  3. 発見したリソースのベースパスをたどる
  4. Burp Intruder で総当たりリクエストを送る
  5. GitHub やコードリポジトリでAPI仕様を検索

このように、APIドキュメントの存在を見つけることができれば、APIの攻撃対象領域(アタックサーフェス)を広げることができ、より効果的なセキュリティテストを行うことが可能になります。

Best regards, (^^ゞ