首页技术博客 服务器运维 正文

如何简单的解决LINUX下的解析漏洞?符文浩教你轻松解决一句话木马!

2018-06-17 1185 0条评论

测试过nginx诸多版本,都有该漏洞。
漏洞场景: nginx + php-cgi 
漏洞重现:
在网站根目录上传一个文件1.jpg
内容为:

<?php

 echo 111;

 ?>



这样访问: http://yourdomain/1.jpg/123.php  //这里的123随意定义,写成abc也行,关键后边是.php

这样就能解析php了  结果为
111

这似乎很危险,如果作为系统管理员的你不知道该漏洞,那么别有用心的小人在你的网站上传了本是php内容的“图片”,毕竟你的网站是允许上传图片的。,如果他上传了***,那么后果不堪设想。
至于原理,等会再讲,先说说如何解决该漏洞。

解决方法也很简单,打开php.ini 
设置 cgi.fix_pathinfo=0



或者

if ( $fastcgi_script_name ~ \..*\/.*php ) {
return 403;
}


注意,默认这个参数是注释掉的,当然默认值肯定不是0,所以有必要把注释号去掉,打开该参数。

为什么会有这样的漏洞呢?这是因为:
nginxlocation对请求进行选择的时候会使用URI环境变量进行选择,其中传递到后端Fastcgi的关键变量SCRIPT_FILENAMEnginx生成的$fastcgi_script_name决定,而通过分析可以看到$fastcgi_script_name是直接由URI环境变量控制的,这里就是产生问题的点。


文章版权及转载声明

本文作者:符文浩 网址:http://blog.fuwenhao.com/post/91.html 发布于 2018-06-17
文章转载或复制请以超链接形式并注明出处。

发表评论

快捷回复:

评论列表 (暂无评论,1185人围观)参与讨论

还没有评论,来说两句吧...

取消
微信二维码
微信二维码
支付宝二维码