此次漏洞是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
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论