在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 相关文章推荐
Zend公司全球首推PHP认证
Oct 09 PHP
php 表单验证实现代码
Mar 10 PHP
file_get_contents("php://input", "r")实例介绍
Jul 01 PHP
怎样使用php与jquery设置和读取cookies
Aug 08 PHP
浅析PHP的静态成员函数效率更高的原因
Jun 13 PHP
PHP中提问频率最高的11个面试题和答案
Sep 02 PHP
php中实现可以返回多个值的函数实例
Mar 21 PHP
Apache PHP MySql安装配置图文教程
Aug 27 PHP
几行代码轻松实现PHP文件打包下载zip
Mar 01 PHP
laravel Validator ajax返回错误信息的方法
Sep 29 PHP
PHP设计模式概论【概念、分类、原则等】
May 01 PHP
php慢查询日志和错误日志使用详解
Feb 27 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
为了这两部电子管收音机,买了6套全新电子管和10粒刻度盘灯泡
2021/03/02 无线电
php框架Phpbean说明
2008/01/10 PHP
php递归函数中使用return的注意事项
2014/01/17 PHP
PHP提示Warning:phpinfo() has been disabled函数禁用的解决方法
2014/12/17 PHP
php中使用base HTTP验证的方法
2015/04/20 PHP
php限制文件下载速度的代码
2015/10/20 PHP
Zend Framework入门教程之Zend_Config组件用法详解
2016/12/09 PHP
Visual Studio中的jQuery智能提示设置方法
2010/03/27 Javascript
简单的代码实现jquery定时器
2014/01/03 Javascript
JSF中confirm弹出框的用法示例介绍
2014/01/07 Javascript
JavaScript二维数组实现的省市联动菜单
2014/05/08 Javascript
Javascript中的高阶函数介绍
2015/03/15 Javascript
JavaScript中rem布局在react中的应用
2015/12/09 Javascript
js+html5实现侧滑页面效果
2017/07/15 Javascript
Vue+SpringBoot开发V部落博客管理平台
2017/12/27 Javascript
vue组件详解之使用slot分发内容
2018/04/09 Javascript
webpack配置proxyTable时pathRewrite无效的解决方法
2018/12/13 Javascript
简单了解Javscript中兄弟ifream的方法调用
2019/06/17 Javascript
JS Html转义和反转义(html编码和解码)的实现与使用方法总结
2020/03/10 Javascript
element中el-container容器与div布局区分详解
2020/05/13 Javascript
Python Tkinter基础控件用法
2014/09/03 Python
关于Tensorflow中的tf.train.batch函数的使用
2018/04/24 Python
python Tkinter的图片刷新实例
2019/06/14 Python
Flask框架模板渲染操作简单示例
2019/07/31 Python
使用python采集Excel表中某一格数据
2020/05/14 Python
HTML最新标准HTML5总结(必看)
2016/06/13 HTML / CSS
美国祛痘、抗衰老药妆品牌:Murad
2016/08/27 全球购物
美国中小型企业领先的办公家具供应商:Office Designs
2016/11/26 全球购物
台湾母婴用品限时团购:妈咪爱
2018/08/03 全球购物
美国班级戒指、帽子和礼服、毕业产品、年鉴:Balfour
2018/11/01 全球购物
会计专业毕业生自荐信范文
2013/12/20 职场文书
2014信息技术专业毕业生自我评价
2014/01/17 职场文书
小学生志愿者活动方案
2014/08/23 职场文书
2015年公务员转正工作总结
2015/04/24 职场文书
文明礼仪主题班会
2015/08/13 职场文书
MySQL开启事务的方式
2021/06/26 MySQL