【OSコマンドインジェクションとは】Webサーバーへのサイバー攻撃対策

OSコマンドインジェクションとは?Webサーバーへのサイバー攻撃対策についてまとめました。

スポンサーリンク

OSコマンドインジェクションとは

OSコマンドインジェクションとは、Webサーバに対して、不正な動作をさせる攻撃です。
攻撃者はWebアプリケーションへ正常な入力値だけでなく不正なパラメータを含ませることで、WebサーバーのOSへ命令文(コマンド)を渡して不正な操作を試みるのが一般的です。

【例:情報処理安全確保支援士試験 平成30年春期 問2】

〔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

例えば、Webサーバのログに以下のようなHTTPリクエストヘッダが記録されていたとします。

「?user=;cat /etc/passwd」がOSコマンドインジェクション攻撃の一例です。
これはユーザのアカウント情報(ユーザ名・パスワード等)の出力行うLinuxコマンドです。
(/etc/passwdファイルをcatコマンドで内容を表示)

Webサーバーのプログラム中で、userパラメタ(ユーザーから受け取った値)をLinuxコマンドの引数として実行できるようにしていたとします。
「;cat /etc/passwd」により、正常な命令の後にユーザのアカウント情報を出力するコマンドも実行されてしまいます。
(「;」は命令の区切りとなり、正常な命令とは別の命令として、cat /etc/passwdが実行されてしまいます)

ちなみにWebサーバーに使われるプログラミング言語Perlだと、OSコマンドを実行できる関数としてexec(),open()、PHPだとexec(), passthru(), proc_open(), shell_exec(), system()、Pythonのos.system(), os.popen()などがあります。

スポンサーリンク

対策

このような攻撃の対策としては、サブシェルに渡すコマンドに外部から与えられたデータを含める場合、「;」、「|」、「&」、「`」、「(」「)」などの別コマンドの実行に使われる恐れのある文字列をチェックし、実行させないようにします。

【情報処理入門】用語解説・資格試験対策まとめ
情報処理分野の用語・原理・資格試験対策について解説します。
コンピュータ
スポンサーリンク

コメント