Mission

公開ダウンローダーから ../ を締め出せ

社内ツールの公開ファイルダウンローダーは、クエリパラメータで受け取ったファイル名をそのまま public/ ディレクトリに結合して返している。名前に ../ を混ぜると想定外のディレクトリへ脱出でき、非公開ファイルまで読み取れてしまう。攻撃テストで動作を確認し、パスを正規化して公開ディレクトリ内に限定するコードへ修正しよう。

ユーザー指定のファイル名を検証せずに path.join へ渡しているため、../ でディレクトリを遡れます。パスを解決した後で公開ディレクトリの配下かどうかを確かめる方向の修正を目指します。

脆弱性

Path Traversal

難易度

Easy

状態

available

Difficulty

出題モードを選ぶと、プレビュー有無・ヒント・スコア上限が変わります。

現在ステップ: Step 1状態: 未開始

次にやること: 攻撃テストを実行

Step 1

攻撃テスト

name パラメータに ../../secret/flag.txt を渡した疑似攻撃を実行し、想定外ファイルが返ることを確認しましょう。

Lightweight Preview

File Downloader / internal-0.2

GET /download?name=<filename>

static

Payload

../../secret/flag.txt

この問題は低メモリ公開版では軽量プレビューです。検証は静的パッチ判定で行います。

自動攻撃で検証

未実行

$ automated-attack

使用ペイロード: ../../secret/flag.txt

ボタンを押すと、左のプレビューを手動で操作しなくても 脆弱性の有無を即座に判定します。

実際のファイルシステムへはアクセスせず、学習用の疑似判定だけを表示します。