Py学习  »  NGINX

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

TimelineSec • 3 年前 • 348 次点击  


上方蓝色字体关注我们,一起学安全!
作者:小泫@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 团队
安全路上,与你并肩前行









Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/73208
 
348 次点击