phpStudy(小皮面板)v8.1.0.7 nginx 解析漏洞

admin 2022年1月6日01:04:00评论104 views字数 1501阅读5分0秒阅读模式

一、**phpStudy**(小皮面板)简介:
phpStudy v8.1.0.7.png

phpStudy国内12年老牌公益软件,集安全,高效,功能与一体,已获得全球用户认可安装,运维也高效。支持一键LAMP,LNMP,集群,监控,网站,FTP,数据库,JAVA等100多项服务器管理功能。

二、漏洞简介:

小皮面板 <= 8.1.0.7: 啊这

其实这个漏洞确实不是小皮的问题,而是2017年就出现的nginx解析漏洞。

漏洞原理**:**

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原始配置:

1
2
3
4
5
6
7
8
9
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的马子 有几率失败,可以下载这个马子测试)
复现如图:
bug_7.3.png

bug.png

执行系统命令:
phpStudy(小皮面板)v8.1.0.7 nginx 解析漏洞
四、修复
php.ini 中 fix_pathinfo 禁用为0
cgi.fix_pathinfo=0

nginx.conf添加如下代码

1
2
3
4
5
6
7
8
9
10
11
12
13
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;
}

参考链接:https://mrxn.net/news/675.html

FROM :ol4three.com | Author:ol4three

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年1月6日01:04:00
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   phpStudy(小皮面板)v8.1.0.7 nginx 解析漏洞http://cn-sec.com/archives/720925.html

发表评论

匿名网友 填写信息