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

SEのための情報セキュリティ対策
情報セキュリティ用語集 情報セキュリティ分野での専門用語について解説
Home> 情報セキュリティ用語集 >

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

OSコマンドインジェクション
スポンサードリンク



Perlを使った、OSコマンドインジェクションの例を以下に示します。

前提条件として、WEBアプリケーションがWEB画面でユーザにメールアドレス入力させ、そのアドレス自動配信を行う仕様とします。


上記で送信ボタンがクリックされた際に、渡されるプログラムを以下に示します。

my $test_mail = CGI::param('test_mail');
open(MAIL, "|/usr/lib/sendmail $test_mail");


正常な入力データの場合
test@test.com /usr/lib/sendmail test@test.com

不正な入力データの場合
test@tset.com ; rm -rf / /usr/lib/sendmail test@test.com ; rm -rf /

これ例では、test@test.comにメールを送信した後に、"rm -rf /"を実行してしまします。


この攻撃を防ぐ手段として考えられるものを以下に示します。
@外部プログラムを呼び出さない。

Aサニタイジングを実施する。
上記のプログラムのサニタイジングの例を以下に示します。

my $test_mail = CGI::param('test_mail');
if ($test_mail !~ /^[\w\-\.]+\@[\w\-\.]+$/) {
    print "入力エラー\n";
    exit;
}
open(MAIL, "|/usr/lib/sendmail $test_mail");

BWEBサーバの実行ユーザを独自のものにする。
(nobodyだと他のミドルウェアも使用している可能性があるため)


WEBアプリケーション攻撃とはでもOSインジェクションについて紹介しています。


スポンサードリンク



免責事項 / サイトマップ / リンク /  問い合わせ
Copyright (C) 2008  SEのための情報セキュリティ対策  All rights reserved





スポンサードリンク