Shikata Ga Nai

Private? There is no such things.

APIエンドポイントとの対話 – Burp Suiteを活用した解析と攻撃対象の発見

Hello there, ('ω')ノ

APIエンドポイントを特定したら、実際にリクエストを送信し、その挙動を観察することで、さらなる攻撃対象(アタックサーフェス)を発見できます。Burp Suiteの RepeaterIntruder を活用し、APIの動作を詳しく調査しましょう。


1. Burp Repeaterを使ってAPIの動作を確認する

Burp Repeaterは、特定のリクエストを手動で送信し、APIのレスポンスを詳細に分析するためのツールです。

(1) APIエンドポイントにリクエストを送信する

  • BurpのProxy > HTTP history で対象のAPIリクエストを見つける。
  • 右クリックして "Send to Repeater" を選択。
  • Repeaterタブでリクエストを編集し、さまざまなパラメータを試す

(2) HTTPメソッドを変更してレスポンスを確認する

多くのAPIは GET, POST, PUT, DELETE, PATCH などのHTTPメソッドを使用しますが、予期しないメソッドに対応してしまうことがあります。

試すべき変更例:
- GET /api/users/123POST /api/users/123
- POST /api/ordersDELETE /api/orders/123

エラーが発生するか?成功するか?どんなレスポンスが返るか?を確認


2. Burp Intruderを使った自動テスト

Burp Intruderを使うと、APIエンドポイントに対して 大量のリクエストを自動送信 し、脆弱性を発見できます。

(1) APIのパラメータを総当たり(ブルートフォース)する

  • user_id=123 というパラメータがあれば、user_id=1 から user_id=1000 まで試す。
  • order_id などのシーケンシャルなIDを推測し、他人のデータが取得できるか確認。

(2) 不正なデータを送信してエラーを誘発する

  • admin=true のようなパラメータを追加
  • id=-1, id=0, id=' OR 1=1 -- などのSQLインジェクションテスト
  • {"role":"admin"} など、権限昇格の可能性があるデータを送信

レスポンスの変化を確認し、攻撃可能なポイントを探す


3. APIのエラーメッセージを活用する

APIが返すエラーメッセージから、有益な情報を取得できることがあります。

よくある情報漏洩の例:
- 詳細なエラーメッセージ: Invalid user ID: Expected integer but received string
パラメータの型を特定できる
- スタックトレース: java.sql.SQLException: syntax error at 'SELECT * FROM users WHERE id='abc'
SQLインジェクションの可能性を示唆
- デバッグ情報: API version: 1.2.3, Server: Apache 2.4.41
ソフトウェアのバージョン情報が漏洩している


4. APIテストのポイント

HTTPメソッドを変更してみる(GET → POST → DELETE)
リクエストパラメータを変更して異常値を試す
エラーメッセージを分析し、ヒントを得る
Burp Intruderを使ってパラメータの自動ブルートフォースを行う

APIエンドポイントとの対話を通じて、APIの脆弱性を特定し、攻撃の可能性を探ることができます。Burp Suiteを活用し、リクエストの変更を試しながら、より深い解析を行いましょう。

Best regards, (^^ゞ