戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

ネットワークスペシャリスト 2021年 午前221


問題文

Webアプリケーションソフトウェアの脆弱性を悪用する攻撃手法のうち、入力した文字列がPerlのsystem関数、PHPのexec関数などに渡されることを利用し、不正にシェルスクリプトを実行させるものは、どれに分類されるか。

選択肢

HTTPヘッダインジェクション
OSコマンドインジェクション(正解)
クロスサイトリクエストフォージェリ
セッションハイジャック

Webアプリケーションの脆弱性攻撃手法【午前2 解説】

要点まとめ

  • 結論:入力文字列がシェルコマンドとして実行される攻撃は「OSコマンドインジェクション」です。
  • 根拠:Perlのsystem関数やPHPのexec関数は外部コマンドを実行するため、入力値を直接渡すと不正実行されます。
  • 差がつくポイント:攻撃対象の関数や実行環境を理解し、どの攻撃手法が該当するかを正確に見極めることが重要です。

正解の理由

選択肢イの「OSコマンドインジェクション」は、Webアプリケーションが外部のOSコマンドを実行する関数にユーザ入力を直接渡すことで、攻撃者が任意のシェルコマンドを実行できる脆弱性を指します。
Perlのsystem関数やPHPのexec関数はまさに外部コマンドを実行するための関数であり、ここに悪意ある入力が渡されると不正なシェルスクリプトが実行されてしまいます。
他の選択肢はHTTPヘッダの改ざんやセッションの乗っ取り、リクエストの偽造に関する攻撃であり、シェルコマンドの実行とは異なります。

よくある誤解

  • クロスサイトリクエストフォージェリはユーザの意図しない操作を強制する攻撃であり、コマンド実行とは無関係です。
  • セッションハイジャックは認証情報の盗用であり、シェルスクリプトの実行とは異なります。

解法ステップ

  1. 問題文の「Perlのsystem関数、PHPのexec関数」を確認する。
  2. これらの関数がOSコマンドを実行する関数であることを思い出す。
  3. 入力文字列がこれらの関数に渡されることで不正なシェルスクリプトが実行される点に注目。
  4. 選択肢の中で「OSコマンドインジェクション」に該当するものを選ぶ。
  5. 他の選択肢の特徴と比較し、誤りを排除する。

選択肢別の誤答解説

  • ア: HTTPヘッダインジェクションはHTTPヘッダの改ざんを狙う攻撃であり、シェルコマンド実行とは無関係です。
  • イ: OSコマンドインジェクションは正解。外部コマンド実行関数に悪意ある入力を渡す攻撃です。
  • ウ: クロスサイトリクエストフォージェリはユーザの操作を偽装する攻撃で、コマンド実行とは異なります。
  • エ: セッションハイジャックはセッション情報の盗用であり、シェルスクリプトの実行とは関係ありません。

補足コラム

OSコマンドインジェクションは、Webアプリケーションの入力検証が不十分な場合に発生しやすい脆弱性です。
対策としては、外部コマンドの実行を極力避けること、どうしても必要な場合は入力値の厳格な検証やホワイトリスト方式の採用、または言語の安全なAPIを利用することが推奨されます。
また、Webアプリケーションファイアウォール(WAF)による検知も有効です。

FAQ

Q: OSコマンドインジェクションとSQLインジェクションはどう違いますか?
A: OSコマンドインジェクションはOSのシェルコマンドを不正実行させる攻撃で、SQLインジェクションはデータベースのSQL文を不正操作する攻撃です。
Q: PHPのexec関数以外にOSコマンドを実行する関数はありますか?
A: はい、system、shell_exec、passthruなど複数あります。これらも同様に注意が必要です。

関連キーワード: OSコマンドインジェクション、system関数、exec関数、Webアプリケーション脆弱性、シェルスクリプト実行、入力検証、セキュリティ対策
← 前の問題へ次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

ネットワークスペシャリスト
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について