Shikata Ga Nai

Private? There is no such things.

LAB: ユーザーIDがリクエストパラメータで制御され、パスワードが漏洩する脆弱性の攻略手順

Hello there, ('ω')ノ

🔍 概要

このラボでは、ユーザーアカウントページに現在のユーザーのパスワードがマスクされた入力欄にプレフィルされているという脆弱性があります。この脆弱性を利用して、管理者のパスワードを取得し、ユーザーcarlosを削除することでラボを解決します。


🛠️ 攻略手順

  1. 提供された資格情報でログインする

    • ユーザー名: wiener
    • パスワード: peter
  2. アカウントページにアクセスする

    • ログイン後、My Accountページに移動します。
    • URLは以下のようになっています:

      https://<lab-id>.web-security-academy.net/my-account?id=wiener
      
  3. idパラメータをadministratorに変更する

    • URLのidパラメータをadministratorに変更してアクセスします:

      https://<lab-id>.web-security-academy.net/my-account?id=administrator
      
  4. 管理者のパスワードを取得する

    • アカウントページのパスワード入力欄を右クリックし、「検証」または「要素を検証」を選択します。
    • 開発者ツールで<input>タグを確認し、value属性に設定されているパスワードを取得します。
  5. 管理者アカウントでログインする

    • ログアウトし、取得したパスワードを使用してadministratorアカウントでログインします。
  6. 管理者パネルにアクセスし、carlosを削除する

    • ログイン後、Admin panelへのリンクが表示されます。これをクリックして管理者パネルにアクセスします。
    • 管理者パネルでユーザーcarlosを削除します。

🧠 ポイントと注意点

  • 水平から垂直への権限昇格: この攻撃は、他のユーザーの情報にアクセスする水平的権限昇格から始まり、管理者アカウントを乗っ取る垂直的権限昇格へと発展します。
  • パスワードのプレフィル: パスワードがプレフィルされていること自体が重大なセキュリティリスクです。特に、他のユーザーのアカウントページにアクセスできる場合、パスワードが漏洩する可能性があります。
  • 開発者ツールの活用: ブラウザの開発者ツールを使用して、マスクされたパスワードの実際の値を確認できます。

✅ まとめ

このラボでは、リクエストパラメータによってユーザーIDが制御されていることと、パスワードがプレフィルされているという2つの脆弱性を組み合わせて、管理者アカウントを乗っ取り、ユーザーcarlosを削除する方法を学びました。これにより、アクセス制御の欠陥がどのように深刻なセキュリティリスクにつながるかを理解できます。

Best regards, (^^ゞ