在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 相关文章推荐
控制PHP的输出:缓存并压缩动态页面
Jun 11 PHP
php解析html类库simple_html_dom(详细介绍)
Jul 05 PHP
php递归获取目录内文件(包含子目录)封装类分享
Dec 25 PHP
PHP实现微信公众平台音乐点播
Mar 20 PHP
php使用socket post数据到其它web服务器的方法
Jun 02 PHP
PHP实现根据图片色界在不同位置加水印的方法
Aug 08 PHP
php使用pdo连接sqlite3的配置示例
May 27 PHP
php自定义中文字符串截取函数substr_for_gb2312及substr_for_utf8示例
May 28 PHP
PHP上传Excel文件导入数据到MySQL数据库示例
Oct 25 PHP
PHP基于自增数据如何生成不重复的随机数示例
May 19 PHP
PHP单元测试框架PHPUnit用法详解
Jan 23 PHP
php实现商城购物车的思路和源码分析
Jul 23 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 第二节 数据类型之数值型
2012/04/28 PHP
解析PHP函数array_flip()在重复数组元素删除中的作用
2013/06/27 PHP
超强多功能php绿色集成环境详解
2017/01/25 PHP
PHP简单实现遍历目录下特定文件的方法小结
2017/05/22 PHP
Ajax中的JSON格式与php传输过程全面解析
2017/11/14 PHP
php实现数字补零的方法总结
2018/09/12 PHP
javascript tips提示框组件实现代码
2010/11/19 Javascript
EasyUI的treegrid组件动态加载数据问题的解决办法
2011/12/11 Javascript
深入理解JavaScript系列(16) 闭包(Closures)
2012/04/12 Javascript
html5+javascript制作简易画板附图
2014/04/25 Javascript
JavaScript判断变量是否为空的自定义函数分享
2015/01/31 Javascript
深入理解JavaScript的React框架的原理
2015/07/02 Javascript
JS中showModalDialog关闭子窗口刷新主窗口用法详解
2017/03/25 Javascript
JQuery EasyUI的一些常用组件
2017/07/12 jQuery
JS获取日期的方法实例【昨天,今天,明天,前n天,后n天的日期】
2017/09/28 Javascript
vue2组件之select2调用的示例代码
2017/10/12 Javascript
three.js中文文档学习之通过模块导入
2017/11/20 Javascript
使用npm安装最新版本nodejs
2018/01/18 NodeJs
node.js环境搭建图文详解
2018/09/19 Javascript
@angular前端项目代码优化之构建Api Tree的方法
2018/12/24 Javascript
nodejs实现聊天机器人功能
2019/09/19 NodeJs
小程序最新获取用户昵称和头像的方法总结
2019/09/23 Javascript
vue计算属性+vue中class与style绑定(推荐)
2020/03/30 Javascript
在vue中实现某一些路由页面隐藏导航栏的功能操作
2020/09/21 Javascript
numpy返回array中元素的index方法
2018/06/27 Python
Python通用唯一标识符uuid模块使用案例
2020/09/10 Python
python-图片流传输的思路及示例(url转换二维码)
2020/12/21 Python
HTML5调用手机发短信和打电话功能
2020/04/29 HTML / CSS
献爱心标语
2014/06/21 职场文书
大专学生求职自荐信
2014/07/06 职场文书
环保公益策划方案
2014/08/15 职场文书
2014年销售工作总结与计划
2014/12/01 职场文书
人事局接收函
2015/01/30 职场文书
JS Canvas接口和动画效果大全
2021/04/29 Javascript
pandas中DataFrame重置索引的几种方法
2021/05/24 Python
Node-Red实现MySQL数据库连接的方法
2021/08/07 MySQL