当前位置:网站首页 > 软件教程 > 正文

在PHP中使用FastCGI解析漏洞分析及修复方案介绍

作者:admin发布时间:2021-11-03分类:软件教程浏览:评论:0


导读:漏洞描述: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传递给PHPCGI

系统漏洞叙述:

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文件来分析了。

在PHP中使用FastCGI解析漏洞分析及修复方案介绍
系统漏洞伤害:

WebServer Fastcgi配备不合理,会导致其他文件(比如css,js,jpg等静态数据文档)被当做php脚本制作分析实行。当我们将故意脚本制作webshell改成静态数据上传文件到webserver传送给后面php分析实行后,会让敌人得到网络服务器的实际操作管理权限。

修补计划方案:

(Nginx客户能够挑选计划方案一或计划方案二,IIS客户请应用计划方案一)

计划方案一,改动php.ini文件,将cgi.fix_pathinfo的值设定为0。进行后请重新启动PHP和NGINX(IIS)。

计划方案二,在Nginx环境变量中加上下列编码:
在PHP中使用FastCGI解析漏洞分析及修复方案介绍

编码如下所示:
  if ( $fastcgi_script_name ~ ..*/.*php ) {
  return 403;
  }

这行编码的意思是当配对到相近test.jpg/a.php的URL时,将回到403错误码。改动进行后请重新启动Nginx。

标签:FastCGI


欢迎 发表评论: