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

情報処理安全確保支援士 2020年 秋期 午前201


問題文

Webサーバのログを分析したところ、Webサーバへの攻撃と思われるHTTPリクエストヘッダが記録されていた。次のHTTPリクエストヘッダから推測できる、攻撃者が悪用しようとしていた能弱性はどれか。ここで、HTTPリクエストヘッダ中の“%20”は空白を意味する。
〔HTTPリクエストヘッダの一部〕   GET /cgi-bin/submit.cgi?user=;cat%20/etc/passwdHTTP/1.1   Accept:/   Accept-Language:ja   UA-CPU:x86   Accept-Encoding:gzip, deflate   User-Agent:(省略)   Host:test.example.com   Connection:Keep-Alive

選択肢

HTTPヘッダインジェクション (HTTP Response Splitting)
OSコマンドインジェクション(正解)
SQLインジェクション
クロスサイトスクリプティング

Webサーバのログに記録されたHTTPリクエストヘッダから推測される攻撃の脆弱性【午前2 解説】

要点まとめ

  • 結論:HTTPリクエストのパラメータにOSコマンドを直接埋め込んでいるため、OSコマンドインジェクションが狙われている。
  • 根拠:
    user=;cat%20/etc/passwd
    のようにセミコロンでコマンドを区切り、システムコマンドを実行しようとしている点が典型的なOSコマンドインジェクションの手口。
  • 差がつくポイント:SQLインジェクションやXSSはデータベースやブラウザのスクリプトに関わる攻撃であり、コマンド実行の形跡がある場合はOSコマンドインジェクションを疑うこと。

正解の理由

HTTPリクエストのパラメータ部分に
;cat /etc/passwd
といったOSコマンドを直接埋め込んでいる点が決定的です。
セミコロンはシェルで複数コマンドを連続実行する区切り文字であり、これを利用してサーバ上で任意のコマンドを実行させる攻撃がOSコマンドインジェクションです。
この攻撃に成功すると、攻撃者はサーバのファイル内容を読み取ったり、任意のコマンドを実行できるため非常に危険です。

よくある誤解

SQLインジェクションはデータベース操作に関わる攻撃であり、コマンド実行とは異なります。
また、クロスサイトスクリプティングはブラウザ上でのスクリプト実行を狙う攻撃であり、サーバのOSコマンド実行とは別物です。

解法ステップ

  1. HTTPリクエストのパラメータ部分を確認する。
  2. ;
    %20
    (空白)などの特殊文字が含まれているかを探す。
  3. cat /etc/passwd
    のようなOSコマンドが埋め込まれているかを判別する。
  4. コマンド実行を狙う攻撃はOSコマンドインジェクションと判断する。
  5. 他の選択肢(SQLインジェクション、XSS、HTTPヘッダインジェクション)と比較し、攻撃対象の違いを理解する。

選択肢別の誤答解説

  • ア: HTTPヘッダインジェクション
    HTTPヘッダの改ざんやレスポンス分割を狙う攻撃であり、リクエストパラメータにOSコマンドが含まれるケースとは異なります。
  • イ: OSコマンドインジェクション
    正解。パラメータにOSコマンドを埋め込み、サーバ上で任意コマンドを実行させる攻撃です。
  • ウ: SQLインジェクション
    データベースへの不正なSQL文挿入を狙う攻撃で、
    cat /etc/passwd
    のようなOSコマンドは含みません。
  • エ: クロスサイトスクリプティング
    ブラウザ上でスクリプトを実行させる攻撃であり、サーバのOSコマンド実行とは無関係です。

補足コラム

OSコマンドインジェクションは、Webアプリケーションがユーザ入力を適切に検証せずにシェルコマンドに渡す場合に発生します。
対策としては、入力値の厳格な検証・エスケープや、シェルコマンドの直接実行を避ける設計が重要です。
また、
/etc/passwd
はUNIX系システムのユーザ情報ファイルであり、攻撃者が情報収集のために読み取ろうとする典型的なファイルです。

FAQ

Q: なぜセミコロンが危険なのですか?
A: セミコロンはシェルで複数コマンドを区切るため、ユーザ入力に含まれると任意のコマンドを追加実行される恐れがあります。
Q: SQLインジェクションとOSコマンドインジェクションの違いは?
A: SQLインジェクションはデータベース操作を不正に行う攻撃で、OSコマンドインジェクションはサーバOSのコマンドを実行させる攻撃です。
Q: HTTPヘッダインジェクションとは何ですか?
A: HTTPヘッダの改ざんやレスポンス分割を狙う攻撃で、主にHTTPレスポンスの制御を悪用します。

関連キーワード: OSコマンドインジェクション、HTTPリクエストヘッダ、セキュリティ脆弱性、Web攻撃、コマンド実行、CGI, サーバ攻撃
← 前の問題へ次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

情報処理安全確保支援士
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

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

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