Hello there, ('ω')ノ
🛠 脆弱性報告レポート
タイトル: Insecure Direct Object Reference によるチャットログからのパスワード漏洩
✅ 概要(Summary)
チャットログ閲覧機能が 連番ファイル名を直接指定できる静的 URL で管理されており、他ユーザのトランスクリプトにアクセス可能。これによりユーザ carlos のパスワードを入手し、アカウントへ不正ログインが可能。
🔁 再現手順(Steps)
https://<LAB-ID>.web-security-academy.netにアクセス- 「Live chat」から任意のメッセージ送信後「View transcript」をクリック
/download-transcript/2.txtのような URL が表示される- Burp でリクエストをキャプチャし、
filenameパラメータを1.txtに変更して再送 - レスポンス内にユーザ carlos の認証情報(平文パスワード)が含まれる
/login画面で carlos のアカウントにログイン → 成功
📸 結果(Result)
- アクセスした URL:
GET /download-transcript/1.txt HTTP/1.1
Host: <LAB-ID>.web-security-academy.net
- レスポンス例:
[Support] Hi carlos, your temporary password is: s3cr3t-p@ss
- 不正利用結果:
carlosアカウントにログイン成功
🧾 期待挙動(Expected)
チャットログは アクセス制御(認証済みユーザのみ、本人のログのみ) が必要であり、他ユーザ ID や連番指定で取得できてはならない。
⚠ 影響度(Impact)
- 水平権限昇格:他ユーザのログや認証情報への不正アクセス
- 機密情報漏洩:パスワード・個人情報の流出
- 業務影響:不正ログイン・アカウント乗っ取り・顧客信用失墜
- OWASP A01:2021 Broken Access Control
- CWE-639 Authorization Bypass Through User-Controlled Key
🛠 修正提案(Optional)
- アクセス制御の実装:ログインユーザ ID とチャットファイルを厳密に紐づける
- 推測困難な識別子の利用:
UUIDなどのランダムトークンをファイル名に採用 - 保存形式改善:ファイルシステム直置きではなく、DB や認証ゲート付き API を介して配布
- 監査ログ強化:不審なファイルアクセスを検知・通知する仕組みを追加
🧩 PoC 添付物
- Screenshot 1:
/download-transcript/2.txtと/download-transcript/1.txtの比較表示 - PoC-request.diff:
- GET /download-transcript/2.txt
+ GET /download-transcript/1.txt
🔁 修正後の Retest
修正通知後、/download-transcript/1.txt へ直接アクセスした際に 403 Forbidden またはリダイレクトが返ることを確認。
Best regards, (^^ゞ