Mission
診断ツールのシェルを黙らせろ
ネットワーク診断ツールの /ping エンドポイントは、受け取った host をそのままシェルコマンド文字列に埋め込んで実行している。; や && などのメタ文字を混ぜると ping の後に任意のコマンドを追加実行できてしまう。攻撃テストで動作を確認し、シェルを介さない形でコマンドを呼ぶ方向へコードを修正しよう。
ユーザー入力をシェルコマンド文字列に直接結合しているため、シェルがメタ文字を解釈してしまいます。exec ではなく execFile でホスト名を引数として渡し、ホワイトリスト正規表現で入力を検証する方向の修正を目指します。
脆弱性
Command Injection
難易度
Easy
状態
available
Difficulty
出題モードを選ぶと、プレビュー有無・ヒント・スコア上限が変わります。
現在ステップ: Step 1状態: 未開始
次にやること: 攻撃テストを実行
Step 1
攻撃テスト
host に 127.0.0.1; cat /etc/passwd を渡した疑似攻撃を実行し、任意コマンドの出力が返ることを確認しましょう。
Lightweight Preview
Network Diagnostics / beta-0.1
POST /ping
Payload
127.0.0.1; cat /etc/passwd
この問題は低メモリ公開版では軽量プレビューです。検証は静的パッチ判定で行います。
自動攻撃で検証
未実行$ automated-attack
使用ペイロード: 127.0.0.1; cat /etc/passwd
ボタンを押すと、左のプレビューを手動で操作しなくても 脆弱性の有無を即座に判定します。
実際にシェルコマンドを実行したりはせず、学習用の疑似判定だけを表示します。