ネットワークスペシャリスト 2015年 午前2 問20
問題文
Webアプリケーションの脆弱性を悪用する攻撃手法のうち,Webページ上で入力した文字列がPerlのsystem関数やPHPのexec関数などに渡されることを利用し、不正にシェルスクリプトや実行形式のファイルを実行させるものは、どれに分類されるか。
選択肢
ア:HTTPヘッダインジェクション
イ:OSコマンドインジェクション(正解)
ウ:クロスサイトリクエストフォージェリ
エ:セッションハイジャック
Webアプリケーションの脆弱性攻撃手法【午前2 解説】
要点まとめ
- 結論:Webページの入力が直接OSコマンド実行関数に渡される攻撃は「OSコマンドインジェクション」です。
- 根拠:Perlのsystem関数やPHPのexec関数はOSコマンドを実行するため、入力値を検証せずに渡すと任意のコマンドが実行されます。
- 差がつくポイント:HTTPヘッダやセッション操作と混同せず、入力値がOSコマンドとして実行される点を正確に理解することが重要です。
正解の理由
選択肢イの「OSコマンドインジェクション」は、Webアプリケーションがユーザー入力をOSのコマンド実行関数に渡す際に、悪意あるコマンドを実行させる攻撃手法です。Perlのsystem関数やPHPのexec関数はOSコマンドを実行するため、入力値を適切に検証・無害化しないと攻撃者が任意のコマンドを実行可能になります。これが問題文の状況に該当します。
よくある誤解
- HTTPヘッダインジェクションはHTTPヘッダの改ざんを狙う攻撃であり、OSコマンドの実行とは異なります。
- クロスサイトリクエストフォージェリはユーザーの意図しない操作を強制する攻撃で、コマンド実行とは関係ありません。
解法ステップ
- 問題文のキーワード「Perlのsystem関数」「PHPのexec関数」を確認する。
- これらの関数がOSコマンドを実行することを理解する。
- 入力文字列がこれらの関数に渡されることで不正なコマンド実行が起きる攻撃を考える。
- 選択肢の中でOSコマンド実行に関わる攻撃を選ぶ。
- 「OSコマンドインジェクション」が該当するため、これを正解とする。
選択肢別の誤答解説
- ア: HTTPヘッダインジェクションはHTTPヘッダの改ざんを狙う攻撃で、OSコマンド実行とは無関係です。
- イ: OSコマンドインジェクションは入力値をOSコマンドとして実行させる攻撃で、問題文の状況に合致します。
- ウ: クロスサイトリクエストフォージェリはユーザーの操作を偽装する攻撃で、コマンド実行とは異なります。
- エ: セッションハイジャックはセッション情報を盗用する攻撃で、コマンド実行とは関係ありません。
補足コラム
OSコマンドインジェクションは、Webアプリケーションの入力値を適切に検証・サニタイズしない場合に発生します。対策としては、入力値のホワイトリスト化、パラメータ化されたAPIの利用、OSコマンドの直接実行を避ける設計が推奨されます。また、Webアプリケーションファイアウォール(WAF)による検知も有効です。
FAQ
Q: OSコマンドインジェクションとSQLインジェクションはどう違いますか?
A: OSコマンドインジェクションはOSのコマンドを実行させる攻撃で、SQLインジェクションはデータベースのSQL文を不正に操作する攻撃です。対象が異なります。
A: OSコマンドインジェクションはOSのコマンドを実行させる攻撃で、SQLインジェクションはデータベースのSQL文を不正に操作する攻撃です。対象が異なります。
Q: なぜPHPのexec関数は危険なのですか?
A: exec関数は引数として渡された文字列をOSのコマンドとして実行するため、入力値を検証しないと任意のコマンドが実行されてしまいます。
A: exec関数は引数として渡された文字列をOSのコマンドとして実行するため、入力値を検証しないと任意のコマンドが実行されてしまいます。
関連キーワード: OSコマンドインジェクション、system関数、exec関数、Webアプリケーション脆弱性、コマンド実行攻撃

\ せっかくなら /
ネットワークスペシャリストを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

