Hello there, ('ω')ノ
🎯 目的
このラボでは、ユーザーアカウントページに水平的権限昇格の脆弱性が存在し、ユーザーがGUID(Globally Unique Identifier)で識別されています。攻撃者は、他のユーザーのGUIDを取得することで、そのユーザーのアカウント情報に不正アクセスできます。
🛠️ 手順
1. カルロスのブログ投稿を見つける
- ラボのホームページにアクセスし、カルロス(
carlos
)によるブログ投稿を探します。
2. カルロスのユーザーID(GUID)を取得する
- カルロスの名前をクリックすると、URLに彼のユーザーID(GUID)が表示されます。
- 例:
https://<lab-id>.web-security-academy.net/blogs?userId=2603c122-a7b8-4bda-b0eb-780b8fbc5016
- このGUID(例では
2603c122-a7b8-4bda-b0eb-780b8fbc5016
)をメモします。
3. 自分のアカウントにログインする
提供された資格情報を使用してログインします。
- ユーザー名:
wiener
- パスワード:
peter
- ユーザー名:
4. カルロスのアカウントページにアクセスする
自分のアカウントページのURLにアクセスします。
- 例:
https://<lab-id>.web-security-academy.net/my-account?id=<your-GUID>
- 例:
URLの
id
パラメータの値を、先ほど取得したカルロスのGUIDに置き換えます。- 例:
https://<lab-id>.web-security-academy.net/my-account?id=2603c122-a7b8-4bda-b0eb-780b8fbc5016
- 例:
5. カルロスのAPIキーを取得する
- カルロスのアカウントページにアクセスすると、彼のAPIキーが表示されます。
- このAPIキーをコピーします。
6. ソリューションを提出する
- ラボの「Submit solution」セクションに移動し、コピーしたAPIキーを貼り付けて提出します。
💡 ポイント
- GUIDは推測が困難ですが、アプリケーション内で他のユーザーのGUIDが露出している場合、攻撃者はそれを利用して不正アクセスできます。
- このような脆弱性は、Insecure Direct Object Reference(IDOR) として知られています。
- アクセス制御は、ユーザーがリクエストするリソースに対して適切な権限を持っているかをサーバー側で検証する必要があります。
🧠 学習のまとめ
- 水平的権限昇格は、同じ権限レベルのユーザーが他のユーザーのデータや機能に不正アクセスすることを指します。
- IDORは、ユーザーが直接リソースを指定できてしまう脆弱性であり、適切なアクセス制御が実装されていない場合に発生します。
- アプリケーションは、ユーザーがアクセスを試みるリソースに対して、サーバー側で厳密な所有者チェックを行う必要があります。
Best regards, (^^ゞ