一般的網站都會開放rar附件上傳,并可能會保留原來文件名稱,這從而可能導致一個很嚴重的問題,xxx.php.rar文件會被Apache當作php文件來執行, 造成極大的安全隱患。
如何測試? 將你的某個php程序文件后綴名修改成 xxx.php.rar , 這時測試一下, 還是按照PHP文件解析執行,Apache并不會認為這是一個rar文件, 這是為什么呢?
原來,每遇到一種后雙重后綴名(如xxx.php.rar)的文件,Apache都會去conf/mime.types 文件中檢查最后一個后綴, 如果最后一個后綴并沒有在mime.types文件中定義, 則使用前一個后綴來解釋 , 因為在默認情況下,rar并未在mime.types中定義, 故Apache會使用php后綴來解釋文件, 這就是漏洞的原因所在.
由此類推,如果使用xxx.jsp.ppp.rar 則會認為是jsp文件, 如果修改成xxx.shtml.rar ,則會識別成shtml文件.
a.php.c.d.e.rar 也是會被當成PHP文件解釋的!想想,不知道有多少網站存在這個問題?
那么針對網絡管理員,如何杜絕這個隱患 ?
1.修改mime.types文件,在最后面加一條:application/rar rar 然后重新啟動Apache,即可.
針對WEB管理員及WEB程序開發者,如何更安全?
1.只允許上傳指定后綴名的文件,當然,要禁止掉rar格式文件上傳.(但這條往往行不通,一般的網站都需要上傳rar文件)
2.對上傳后的文件進行強制重命名, 強制使用最后一個擴展名,如原始文件名為xxx.php.rar ,上傳后強制重命名為 20080912.rar即可避免這個隱患.
早期版本的phpcms 2007, discuz, ecshop都存在這個漏洞, 或許你的網站被掛馬,就是因此引起.
上面的文章是轉的,我測試了一下,還真這樣,不過修改mime.types是沒有用的.
需要在http.conf中加入下面這些內容
以下為引用的內容:
AddType application/rar .rar
AddType application/x-compressed .rar
AddType application/x-rar .rar
AddType application/x-rar-compressed .rar
AddType application/x-rar-compressed; application/x-compressed .rar
AddType compressed/rar; application/x-rar-compressed .rar