Hello there, ('ω')ノ
ラボの目的
このラボでは、公開されているAPIドキュメントを見つけ、それを利用してユーザー "carlos" を削除します。
ログイン情報として、以下の資格情報が与えられています。
ユーザー名: wiener
パスワード: peter
手順
Burpのブラウザでアプリケーションにログイン
wiener:peter
を使用してログインする。- ログイン後、自分のメールアドレスを更新する。
APIリクエストを取得
- Burp Suite の
Proxy > HTTP history
タブを開く。 PATCH /api/user/wiener
というリクエストを探し、右クリック → 「Send to Repeater」 を選択。
- Burp Suite の
RepeaterでAPIエンドポイントを調査
PATCH /api/user/wiener
のリクエストを送信し、レスポンスを確認。/wiener
を削除し、PATCH /api/user
に変更して送信 → エラーが発生する(ユーザーIDがないため)。/user
を削除し、PATCH /api
に変更して送信 → APIドキュメントが取得される!
APIドキュメントを表示
- レスポンスを右クリック → 「Show response in browser」 を選択。
- URLをコピーしてBurpのブラウザに貼り付ける。
- APIドキュメントが表示される(Swagger UIなどのインタラクティブドキュメント)。
DELETEリクエストで "carlos" を削除
- ドキュメント内で
DELETE
メソッドを探す。 - ユーザーを削除するエンドポイントを見つける(例:
/api/user/{username}
)。 carlos
を入力し、リクエストを送信。
- ドキュメント内で
ラボのクリア
carlos
の削除に成功すれば、ラボ完了!
ポイント
- APIドキュメントの発見が重要!
PATCH /api/user/wiener
→PATCH /api/user
→PATCH /api
とパスを短縮することで、ドキュメントを取得できる場合がある。 - Swagger UI などのインタラクティブドキュメントがあれば、攻撃しやすくなる!
- 権限チェックが適切でないAPIは簡単に悪用可能。
DELETE
メソッドを直接実行できてしまうのは、認可の欠陥がある証拠。
この方法を応用すれば、他のAPIの脆弱性も見つけやすくなるので、ぜひ試してみましょう!
Best regards, (^^ゞ