其他
phpStudy默认配置致Nginx解析漏洞复现
上方蓝色字体关注我们,一起学安全!作者:小泫@Timeline Sec新成员
本文字数:731阅读时长:2~3min声明:请勿用作违法用途,否则后果自负
此次漏洞是Nginx的解析漏洞,由于phpstudy中配置文件的不当,造成了/xx.php解析漏洞,故此将文件解析为php运行。
phpStudy <=8.1.0.7 for Windows
为
回复“Nginx解析漏洞环境”,获取漏洞版本安装包及安装教程
注意⚠️:phpstudy会一直提示更新才可以用,所以不要点击更新,直接启动服务就行了,安装教程里有操作方法的视频
将图片马ip.png放置在web根目录下
访问图片
加/.php解析为php文件
在 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中我们可以看到,默认是开启的
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 团队
安全路上,与你并肩前行