phpStudy默认配置致Nginx解析漏洞

0x00介绍

phpStudy是一个PHP调试环境的程序集成包。该程序包集成最新的Apache+PHP+MySQL+phpMyAdmin+ZendOptimizer,一次性安装,无须配置即可使用,是非常方便、好用的PHP调试环境。

phpStudy默认配置致Nginx解析漏洞_第1张图片

0x01漏洞概述

本次漏洞是Nginx的解析漏洞,由于phpstudy中配置文件的不当,造成了/xx.php解析漏洞,故此将文件解析为php运行。

0x02影响版本

phpstudy <= 8.1.0.7

0x03环境搭建

phpstudy8.1.0.7+windows2008R2

1.phpstudy8.1.0.7下载地址:

链接:https://pan.baidu.com/s/1CieI66tWsz4crgb_8eC4ag

提取码:ww4y

2.下载完成安装"注意别更新",直接启动phpstudy

phpStudy默认配置致Nginx解析漏洞_第2张图片

phpStudy默认配置致Nginx解析漏洞_第3张图片

0x04漏洞复现

1.访问phpstudy搭建的网站存在一个文件上传,我们上传一个图片马

phpStudy默认配置致Nginx解析漏洞_第4张图片

phpStudy默认配置致Nginx解析漏洞_第5张图片

2.复制图片链接在浏览器打开,并在图片文件名后面加上/.php,可以看到执行了shell

phpStudy默认配置致Nginx解析漏洞_第6张图片

0x05漏洞分析

1.查看在 vhosts 文件夹下 localhost_80.conf

phpStudy默认配置致Nginx解析漏洞_第7张图片

由于如下的配置文件会导致 .php.* 文件交给fastcgi

http://IP/uploads/2.jpg/.php

当为如上url时

$fastcgi_script_name会被设置为1.jpg/2.php,然后构造成SCRIPT_FILENAME传递给PHP CGI

如果PHP中开启了fix_pathinfo这个选项,PHP会认为SCRIPT_FILENAME是1.jpg,而2.php是PATH_INFO,所以就会将1.jpg作为PHP文件来解析了

phpinfo中默认是开启的

phpStudy默认配置致Nginx解析漏洞_第8张图片

0x06修复方式

1. php.ini 中 fix_pathinfo 禁用为0,完成后重启NGINX

2.在Nginx配置文件中添加以下代码:

  if ( $fastcgi_script_name ~ \..*\/.*php ) {
  return 403;
  }

这行代码的意思是当匹配到类似test.jpg/a.php的URL时,将返回403错误代码。修改完成后请重启Nginx。

参考链接:https://www.cnblogs.com/fogwang/p/5576518.html

你可能感兴趣的:(漏洞复现,安全)