Shikata Ga Nai

Private? There is no such things.

Lab: Inconsistent security controlsの脆弱性報告レポート

Hello there, ('ω')ノ

脆弱性報告レポート

(PortSwigger Web Security Academy – Lab: Inconsistent security controls


概要(Summary) — 140 字以内

社員ドメイン @dontwannacry.com を用いてメールアドレスを変更すると、任意ユーザが /admin パネルへ昇格でき、管理操作(例:ユーザ carlos の削除)が実行可能。


再現手順(Steps) — 3〜5 行

  1. シークレットウィンドウhttps://lab-url/ を開き、「Sign up」。
  2. メール欄に anything@<あなたのID>.web-security-academy.net を入力し登録。
  3. 画面上部「Email client」で確認メールを開き、リンクをクリック → 登録完了。
  4. ログイン後 My accountUpdate emailstaff@dontwannacry.com などへ変更。
  5. /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)

  1. 社員フラグを DB など信頼できる値で管理し、メール入力値では決定しない。
  2. メール更新後は 再認証+ドメイン検証付き確認メール を必須に。
  3. /admin ルートに ロールベースアクセス制御 (RBAC) を実装。
  4. 監査ログに 権限変更イベント を出力し、異常検知を自動化。

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, (^^ゞ