phpstudy_pro解析漏洞
漏洞介绍
早上看到大佬发了phpstudy_pro 8.1.0.7的Nginx解析漏洞,小弟也是抓紧时间复现了一波,漏洞产生原因就是Nginx+php的配置问题产生的,和Nginx的版本无关,并不是Nginx本身的漏洞。
漏洞复习
搭建环境
phpstudy_pro:8.1.0.7
php:7.3.4
Nginx:1.15.11
打开phpstudy_pro,切换到Nginx并启动,数据库可以不需要启动,用不到。
shell上传
由于是本地测试,我们直接进网站目录写shell,准备一个php文件和一个jpg文件,使用copy命令制作图片马。copy /B 1.jpg+index.php index.jpg
访问文件
访问http://127.0.0.1/index.jpg
文件,正常显示说明上传成功。
漏洞利用
在jpg后面加上/1.php,就能成功解析成php文件。
产生原因
Nginx遇到/index.jpg/1.php
,由于是.php后缀文件,不做任何处理就交给php处理。
php中有个配置:cgi.fix_pathinfo,该配置项默认为1开启。如果开启,php会”修复”路径,如果后面文件不存在就直接丢弃,继续从前面解析,直到遇到存在的文件或返回404。
因为cgi.fix_pathinfo开启,所以会丢弃1.php,继续解析index.jpg,index.jpg存在,php不管你是啥都用php解析,最终造成漏洞。
漏洞修复
官方已经更新了最新版,更新到phpstudy_pro 8.1.1.1即可。但是修复的好像有点牵强,如果访问不存在的php文件,直接返回403而不是404
参考文章
https://blog.csdn.net/wn314/article/details/77388289/
https://mp.weixin.qq.com/s/L6pu5T0usFwlLhauIhfdWw