Mission
ファイルアップローダーに .html を入れさせるな
ファイル共有ツールは、アップロードされたファイルを拡張子チェックなしで保存し、/files/<name> から Express の static で配信している。攻撃者は malicious.html を上げて GET /files/malicious.html を踏ませることで、同一オリジン内で任意の JavaScript を実行できてしまう。攻撃テストで .html がアップロード・実行できることを確認し、許可拡張子をホワイトリストで絞る方向へコードを修正しよう。
multer の fileFilter を設定せず、ファイル名もそのまま使っているため、.html を含む任意拡張子がそのまま保存され、static で配信されています。許可する拡張子をホワイトリスト化し、ファイル名もサニタイズする方向の修正を目指します。
脆弱性
Insecure File Upload
難易度
Easy
状態
available
Difficulty
出題モードを選ぶと、プレビュー有無・ヒント・スコア上限が変わります。
次にやること: 攻撃テストを実行
Step 1
攻撃テスト
malicious.html をアップロードし、その後 /files/malicious.html を取得して Content-Type が text/html で返ることを確認しましょう。
Lightweight Preview
File Share / mvp-0.3
POST /upload
Payload
POST /upload malicious.html → GET /files/malicious.html (text/html で配信)
この問題は低メモリ公開版では軽量プレビューです。検証は静的パッチ判定で行います。
自動攻撃で検証
未実行$ automated-attack
使用ペイロード: POST /upload malicious.html → GET /files/malicious.html (text/html で配信)
ボタンを押すと、左のプレビューを手動で操作しなくても 脆弱性の有無を即座に判定します。
実際の脆弱アプリケーションに対して攻撃を実行し、防御を検証します。