Hello there, ('ω')ノ
🎯 ラボの目的
このラボでは、特定のドメイン(@dontwannacry.com)のメールアドレスを持つユーザーにのみ管理者パネルへのアクセスが許可されているという設定のもと、メールアドレスの変更機能の不備を突いて、任意のユーザーが管理者機能にアクセスできる脆弱性を検証します。
🛠️ 手順と解説
1. 管理者パネルの存在を確認
- ラボのURLにアクセスし、
/admin
に移動します。 - アクセスが拒否され、「DontWannaCryの従業員のみアクセス可能」といったメッセージが表示されることを確認します。
2. 新規アカウントの登録
- 「Register」ページに移動し、任意のユーザー名とパスワードを入力します。
- メールアドレスには、ラボで提供されている自分専用のメールドメイン(例:
your-email-id.web-security-academy.net
)を使用します。 - 登録後、ラボの「Email client」から確認メールを開き、リンクをクリックして登録を完了させます。
3. メールアドレスの変更
- ログイン後、「My account」ページに移動します。
- メールアドレスの変更オプションを選択し、新しいメールアドレスとして任意の
@dontwannacry.com
アドレス(例:test@dontwannacry.com
)を入力します。 - 変更を保存します。
4. 管理者パネルへのアクセスとユーザーの削除
- 再度
/admin
にアクセスすると、今度はアクセスが許可され、管理者パネルが表示されることを確認します。 - 管理者パネル内で、ユーザー「carlos」を削除します。
🔍 脆弱性のポイントと対策
問題点
- メールアドレスのドメインによる認証: アプリケーションは、メールアドレスのドメイン部分(@dontwannacry.com)によってユーザーの権限を判断しています。
- メールアドレス変更時の検証不足: ユーザーがメールアドレスを変更する際、新しいメールアドレスのドメインに対する適切な検証が行われていません。
対策
- サーバーサイドでの厳格な検証: メールアドレスの変更時には、新しいアドレスが許可されたドメインであるかをサーバー側で検証し、必要に応じて再認証を要求する。
- 権限の再評価: メールアドレスの変更など、ユーザーの属性が変わる操作が行われた場合、ユーザーの権限を再評価し、必要に応じてセッションの再確立を求める。
🧠 まとめ
このラボは、ビジネスロジックの不備がどのようにしてセキュリティ上の重大な脆弱性につながるかを示しています。特に、ユーザーの属性(この場合はメールアドレスのドメイン)に基づいて権限を決定する際には、その属性が変更可能であることを考慮し、適切な検証と制御を実装する必要があります。
Best regards, (^^ゞ