昨日,80Sec 爆出Nginx具有嚴重的0day漏洞,詳見《Nginx文件類型錯誤解析漏洞》。只要用戶擁有上傳圖片權限的Nginx+PHP服務器,就有被入侵的可能。
其實此漏洞并不是Nginx的漏洞,而是PHP PATH_INFO的漏洞,詳見:http://bugs.php.net/bug.php?id=50852&edit=1
例如用戶上傳了一張照片,訪問地址為http://www.domain.com/images/test.jpg,而test.jpg文件內的內容實際上是PHP代碼時,通過http://www.domain.com/images/test.jpg/abc.php就能夠執行該文件內的PHP代碼。
網上提供的臨時解決方法有:
方法①、修改php.ini,設置cgi.fix_pathinfo = 0;然后重啟php-cgi。此修改會影響到使用PATH_INFO偽靜態的應用,例如我以前博文的URL:http://blog.zyan.cc/read.php/348.htm 就不能訪問了。
方法②、在nginx的配置文件添加如下內容后重啟:if ( $fastcgi_script_name ~ \..*\/.*php ) {return 403;}。該匹配會影響類似 http://www.domain.com/software/5.0/test.php(5.0為目錄),http://www.domain.com/goto.php/phpwind 的URL訪問。
方法③、對于存儲圖片的location{...},或虛擬主機server{...},只允許純靜態訪問,不配置PHP訪問。例如在金山逍遙網論壇、SNS上傳的圖片、附件,會傳送到專門的圖片、附件存儲服務器集群上(pic.xoyo.com),這組服務器提供純靜態服務,無任何動態PHP配置。各大網站幾乎全部進行了圖片服務器分離,因此Nginx的此次漏洞對大型網站影響不大。
評論(0人參與,0條評論)
發布評論
最新評論