程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> 在PHP中使用FastCGI解析漏洞及修復方案

在PHP中使用FastCGI解析漏洞及修復方案

編輯:PHP綜合

漏洞描述:

Nginx默認是以CGI的方式支持PHP解析的,普遍的做法是在Nginx配置文件中通過正則匹配設置SCRIPT_FILENAME。當訪問http://192.168.1.102/phpinfo.jpg/1.php這個URL時,$fastcgi_script_name會被設置為“phpinfo.jpg/1.php”,然後構造成SCRIPT_FILENAME傳遞給PHP CGI。如果PHP中開啟了fix_pathinfo這個選項,PHP會認為SCRIPT_FILENAME是phpinfo.jpg,而1.php是PATH_INFO,所以就會將phpinfo.jpg作為PHP文件來解析了。

漏洞危害:

WebServer Fastcgi配置不當,會造成其他文件(例如css,js,jpg等靜態文件)被當成php腳本解析執行。當用戶將惡意腳本webshell改為靜態文件上傳到webserver傳遞給後端php解析執行後,會讓攻擊者獲得服務器的操作權限。

修復方案:

(Nginx用戶可以選擇方案一或方案二,IIS用戶請使用方案一)

方案一,修改php.ini文件,將cgi.fix_pathinfo的值設置為0。完成後請重啟PHP和NGINX(IIS)。

方案二,在Nginx配置文件中添加以下代碼:

復制代碼 代碼如下:
  if ( $fastcgi_script_name ~ \..*\/.*php ) {
  return 403;
  }

這行代碼的意思是當匹配到類似test.jpg/a.php的URL時,將返回403錯誤代碼。修改完成後請重啟Nginx。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved