全部产品
云市场

【漏洞公告】FastCGI解析漏洞

更新时间:2018-03-08 16:01:03

漏洞描述

Nginx默认以CGI的方式支持PHP解析,普遍的做法是在Nginx配置文件中通过正则匹配设置SCRIPT_FILENAME。

当访问 http://192.168.1.103/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文件解析,攻击者通常利用该漏洞来获取到一个WebShell。

修复方案

方案一(适用于Nginx和IIS用户)

修改 php.ini 文件,将 cgi.fix_pathinfo 的值设置为 0。完成后重启 PHP 和 Nginx(IIS)。

方案二(适用于Nginx用户)

在 Nginx 配置文件中添加以下代码,当匹配到类似 test.jpg/a.php 的URL时,将返回403错误代码:

  1. if ( $fastcgi_script_name ~ ..\/.php )
  2. {
  3. return 403;
  4. }

修改完成后请重启 Nginx。