ホーム > 情報処理安全確保支援士試験 > 2020年 秋期
情報処理安全確保支援士試験 2020年 秋期 午前2 問01
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リクエストのパラメータ部分に
セミコロンはシェルで複数コマンドを連続実行する区切り文字であり、これを利用してサーバ上で任意のコマンドを実行させる攻撃がOSコマンドインジェクションです。
この攻撃に成功すると、攻撃者はサーバのファイル内容を読み取ったり、任意のコマンドを実行できるため非常に危険です。
;cat /etc/passwd
といったOSコマンドを直接埋め込んでいる点が決定的です。セミコロンはシェルで複数コマンドを連続実行する区切り文字であり、これを利用してサーバ上で任意のコマンドを実行させる攻撃がOSコマンドインジェクションです。
この攻撃に成功すると、攻撃者はサーバのファイル内容を読み取ったり、任意のコマンドを実行できるため非常に危険です。
よくある誤解
SQLインジェクションはデータベース操作に関わる攻撃であり、コマンド実行とは異なります。
また、クロスサイトスクリプティングはブラウザ上でのスクリプト実行を狙う攻撃であり、サーバのOSコマンド実行とは別物です。
また、クロスサイトスクリプティングはブラウザ上でのスクリプト実行を狙う攻撃であり、サーバのOSコマンド実行とは別物です。
解法ステップ
- HTTPリクエストのパラメータ部分を確認する。
;
や%20
(空白)などの特殊文字が含まれているかを探す。cat /etc/passwd
のようなOSコマンドが埋め込まれているかを判別する。- コマンド実行を狙う攻撃はOSコマンドインジェクションと判断する。
- 他の選択肢(SQLインジェクション、XSS、HTTPヘッダインジェクション)と比較し、攻撃対象の違いを理解する。
選択肢別の誤答解説
- ア: HTTPヘッダインジェクション
HTTPヘッダの改ざんやレスポンス分割を狙う攻撃であり、リクエストパラメータにOSコマンドが含まれるケースとは異なります。 - イ: OSコマンドインジェクション
正解。パラメータにOSコマンドを埋め込み、サーバ上で任意コマンドを実行させる攻撃です。 - ウ: SQLインジェクション
データベースへの不正なSQL文挿入を狙う攻撃で、cat /etc/passwd
のようなOSコマンドは含みません。 - エ: クロスサイトスクリプティング
ブラウザ上でスクリプトを実行させる攻撃であり、サーバのOSコマンド実行とは無関係です。
補足コラム
OSコマンドインジェクションは、Webアプリケーションがユーザ入力を適切に検証せずにシェルコマンドに渡す場合に発生します。
対策としては、入力値の厳格な検証・エスケープや、シェルコマンドの直接実行を避ける設計が重要です。
また、
対策としては、入力値の厳格な検証・エスケープや、シェルコマンドの直接実行を避ける設計が重要です。
また、
/etc/passwd
はUNIX系システムのユーザ情報ファイルであり、攻撃者が情報収集のために読み取ろうとする典型的なファイルです。FAQ
Q: なぜセミコロンが危険なのですか?
A: セミコロンはシェルで複数コマンドを区切るため、ユーザ入力に含まれると任意のコマンドを追加実行される恐れがあります。
A: セミコロンはシェルで複数コマンドを区切るため、ユーザ入力に含まれると任意のコマンドを追加実行される恐れがあります。
Q: SQLインジェクションとOSコマンドインジェクションの違いは?
A: SQLインジェクションはデータベース操作を不正に行う攻撃で、OSコマンドインジェクションはサーバOSのコマンドを実行させる攻撃です。
A: SQLインジェクションはデータベース操作を不正に行う攻撃で、OSコマンドインジェクションはサーバOSのコマンドを実行させる攻撃です。
Q: HTTPヘッダインジェクションとは何ですか?
A: HTTPヘッダの改ざんやレスポンス分割を狙う攻撃で、主にHTTPレスポンスの制御を悪用します。
A: HTTPヘッダの改ざんやレスポンス分割を狙う攻撃で、主にHTTPレスポンスの制御を悪用します。
関連キーワード: OSコマンドインジェクション, HTTPリクエストヘッダ, セキュリティ脆弱性, Web攻撃, コマンド実行, CGI, サーバ攻撃