令和2年度 10月 午前Ⅱ 問1
攻撃手法
HTTPリクエストヘッダの問題
Web サーバのログを分析したところ,Web サーバへの攻撃と思われる HTTP リクエストヘッダが記録されていた。次の HTTP リクエストヘッダから推測できる,攻撃者が悪用しようとしていた脆弱性はどれか。ここで,HTTP リクエストヘッダ中の“%20”は空白を意味する。
〔HTTP リクエストヘッダの一部〕
GET /cgi-bin/submit.cgi?user=;cat%20/etc/passwd HTTP/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 インジェクション
- エクロスサイトスクリプティング
答えと解説を見る
✓ これが正解イOS コマンドインジェクション
解説
セミコロンの後にシェルの命令が続く形は、OS コマンドの注入です。
手掛かりは、パラメタ user に渡された値です。%20 を空白に戻すと、値はセミコロンで始まり、その後に cat /etc/passwd という命令が続きます。シェルではセミコロンが命令の区切りになります。CGI がこの値をそのままシェルに渡すと、本来の処理の後に cat が実行され、/etc/passwd の中身が応答に混ざるおそれがあります。つまり攻撃者は、Web アプリケーションを通してサーバの OS に命令を実行させようとしています。これが OS コマンドインジェクションです。見分けるときは、送り込まれた文字列がどの言語で書かれているかに注目します。シェルの命令なのか、データベースへの問合せなのか、ブラウザで動くスクリプトなのかで、攻撃の種類が決まります。
ほかの選択肢はなぜ違うのか
- アHTTP ヘッダインジェクション(HTT…:HTTP ヘッダインジェクションは、改行コードを値に紛れ込ませて応答ヘッダを分割させる攻撃です。このリクエストの値には改行を表す %0d%0a が含まれていません。狙いは応答ヘッダの操作ではなく、サーバ側での命令の実行です。
- ウSQL インジェクション:SQL インジェクションなら、値にシングルクォートや OR 1=1 のような SQL 文の断片が現れるはずです。ここで送られているのは cat というシェルの命令で、データベースへの問合せを書き換える形ではありません。
- エクロスサイトスクリプティング:クロスサイトスクリプティングなら、script タグなどブラウザで動くスクリプトが値に埋め込まれます。今回の値は利用者のブラウザではなく、サーバの OS に向けた命令なので、攻撃の的が違います。
この問題の用語
- ログいつ誰が何をしたかを、機器やソフトウェアが自動で残していく記録です。あとから出来事をたどれるので、事故の調査や不正の発見に使われます。
- 分析集めたデータを細かく分けて、何がどう関わっているかを読み取ること。量が増えるほど、扱う道具も考え方も変わります。
- HTTPWebブラウザとWebサーバがページをやり取りするための決まりごと。ブラウザが要求を送り、サーバが応答を返す形で通信します。
- 脆弱性OSやソフトに残っている、攻撃の足掛かりになりうる弱点のこと。開発元が配る修正パッチを当ててふさぎます。
- クロスサイトスクリプティング出力処理の不備を突き、利用者のブラウザで攻撃者のスクリプトを動かす攻撃です。防ぐには、出力する文字を無害な形に置き換えます。
出典:令和2年度 10月 情報処理安全確保支援士試験 午前Ⅱ 問1
同じ用語が出る問題
- 令和7年度 秋期 午前Ⅱ 問20:ステータスコードに関する説明(HTTP)
- 令和7年度 秋期 午前Ⅱ 問16(HTTP)
- 令和3年度 春期 午前Ⅱ 問12:SQLインジェクションの問題(クロスサイトスクリプティング)
- 平成30年度 春期 午前Ⅱ 問2:HTTPリクエストヘッダの問題(クロスサイトスクリプティング)
- 平成27年度 秋期 情報セキュリティスペシャリスト試験 午前Ⅱ 問12(クロスサイトスクリプティング)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)