在PHP中使用FastCGI解析漏洞及修復(fù)方案
漏洞描述:
Nginx默認(rèn)是以CGI的方式支持PHP解析的,普遍的做法是在Nginx配置文件中通過正則匹配設(shè)置SCRIPT_FILENAME。當(dāng)訪問http://192.168.1.102/phpinfo.jpg/1.php這個URL時,$fastcgi_script_name會被設(shè)置為“phpinfo.jpg/1.php”,然后構(gòu)造成SCRIPT_FILENAME傳遞給PHP CGI。如果PHP中開啟了fix_pathinfo這個選項,PHP會認(rèn)為SCRIPT_FILENAME是phpinfo.jpg,而1.php是PATH_INFO,所以就會將phpinfo.jpg作為PHP文件來解析了。
漏洞危害:
WebServer Fastcgi配置不當(dāng),會造成其他文件(例如css,js,jpg等靜態(tài)文件)被當(dāng)成php腳本解析執(zhí)行。當(dāng)用戶將惡意腳本webshell改為靜態(tài)文件上傳到webserver傳遞給后端php解析執(zhí)行后,會讓攻擊者獲得服務(wù)器的操作權(quán)限。
修復(fù)方案:
(Nginx用戶可以選擇方案一或方案二,IIS用戶請使用方案一)
方案一,修改php.ini文件,將cgi.fix_pathinfo的值設(shè)置為0。完成后請重啟PHP和NGINX(IIS)。
方案二,在Nginx配置文件中添加以下代碼:
if ( $fastcgi_script_name ~ \..*\/.*php ) {
return 403;
}
這行代碼的意思是當(dāng)匹配到類似test.jpg/a.php的URL時,將返回403錯誤代碼。修改完成后請重啟Nginx。
相關(guān)文章
PhpStorm 如何優(yōu)雅的調(diào)試Hyperf的方法步驟
這篇文章主要介紹了PhpStorm 如何優(yōu)雅的調(diào)試Hyperf的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11CI框架中$this->load->library()用法分析
這篇文章主要介紹了CI框架中$this->load->library()用法,詳細(xì)分析了加載library方法的步驟與相關(guān)注意事項,需要的朋友可以參考下2016-05-05詳解PHP數(shù)據(jù)壓縮、加解密(pack, unpack)
網(wǎng)絡(luò)通信、文件存儲中經(jīng)常需要交換數(shù)據(jù),為了減少網(wǎng)絡(luò)通信流量、文件存儲大小以及加密通信規(guī)則,本文介紹了PHP數(shù)據(jù)壓縮、加解密,有興趣的可以了解一下。2016-12-12Windows下Apache + PHP SESSION丟失的解決過程全紀(jì)錄
這篇文章主要介紹了Windows下Apache + PHP SESSION丟失的解決過程全紀(jì)錄,花費了很長時間,最終解決的方式卻令人啼笑皆非,郁悶之極。2015-04-04