応用情報技術者試験 令和7年度 春期 午前 問36
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
選択肢を押すと答え合わせができます。
正解と解説を見る
【正解】イ
パラメータuserの値に「;cat /etc/passwd」が埋め込まれています。「%20」は空白なので、実際にはセミコロンに続いて「cat /etc/passwd」という文字列になります。セミコロンは、UNIX系OSのシェルで複数のコマンドを区切る記号です。CGIプログラムが受け取った値を適切に検査せず、シェルコマンドの一部として実行すると、本来の処理に続いてcatコマンドが動作し、利用者情報などが格納されたファイルの内容を読み取られるおそれがあります。したがって、悪用しようとしていた脆弱性はOSコマンドインジェクションです。
アのHTTPヘッダーインジェクションは誤りです。これは、改行コードなどを入力させてHTTPレスポンスヘッダーを不正に追加し、応答を分割したりCookieを操作したりする攻撃です。
ウのSQLインジェクションは誤りです。これは、入力値にSQLの構文を混入させ、データベースの検索、更新、削除などを不正に行わせる攻撃です。
エのクロスサイトスクリプティングは誤りです。これは、Webページに悪意のあるスクリプトを混入させ、そのページを閲覧した利用者のブラウザ上で実行させる攻撃です。
【ポイント】 OSコマンドインジェクションでは、「;」「|」「&」などのシェルの制御記号が手掛かりになります。 対策では、外部入力をシェルへ渡さず、安全なAPIを使用することが基本です。やむを得ず渡す場合は、許可リストによる入力検証を徹底します。
出典:令和7年度 春期 応用情報技術者試験 午前 問36
※ 解説は SkillStack 編集部が作成したものです。Web 表示のため、図表の配置や表記を一部改めています。
この回の80問を、アプリで通しで解く
- 本番と同じ問題数・制限時間で通し演習(模試モード)
- 間違えた問題は自動で「復習すべき問題」に回る
- 解説で分からない点はAIに質問できる