Hello there, ('ω')ノ
APIエンドポイントを特定したら、実際にリクエストを送信し、その挙動を観察することで、さらなる攻撃対象(アタックサーフェス)を発見できます。Burp Suiteの Repeater と Intruder を活用し、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/123
→ POST /api/users/123
- POST /api/orders
→ DELETE /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, (^^ゞ