在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 相关文章推荐
把1316这个数表示成两个数的和,其中一个为13的倍数,另一个是11的倍数,求这两个数。
Jun 24 PHP
在WINDOWS中设置计划任务执行PHP文件的方法
Dec 19 PHP
PHP输出时间差函数代码
Jan 28 PHP
解析PHP中常见的mongodb查询操作
Jun 20 PHP
php生成N个不重复的随机数实例
Nov 12 PHP
php下获取http状态的实现代码
May 09 PHP
PHP文件上传判断file是否己选择上传文件的方法
Nov 10 PHP
PHP中strnatcmp()函数“自然排序算法”进行字符串比较用法分析(对比strcmp函数)
Jan 07 PHP
PHP面向对象自动加载机制原理与用法分析
Oct 14 PHP
Yii输入正确验证码却验证失败的解决方法
Jun 06 PHP
PHP cURL获取微信公众号access_token的实例
Apr 28 PHP
php判断某个方法是否存在函数function_exists (),method_exists()与is_callable()区别与用法解析
Apr 20 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
亚洲咖啡有什么?亚洲咖啡产地介绍 亚洲咖啡有什么特点?
2021/03/05 新手入门
php下将XML转换为数组
2010/01/01 PHP
PHP通过iconv将字符串从GBK转换为UTF8字符集
2011/07/18 PHP
用PHP即时捕捉PHP中的错误并发送email通知的实现代码
2013/01/19 PHP
php安装php_rar扩展实现rar文件读取和解压的方法
2016/11/17 PHP
IE innerHTML,outerHTML所引起的问题
2009/06/04 Javascript
JavaScript性能陷阱小结(附实例说明)
2010/12/28 Javascript
javascript遍历控件实例详细解析
2014/01/10 Javascript
关闭时刷新父窗口两种方法
2014/05/07 Javascript
如何调试异步加载页面里包含的js文件
2014/10/30 Javascript
2014 年最热门的21款JavaScript框架推荐
2014/12/25 Javascript
基于javascript实现浏览器滚动条快到底部时自动加载数据
2015/11/30 Javascript
javascript学习指南之回调问题
2016/04/23 Javascript
js 实现数值的千分位及保存小数方法(推荐)
2016/08/01 Javascript
jQuery+ajax读取并解析XML文件的方法
2016/09/09 Javascript
真正好用的js验证上传文件大小的简单方法
2016/10/27 Javascript
js 动态生成json对象、时时更新json对象的方法
2016/12/02 Javascript
JS实现为动态添加的元素增加事件功能示例【基于事件委托】
2018/03/21 Javascript
详解vue中localStorage的使用方法
2018/11/22 Javascript
[01:00:35]2018DOTA2亚洲邀请赛3月30日B组 EffcetVSMineski
2018/03/31 DOTA
[03:04]2018年度DOTA2玩家最喜爱的主播-完美盛典
2018/12/16 DOTA
批量获取及验证HTTP代理的Python脚本
2017/04/23 Python
python操作小程序云数据库实现简单的增删改查功能
2019/06/06 Python
python爬虫请求头设置代码
2020/07/28 Python
Python大批量搜索引擎图像爬虫工具详解
2020/11/16 Python
html5实现完美兼容各大浏览器的播放器
2014/12/26 HTML / CSS
video实现有声音自动播放的实现方法
2020/05/20 HTML / CSS
J2EE相关知识面试题
2013/08/26 面试题
法学毕业生自我鉴定
2013/11/08 职场文书
校园报刊亭的创业计划书
2014/01/02 职场文书
法学院毕业生求职信
2014/06/25 职场文书
幼儿园保育员责任书
2014/07/22 职场文书
创建绿色学校先进个人材料
2014/08/20 职场文书
幸福来敲门观后感
2015/06/04 职场文书
回复函范文
2015/07/14 职场文书
小学三年级班主任工作经验交流材料
2015/11/02 职场文书