Shikata Ga Nai

Private? There is no such things.

LAB: APIドキュメントを利用したエンドポイントの悪用

Hello there, ('ω')ノ

ラボの目的

このラボでは、公開されているAPIドキュメントを見つけ、それを利用してユーザー "carlos" を削除します。
ログイン情報として、以下の資格情報が与えられています。
ユーザー名: wiener
パスワード: peter


手順

  1. Burpのブラウザでアプリケーションにログイン

    • wiener:peter を使用してログインする。
    • ログイン後、自分のメールアドレスを更新する。
  2. APIリクエストを取得

    • Burp SuiteProxy > HTTP history タブを開く。
    • PATCH /api/user/wiener というリクエストを探し、右クリック → 「Send to Repeater」 を選択。
  3. RepeaterでAPIエンドポイントを調査

    • PATCH /api/user/wiener のリクエストを送信し、レスポンスを確認。
    • /wiener を削除し、PATCH /api/user に変更して送信 → エラーが発生する(ユーザーIDがないため)。
    • /user を削除し、PATCH /api に変更して送信 → APIドキュメントが取得される!
  4. APIドキュメントを表示

    • レスポンスを右クリック → 「Show response in browser」 を選択。
    • URLをコピーしてBurpのブラウザに貼り付ける
    • APIドキュメントが表示される(Swagger UIなどのインタラクティブドキュメント)。
  5. DELETEリクエストで "carlos" を削除

    • ドキュメント内で DELETE メソッドを探す。
    • ユーザーを削除するエンドポイントを見つける(例: /api/user/{username})。
    • carlos を入力し、リクエストを送信。
  6. ラボのクリア

    • carlos の削除に成功すれば、ラボ完了!

ポイント

  • APIドキュメントの発見が重要!
    PATCH /api/user/wienerPATCH /api/userPATCH /api とパスを短縮することで、ドキュメントを取得できる場合がある。
  • Swagger UI などのインタラクティブドキュメントがあれば、攻撃しやすくなる!
  • 権限チェックが適切でないAPIは簡単に悪用可能。
    • DELETE メソッドを直接実行できてしまうのは、認可の欠陥がある証拠。

この方法を応用すれば、他のAPIの脆弱性も見つけやすくなるので、ぜひ試してみましょう!

Best regards, (^^ゞ