Hello there, ('ω')ノ
APIエンドポイントがどのHTTPメソッドをサポートしているかを調査することは、攻撃対象(アタックサーフェス)を広げる重要な手法です。特定のエンドポイントに対して、予期しないHTTPメソッドが許可されていると、不正アクセスやデータ改ざんのリスクが生じる可能性があります。
1. HTTPメソッドの基本
APIでは、リソースに対してさまざまなHTTPメソッドを使用できます。代表的なものを以下に示します。
メソッド | 説明 | セキュリティ上のリスク |
---|---|---|
GET | データを取得する | 機密情報がURLに露出する可能性 |
POST | データを作成する | 入力検証が不十分だと不正データが登録される |
PUT | リソースを置き換える | 本来変更できないはずのデータを改ざんできる可能性 |
PATCH | リソースを部分更新する | 権限チェックが甘いと権限昇格のリスク |
DELETE | リソースを削除する | 予期しないデータ損失 |
OPTIONS | 利用可能なメソッドを取得する | APIの情報が漏洩する可能性 |
HEAD | ヘッダーのみを取得する | レスポンスサイズから推測攻撃が可能 |
2. HTTPメソッドの探索方法
(1) Burp SuiteのIntruderを使った総当たりテスト
Burp Suiteの Intruder を利用すると、指定したエンドポイントに対して 複数のHTTPメソッドを試すことが可能 です。
手順:
1. Burp Suiteの Proxy > HTTP history で対象のAPIリクエストを選択。
2. 右クリック → "Send to Intruder" を選択。
3. Attack type を "Sniper" に設定。
4. リクエストの "METHOD" を変数(§GET§ など)として設定。
5. BurpのデフォルトのHTTPメソッドリストを使用(GET, POST, PUT, DELETE, PATCH, OPTIONS など)。
6. 攻撃を開始し、各メソッドに対するレスポンスの違いを確認。
→ 想定外のメソッドが有効になっている場合、そのエンドポイントが攻撃可能か検討する。
(2) OPTIONSメソッドを使って許可されているメソッドを取得
OPTIONS
メソッドを使うと、APIがどのメソッドを許可しているかを確認できます。
OPTIONS /api/tasks HTTP/1.1 Host: example.com
期待されるレスポンス(許可されているメソッドの一覧)
HTTP/1.1 200 OK Allow: GET, POST, PUT, DELETE
→ もしDELETEが許可されていたら、不正なデータ削除の可能性がある
(3) 予期しないメソッドが動作するか手動でテスト
POST /api/users/1
→ ユーザー情報の書き換えが可能か?DELETE /api/orders/999
→ 他人の注文を削除できるか?PATCH /api/admin
→ 権限昇格のリスクはないか?
3. HTTPメソッドをテストする際の注意点
✅ まずは低リスクなエンドポイントで試す
- いきなり重要なリソース(ユーザーアカウント、支払いデータなど)を変更せず、テスト用のエンドポイントを狙う。
✅ エラーメッセージを分析する
- 405 Method Not Allowed
→ メソッドが制限されている(ただしバイパスできる可能性あり)。
- 403 Forbidden
→ 権限が必要な可能性あり(認証情報を変えて試す価値あり)。
- 200 OK
→ 予期しない動作が可能かもしれない!
✅ レスポンスの違いを詳細に比較する
- PUT
や DELETE
の動作を試した後、実際にデータが変更されているかを確認する。
- レスポンスの長さ(Content-Length)やエラーメッセージを見て、システムの挙動を分析する。
4. まとめ
✅ APIがサポートするHTTPメソッドを特定することで、新たな攻撃ベクターを発見できる
✅ Burp Intruderで複数のメソッドを自動テストし、動作するものを探す
✅ OPTIONSメソッドを利用して、許可されているメソッドを取得
✅ 意図しないHTTPメソッドが許可されている場合、データ改ざんや不正削除の可能性がある
HTTPメソッドのテストは、APIの脆弱性を探るための基本的なアプローチです。特に、DELETEが許可されている場合や、PATCH/PUTで制限なしにデータ変更が可能な場合は、重大なセキュリティリスク となるため、慎重に調査しましょう。
Best regrads, (^^ゞ