OS コマンドインジェクションの見分け方
出典: 令和7年度 春期 応用情報技術者試験 午前 問36 (IPA)
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 インジェクション
- エ クロスサイトスクリプティング
正解と解説を見る
正解: イ
- ア: HTTP ヘッダーインジェクションは、改行コードなどをパラメータに入れて応答ヘッダーを不正に操作する攻撃です。
- イ: OS のコマンド (cat) とファイル名を、セミコロンでつないで実行させようとしており、OS コマンドインジェクションです。正しい答えです。
- ウ: SQL インジェクションは、SQL 文を不正に変更する攻撃で、SQL の構文 (' や OR など) が現れます。
- エ: クロスサイトスクリプティングは、スクリプト (<script> など) を埋め込む攻撃です。
ポイント
- リクエストの user パラメータに ;cat%20/etc/passwd (「; cat /etc/passwd」) があります。
- セミコロンで命令を区切り、OS のコマンドを実行させてパスワードファイルを読み出そうとしている ので、OS コマンドインジェクション です。