今天在看资料学习的时候,居然提到了“cgi.fix_pathinfo漏洞“,经过我的探索,总算搞明白了!
什么是 cgi.fix_pathinfo 这个所谓的漏洞?
举例来说,如何你开启cgi.fix_pathinfo,它的危害就是假设你的网站有http://xx.com/a.jpg这样的一张图片,我通过http://xx.com/a.jpg/fujieace.php就可以查看到这个文件的二进制内容,意思就是可以通过php来执行它。
问题就来了,如果你的网站允许用户上传图片,那么用户就可以构造一些恶意的代码,并伪装成图片上传,然后通过上面说的那种方式就可以在你网站的服务器上面通过php跑恶意代码了。
php.ini 中 cgi.fix_pathinfo 应该如何设置?
php配置文件中这一项默认被注释并且值为1,根据官方文档的说明,这里为了当文件不存在时,阻止Nginx将请求发送到后端的PHP-FPM模块,从而避免恶意脚本注入的攻击,所以此项应该去掉注释并设置为0;
但是:这个配置默认是1的,设为0又会导致很多MVC框架(如Thinkphp)都无法运行。
因此:需要根据自己的需求来做设置!下面是我的配置文件所做的设置:
1、找到php.ini并打开它;
vim /usr/local/php/lib/php.ini
2、找到并修改cgi.fix_pathinfo参数;
将
;cgi.fix_pathinfo=1
修改为
cgi.fix_pathinfo=0
3、php.ini配置最终效果:
Nginx、Apache和IIS都存在cgi.fix_pathinfo漏洞这个问题吗?
这个问题只存在于 Nginx 服务器中,Apache和IIS都不会有这个问题。
同时也不建议关闭它(cgi.fix_pathinfo=0),很多代码都会依赖这个功能,关了基本上都会报错。
2018年01月23日 17:48:05 沙发
越深入越搞不懂