【0day】phpStudy(小皮面板)最新版v8.1.0.7 nginx 解析漏洞
时间:2020-9-2 22:47 作者:admin 分类: 业界新闻
一、phpStudy(小皮面板)简介:
phpStudy国内12年老牌公益软件,集安全,高效,功能与一体,已获得全球用户认可安装,运维也高效。支持一键LAMP,LNMP,集群,监控,网站,FTP,数据库,JAVA等100多项服务器管理功能。
二、漏洞简介:
自从2019年phpStudy爆出的后门事件已经过去一段时间了,期间也没有爆出过什么漏洞,并且现在phpStudy(小皮面板)已经改版了,这次爆出的漏洞是nginx的解析漏洞,也就是存在已久的/xx.php解析漏洞
漏洞原理:
1、由于错误配置(但是测试的时候是安装完后的默认配置,我在官方论坛也反馈了,他们还狡辩。。。)导致nginx把以.php结尾的文件交给fastcgi处理,为此可以构造http://www.xxx.com/test.gif/xx.php (任何服务器端不存在的php文件均可,比如a.php)
2、但是fastcgi在处理xx.php文件时发现文件并不存在,这时php.ini配置文件中cgi.fix_pathinfo=1 发挥作用,这项配置用于修复路径,如果当前路径不存在则采用上层路径。为此这里交由fastcgi处理的文件就变成了/test.gif。
3、 最重要的一点是php-fpm.conf中的security.limit_extensions配置项限制了fastcgi解析文件的类型(即指定什么类型的文件当做代码解析),此项设置为空的时候才允许fastcgi将.png等文件当做代码解析。
localhost_80.conf原始配置:
location ~ \.php(.*)$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_split_path_info ^((?U).+\.php)(/?.+)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; include fastcgi_params; }
三、漏洞复现:
测试环境:phpStudy(小皮面板)8.1.0.7 + 图片马(一定要注意不是那种copy的马子 有几率失败,可以下载这个马子测试)
复现如图:
执行系统命令:
四、修复
php.ini 中 fix_pathinfo 禁用为0
cgi.fix_pathinfo=0
nginx.conf添加如下代码
location ~ \.php(.*)$ { if ( $fastcgi_script_name ~ \..*\/.*php ){ return 403; } fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_split_path_info ^((?U).+\.php)(/?.+)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; include fastcgi_params; }
请各位师傅下手轻点!注意保重!哈哈哈!