在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 相关文章推荐
Win9x/ME下Apache+PHP安装配置
Oct 09 PHP
PHP提取中文首字母
Apr 09 PHP
php数组(array)输出的三种形式详解
Jun 05 PHP
使用array mutisort 实现按某字段对数据排序
Jun 18 PHP
php中多维数组按指定value排序的实现代码
Aug 19 PHP
php字符串分割函数用法实例
Mar 17 PHP
PHP数学运算函数大汇总(经典值得收藏)
Apr 01 PHP
thinkphp配置文件路径的实现方法
Aug 30 PHP
php+javascript实现的动态显示服务器运行程序进度条功能示例
Aug 07 PHP
PHP explode()函数用法讲解
Feb 15 PHP
Thinkphp框架+Layui实现图片/文件上传功能分析
Feb 07 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
Apr 02 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基于ob_start(ob_gzhandler)实现网页压缩功能的方法
2017/02/18 PHP
php实现简单加入购物车功能
2017/03/07 PHP
ThinkPHP框架实现的MySQL数据库备份功能示例
2018/05/24 PHP
PHP面向对象程序设计重载(overloading)操作详解
2019/06/13 PHP
PHP 图片合成、仿微信群头像的方法示例
2019/10/25 PHP
幻宇的层模拟窗口效果-提供演示和下载
2007/01/20 Javascript
Add a Picture to a Microsoft Word Document
2007/06/15 Javascript
javascript Xml增删改查(IE下)操作实现代码
2009/01/30 Javascript
window.open()详解及浏览器兼容性问题示例探讨
2014/05/29 Javascript
SuperSlide2实现图片滚动特效
2014/06/20 Javascript
innerHTML中标签可以换行的方法汇总
2015/08/14 Javascript
JavaScript中setter和getter方法介绍
2016/07/11 Javascript
简单实现AngularJS轮播图效果
2020/04/10 Javascript
在页面中引入js的两种方法(推荐)
2017/08/29 Javascript
Vue.js实现开发购物车功能的方法详解
2019/02/22 Javascript
Vue 事件处理操作实例详解
2019/03/05 Javascript
Angular中使用ng-zorro图标库部分图标不能正常显示问题
2019/04/22 Javascript
微信小程序实现吸顶效果
2020/01/08 Javascript
JavaScript 实现自己的安卓手机自动化工具脚本(推荐)
2020/05/13 Javascript
Python实现的概率分布运算操作示例
2017/08/14 Python
Python中if elif else及缩进的使用简述
2018/05/31 Python
Python实现读取txt文件中的数据并绘制出图形操作示例
2019/02/26 Python
六行python代码的爱心曲线详解
2019/05/17 Python
在python里面运用多继承方法详解
2019/07/01 Python
Python调用C语言的实现
2019/07/26 Python
Pycharm连接远程服务器过程图解
2020/04/30 Python
浅析NumPy 切片和索引
2020/09/02 Python
瑞典时尚服装购物网站:Miinto.se
2017/10/30 全球购物
ABOUT YOU匈牙利:500个最受欢迎的时尚品牌
2019/07/19 全球购物
几道PHP面试题
2013/04/14 面试题
欢迎横幅标语
2014/06/17 职场文书
司机岗位职责范本
2015/04/10 职场文书
银行安全保卫工作总结
2015/08/10 职场文书
JavaScript中的宏任务和微任务详情
2021/11/27 Javascript
MySQL数据库查询进阶之多表查询详解
2022/04/08 MySQL
Django框架中模型的用法
2022/06/10 Python