Hello there, ('ω')ノ
脆弱性報告レポート
(PortSwigger Web Security Academy – Lab: Inconsistent security controls)
概要(Summary) — 140 字以内
社員ドメイン @dontwannacry.com を用いてメールアドレスを変更すると、任意ユーザが /admin パネルへ昇格でき、管理操作(例:ユーザ carlos の削除)が実行可能。
再現手順(Steps) — 3〜5 行
- シークレットウィンドウで https://lab-url/ を開き、「Sign up」。
- メール欄に
anything@<あなたのID>.web-security-academy.net
を入力し登録。 - 画面上部「Email client」で確認メールを開き、リンクをクリック → 登録完了。
- ログイン後 My account → Update email で
staff@dontwannacry.com
などへ変更。 /admin
へ移動するとアクセス可能。Delete ボタンでユーザ carlos を削除。 (30 秒以内で再現可能)
結果(Result)
操作 | 観測値 |
---|---|
/admin 初回アクセス |
403 Forbidden(非社員) |
メール変更後 /admin 再アクセス |
200 OK/管理画面表示 |
DELETE /admin/delete?username=carlos |
“Successfully deleted user carlos” |
主要リクエスト差分
POST /my-account/change-email HTTP/1.1 Host: lab-url Cookie: session=… Content-Type: application/x-www-form-urlencoded - email=anything@<id>.web-security-academy.net + email=staff@dontwannacry.com
期待挙動(Expected) — 1 行
社員権限はサーバ側 RBAC により決定し、メール変更だけで権限が付与されてはならない(非社員は管理画面へ 403)。
影響度(Impact)
- 水平・垂直権限昇格:任意ユーザを管理者として扱える
- 機密データの閲覧/改ざん・アカウント削除など 深刻なビジネス損害
- OWASP A01:2021 Broken Access Control
- CWE-285 不適切な認可
修正提案(Optional)
- 社員フラグを DB など信頼できる値で管理し、メール入力値では決定しない。
- メール更新後は 再認証+ドメイン検証付き確認メール を必須に。
/admin
ルートに ロールベースアクセス制御 (RBAC) を実装。- 監査ログに 権限変更イベント を出力し、異常検知を自動化。
PoC 添付物
- Screenshot 1:403 表示(初回
/admin
) - Screenshot 2:メール変更フォーム (
@dontwannacry.com
) - Screenshot 3:管理画面と carlos 削除完了メッセージ
- PoC-request.txt / PoC-diff.txt:上記 email 変更リクエスト全文と差分
Retest プラン
修正後、email=staff@dontwannacry.com
変更 → /admin
で 403 が返ることを確認。未修正時は新スクショ添付でリオープンします。
7 日後まで進捗をお待ちしております。よろしくお願いいたします。
Best regards, (^^ゞ