0x00介绍
phpStudy是一个PHP调试环境的程序集成包。该程序包集成最新的Apache+PHP+MySQL+phpMyAdmin+ZendOptimizer,一次性安装,无须配置即可使用,是非常方便、好用的PHP调试环境。
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
image image0x04漏洞复现
1.访问phpstudy搭建的网站存在一个文件上传,我们上传一个图片马
image image2.复制图片链接在浏览器打开,并在图片文件名后面加上/.php,可以看到执行了shell
image0x05漏洞分析
1.查看在 vhosts 文件夹下 localhost_80.conf
image由于如下的配置文件会导致 .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中默认是开启的
image0x06修复方式
1. php.ini 中 fix_pathinfo 禁用为0,完成后重启NGINX
2.在Nginx配置文件中添加以下代码:
if ( $fastcgi_script_name ~ \..*\/.*php ) {
return 403;
}
这行代码的意思是当匹配到类似test.jpg/a.php的URL时,将返回403错误代码。修改完成后请重启Nginx。
网友评论