phpstudy nginx解析漏洞
用的是phpstudy部署的,昨天看到那篇文章了,就用我的服务器测试了一下。
新建一个内容为<?php phpinfo();?>的
记事本,重命名保存为1.jpg
直接访问内网地址
然后加入/.php
成功执行phpinfo();
漏洞分析
这是我的生产环境,根据漏洞特性,大概率就是fastcgi的问题。
查看该站点相关的nginx的配置文件
可见 这里的正则处理,将文件传递给fastcgi处理,$fastcgi_script_name会被设置为1.png/.php,然后构造成SCRIPT_FILENAME传递给PHP CGI。如果PHP中开启了fix_pathinfo这个选项,PHP会认为SCRIPT_FILENAME是1.png,而.php是PATH_INFO,所以就会将1.jpg作为PHP文件来解析了。
处于好奇心去观察一下php的配置
可见这里是注释了。我就非常奇怪,既然是注释了为什么还能让这个配置生效为1,不得已思考是否他的默认配置就是为1。
后记
查阅资料后可知,他的默认值就是1,无论是否添加了注释。
https://www.php.net/manual/zh/ini.core.php#ini.cgi.fix-pathinfo
修复方式是强制设置为0。并且需要对nginx的location规则进行设置。加一个判断是否以此类路径进行访问。如果是就返回403
if ( $fastcgi_script_name ~ \..*\/.*php ){
return 403;
}
转载请注明来自WebShell'S Blog,本文地址:https://www.webshell.cc/7248.html