情報処理安全確保支援士平成30年春期 午前U 問2

午前U 問2

Webサーバのログを分析したところ,Webサーバへの攻撃と思われるHTTPリクエストヘッダが記録されていた。次のHTTPリクエストヘッダから推測できる,攻撃者が悪用しようとしている脆弱性はどれか。ここで,HTTPリクエストヘッダはデコード済みである。

〔HTTPリクエストヘッダの部分〕
GET /cgi-bin/submit.cgi?user=;cat /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ヘッダインジェクション
  • OSコマンドインジェクション
  • SQLインジェクション
  • クロスサイトスクリプテイング

分類

テクノロジ系 » セキュリティ » 情報セキュリティ

正解

解説

HTTPリクエストヘッダ中で注目すべきは「?user=;cat /etc/passwd」の部分です。

「cat」は、UNIX系のOSにおいて指定ファイルの内容をそのまま標準出力に出力するコマンドです。そして「/etc/passwd」は、ユーザのアカウント情報(ユーザ名・パスワード等)が記録されているファイルですから、「cat /etc/passwd」はシステムが管理するユーザのアカウント情報を全て表示する操作を意図したものです。

もしWebアプリケーションの処理内でOSのシェルを利用する関数を使用し、これにuserパラメタの値をそのまま実行時引数として与えたとすると、サブルーチンとして呼び出されるOSのコマンド解釈プログラムでは以下の命令が実行されます。
本来実行されるコマンド名 ;cat /etc/passwd
実行時引数内の「;(セミコロン)」は命令の区切りを意味するため、システムは上記の文字列を以下の2つの命令であると解釈します。
本来実行されるコマンド名
cat /etc/passwd
この結果「cat /etc/passwd」が実行され、ブラウザの結果画面に秘密情報であるアカウント情報が表示されてしまいます。

このような攻撃を受ける可能性があるため、サブシェルに渡すコマンドに外部から与えられたデータを含める場合は値のチェックが欠かせません。「;」以外にも、「|」「&」「`」「(」「)」などは別コマンドの実行に使われるものとして特に警戒する必要があります。

設問の攻撃はWebアプリケーションに任意のOSコマンドを実行させようとするものですから、OSコマンドインジェクションの脆弱性を悪用したものと言えます。したがって「イ」が正解です。

Perlのexec(),open()、PHPのexec(), passthru(), proc_open(), shell_exec(), system()、Pythonのos.system(), os.popen()などがある。
© 2014-2019 情報処理安全確保支援士ドットコム All Rights Reserved.

Pagetop