php漏洞對策 (轉)

worldblog發表於2007-12-11
php漏洞對策 (轉)[@more@]其實從的角度來講是沒什麼問題的,主要是使用PHP這種語言編出來的東西是否涉及了.
PHP的執行,是靠它的語言直譯器來完成的,在NT或下也就是PHP.EXE,PHP.EXE是一個直譯器,它的作用是解釋字尾為.PHP或.PHP3或.PHTML或其它的,根據裡邊定義的來訪問,讀寫檔案或外部命令.並將執行的結果組織成STRING返回給 SERVER然後當作HTML格式的檔案傳送給.
知道了它工作的過程我們就可以探討其SECURITY問題了,上述檔案中我們提到過 PHP.EXE,提到過讀取檔案,和執行外部命令,其實這些都是安全隱患只所在,在MS-DOS下可以使用PHP.EXE讀任何檔案的內容,因為它本身的工作機制也就是讀檔案內容,把該解釋的解釋,該過濾的過濾.所以我們就可以利用它的這一特性透過WEB讀任何我們想讀檔案的內容,當然這不是這麼簡單,這需要WEB SERVER的配合,這是後話,我們以後在講.
PHP的第二個特性是讀取檔案的內容,有很多CGI就是由此特性造成的,很簡單的一段程式:它的任務就是讀變數$file的內容,程式設計師在程式中可能會天真的想,我就讀A檔案 它沒有對FILE這個變數做嚴格的限制,就導致安全問題的產生,我想稍微有點安全知識的人也知道把A.TXT修改為:/etc/passwd或NT下的../../../../../winnt/repair/sam._了
PHP的第三個特性是執行外部命令,在下比較多見:ls,echo等等,其實這是最容易出問題的,大家都知道可以連續的執行命令,用管道符|:或者~都可以,在這裡我就順便說個想法讓大家和我一起探討,這是關於WEB 的,當然也和WEB程式設計有關,一般來說我們申請一個MAIL需要註冊,而註冊的時候,大都對姓名有限制,如長度等等,不過對密碼的限制不嚴格,長度也大些,而MAIL程式可能需要呼叫SHELL命令來執行的新增,比如叫:ADD USER吧,引數是使用者名稱和密碼.add user loveer 1234567那如果我的密碼為:a|reboot會怎麼樣呢?嘿嘿如果它沒有把密碼,而且新增使用者使用的夠大的話,哈哈就會讓它從新啟動COMPUTER,當然如果它要加密的話也行,比如用MD5或DES我們都可以寫段程式讓加密後的STRING為:rf -/*當然這只是個想法啦,我還沒實踐過:_)工作太忙了!當然透過我以上的想法你也可以看出執行SHELL命令而不做嚴格的判斷有多麼的嚴重!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-991308/,如需轉載,請註明出處,否則將追究法律責任。

相關文章