在PHP中使用FastCGI解析漏洞及修复方案


Posted in PHP onNovember 10, 2015

漏洞描述:

Nginx默认是以CGI的方式支持PHP解析的,普遍的做法是在Nginx配置文件中通过正则匹配设置SCRIPT_FILENAME。当访问http://192.168.1.102/phpinfo.jpg/1.php这个URL时,$fastcgi_script_name会被设置为“phpinfo.jpg/1.php”,然后构造成SCRIPT_FILENAME传递给PHP CGI。如果PHP中开启了fix_pathinfo这个选项,PHP会认为SCRIPT_FILENAME是phpinfo.jpg,而1.php是PATH_INFO,所以就会将phpinfo.jpg作为PHP文件来解析了。

漏洞危害:

WebServer Fastcgi配置不当,会造成其他文件(例如css,js,jpg等静态文件)被当成php脚本解析执行。当用户将恶意脚本webshell改为静态文件上传到webserver传递给后端php解析执行后,会让攻击者获得服务器的操作权限。

修复方案:

(Nginx用户可以选择方案一或方案二,IIS用户请使用方案一)

方案一,修改php.ini文件,将cgi.fix_pathinfo的值设置为0。完成后请重启PHP和NGINX(IIS)。

方案二,在Nginx配置文件中添加以下代码:

if ( $fastcgi_script_name ~ \..*\/.*php ) {

return 403;

}

这行代码的意思是当匹配到类似test.jpg/a.php的URL时,将返回403错误代码。修改完成后请重启Nginx。

PHP 相关文章推荐
初学CAKEPHP 基础教程
Nov 02 PHP
php指定函数参数默认值示例代码
Dec 04 PHP
PHP动态生成javascript文件的2个例子
Apr 11 PHP
Yii查询生成器(Query Builder)用法实例教程
Sep 04 PHP
PHP中使用php5-ffmpeg撷取视频图片实例
Jan 07 PHP
PHP制作百度词典查词采集器
Jan 29 PHP
解读PHP的Yii框架中请求与响应的处理流程
Mar 17 PHP
详解使用php调用微信接口上传永久素材
Apr 11 PHP
Yii2.0多文件上传实例说明
Jul 24 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
Sep 16 PHP
PHP cURL获取微信公众号access_token的实例
Apr 28 PHP
php服务器的系统详解
Oct 12 PHP
PHP中使用GD库绘制折线图 折线统计图的绘制方法
Nov 09 #PHP
再推荐十款免费的php开发工具
Nov 09 #PHP
php开发工具有哪五款
Nov 09 #PHP
PHP编程开发怎么提高编程效率 提高PHP编程技术
Nov 09 #PHP
PHP 7的一些引人注目的新特性简单介绍
Nov 08 #PHP
php实现mysql数据库连接操作及用户管理
Nov 08 #PHP
php实现处理输入转义字符的代码
Nov 08 #PHP
You might like
PHP 获取文件权限函数介绍
2013/07/11 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十二)
2014/06/25 PHP
php类中的$this,static,final,const,self这几个关键字使用方法
2015/12/14 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式一图文详解
2019/04/09 PHP
laravel 出现command not found问题的解决方案
2019/10/23 PHP
javascript下function声明一些小结
2007/12/28 Javascript
jquery弹窗插件colorbox绑定动态生成元素的方法
2014/06/20 Javascript
Node.js与PHP、Python的字符处理性能对比
2014/07/06 Javascript
javascript制作的简单注册模块表单验证
2015/04/13 Javascript
jQuery替换textarea中换行的方法
2015/06/10 Javascript
深入理解jQuery事件绑定
2016/06/02 Javascript
vue自定义指令实现v-tap插件
2016/11/03 Javascript
vue组件间通信解析
2017/03/01 Javascript
VUE中使用Vue-resource完成交互
2017/07/21 Javascript
浅谈关于.vue文件中style的scoped属性
2017/08/19 Javascript
jQuery Ajax向服务端传递数组参数值的实例代码
2017/09/03 jQuery
python生成随机验证码(中文验证码)示例
2014/04/03 Python
插入排序_Python与PHP的实现版(推荐)
2017/05/11 Python
Python3实现抓取javascript动态生成的html网页功能示例
2017/08/22 Python
解决Django的request.POST获取不到内容的问题
2018/05/28 Python
一篇文章彻底搞懂Python中可迭代(Iterable)、迭代器(Iterator)与生成器(Generator)的概念
2019/05/13 Python
Python queue队列原理与应用案例分析
2019/09/27 Python
python__name__原理及用法详解
2019/11/02 Python
Python的形参和实参使用方式
2019/12/24 Python
Django获取model中的字段名和字段的verbose_name方式
2020/05/19 Python
日本即尚网:JSHOPPERS.com(支持中文)
2019/12/03 全球购物
为什么要使用servlet
2016/01/17 面试题
品学兼优的大学生自我评价
2013/09/20 职场文书
2014新生大学四年计划书
2014/09/21 职场文书
学生上课迟到检讨书
2015/01/01 职场文书
旷课检讨书
2015/01/26 职场文书
幼儿园2015年度工作总结
2015/04/01 职场文书
2019感恩宣传标语!
2019/07/05 职场文书
CSS3实现模糊背景的三种效果示例
2021/03/30 HTML / CSS
python实现三阶魔方还原的示例代码
2021/04/28 Python
Redis模仿手机验证码发送的实现示例
2021/11/02 Redis