在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预定义常量
Dec 25 PHP
[原创]效率较高的php下读取文本文件的代码
Jul 02 PHP
php Http_Template_IT类库进行模板替换
Mar 19 PHP
基于php-fpm的配置详解
Jun 03 PHP
PHP创建桌面快捷方式的实例代码
Feb 17 PHP
php实现文件下载代码分享
Aug 19 PHP
PHP清除字符串中所有无用标签的方法
Dec 01 PHP
jQuery+Ajax+PHP“喜欢”评级功能实现代码
Oct 08 PHP
php处理json格式数据经典案例总结
May 19 PHP
PHP的PDO事务与自动提交
Jan 24 PHP
Laravel框架实现的使用smtp发送邮件功能示例
Mar 12 PHP
php数组函数array_push()、array_pop()及array_shift()简单用法示例
Jan 26 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
ThinkPHP的模版中调用session数据的方法
2014/07/01 PHP
Yii视图CGridView列表用法实例分析
2016/07/12 PHP
js 字符串转化成数字的代码
2011/06/29 Javascript
Underscore.js 的模板功能介绍与应用
2012/12/24 Javascript
JS对话框_JS模态对话框showModalDialog用法总结
2014/01/11 Javascript
jquery禁用右键示例
2014/04/28 Javascript
提高NodeJS中SSL服务的性能
2014/07/15 NodeJs
js实现获取当前时间是本月第几周的方法
2015/08/11 Javascript
js实现表单多按钮提交action的处理方法
2015/10/24 Javascript
jQuery实现模仿微博下拉滚动条加载数据效果
2015/12/25 Javascript
JavaScript获取客户端IP的方法(新方法)
2016/03/11 Javascript
基于jquery实现表格内容筛选功能实例解析
2016/05/09 Javascript
Vue报错:Uncaught TypeError: Cannot assign to read only property’exports‘ of object’#‘的解决方法
2017/06/17 Javascript
js中url对象化管理分析
2017/12/29 Javascript
vue全局组件与局部组件使用方法详解
2018/03/29 Javascript
vue.js通过路由实现经典的三栏布局实例代码
2018/07/08 Javascript
Bootstrap Table列宽拖动的方法
2018/08/15 Javascript
vue.js实现三级菜单效果
2019/10/19 Javascript
深入浅析JavaScript中的in关键字和for-in循环
2020/04/20 Javascript
JavaScript多种图形实现代码实例
2020/06/28 Javascript
详谈Python基础之内置函数和递归
2017/06/21 Python
Python 查找list中的某个元素的所有的下标方法
2018/06/27 Python
Python shelve模块实现解析
2019/08/28 Python
python socket 聊天室实例代码详解
2019/11/14 Python
美国婴儿用品及配件购买网站:Munchkin
2019/04/03 全球购物
银行存款证明样本
2014/01/17 职场文书
物流管理毕业生自荐信范文
2014/03/15 职场文书
保护水资源的标语
2014/06/17 职场文书
加强作风建设心得体会
2014/10/22 职场文书
2014年社区计生工作总结
2014/11/18 职场文书
班级元旦晚会开幕词
2015/01/29 职场文书
加班费申请报告
2015/05/15 职场文书
故意杀人罪辩护词
2015/05/21 职场文书
2015年工会工作总结范文
2015/07/23 职场文书
早安问候语大全
2015/11/10 职场文书
MySQL update set 和 and的区别
2021/05/08 MySQL