查看原文
其他

phpStudy默认配置致Nginx解析漏洞复现

小泫 Timeline Sec 2021-04-25


上方蓝色字体关注我们,一起学安全!作者:小泫@Timeline Sec新成员
本文字数:731阅读时长:2~3min声明:请勿用作违法用途,否则后果自负


0x01 简介

phpStudy是一个PHP调试环境的程序集成包。该程序包集成最新的Apache+PHP+MySQL+phpMyAdmin+ZendOptimizer,一次性安装,无须配置即可使用,是非常方便、好用的PHP调试环境。

0x02 漏洞概述

此次漏洞是Nginx的解析漏洞,由于phpstudy中配置文件的不当,造成了/xx.php解析漏洞,故此将文件解析为php运行。


0x03 影响版本



phpStudy <=8.1.0.7 for Windows

0x04 环境搭建

回复“Nginx解析漏洞环境”,获取漏洞版本安装包及安装教程


注意⚠️:phpstudy会一直提示更新才可以用,所以不要点击更新,直接启动服务就行了,安装教程里有操作方法的视频



将图片马ip.png放置在web根目录下



0x05 漏洞复现


访问图片



加/.php解析为php文件



0x06 漏洞分析


首先打开 Nginx.conf 文件查看


在 vhosts 文件夹下 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; }

由于如下的配置文件会导致 .php.* 文件交给fastcgi


当url为如下

http://127.0.0.1/tp/test/ip.png/a.php


$fastcgi_script_name会被设置为ip.png/a.php,然后构造成SCRIPT_FILENAME传递给PHP CGI


如果PHP中开启了fix_pathinfo这个选项,PHP会认为SCRIPT_FILENAME是ip.png,而a.php是PATH_INFO,所以就会将ip.jpg作为PHP文件来解析了


默认phpinfo中我们可以看到,默认是开启的



0x07 修复方式


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; }

参考链接:

https://www.cnblogs.com/fogwang/p/5576518.html

https://www.laruence.com/2010/05/20/1495.html



阅读原文看更多复现文章
Timeline Sec 团队
安全路上,与你并肩前行








    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存