nginx解析漏洞 只要可以上传文件就会被黑
80sec发现的大漏洞 ,之前听阿里巴巴的同学也说到过 。说明这个漏洞地下知道的人已经很多了
只是今天公开了。。。
漏洞介绍:nginx是一款高性能的web服务器,使用非常广泛,其不仅经常被用作反向代理,也可以非常好的支持PHP的运行。80sec发现其中存在一个较为严重的安全问题,默认情况下可能导致服务器错误的将任何类型的文件以PHP的方式进行解析,这将导致严重的安全问题,使得恶意的***者可能攻陷支持php的nginx服务器。
漏洞分析:nginx默认以cgi的方式支持php的运行,譬如在配置文件当中可以以
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
}
的方式支持对php的解析,location对请求进行选择的时候会使用URI环境变量进行选择,其中传递到后端Fastcgi的关键变量SCRIPT_FILENAME由nginx生成的$fastcgi_script_name决定,而通过分析可以看到$fastcgi_script_name是直接由URI环境变量控制的,这里就是产生问题的点。而为了较好的支持PATH_INFO的提取,在PHP的配置选项里存在cgi.fix_pathinfo选项,其目的是为了从SCRIPT_FILENAME里取出真正的脚本名。
那么假设存在一个http://www.80sec.com/80sec.jpg,我们以如下的方式去访问
将会得到一个URI
/80sec.jpg/80sec.php
经过location指令,该请求将会交给后端的fastcgi处理,nginx为其设置环境变量SCRIPT_FILENAME,内容为
/scripts/80sec.jpg/80sec.php
而在其他的webserver如lighttpd当中,我们发现其中的SCRIPT_FILENAME被正确的设置为
/scripts/80sec.jpg
所以不存在此问题。
后端的fastcgi在接受到该选项时,会根据fix_pathinfo配置决定是否对SCRIPT_FILENAME进行额外的处理,一般情况下如果不对fix_pathinfo进行设置将影响使用PATH_INFO进行路由选择的应用,所以该选项一般配置开启。Php通过该选项之后将查找其中真正的脚本文件名字,查找的方式也是查看文件是否存在,这个时候将分离出SCRIPT_FILENAME和PATH_INFO分别为
/scripts/80sec.jpg和80sec.php
最后,以/scripts/80sec.jpg作为此次请求需要执行的脚本,***者就可以实现让nginx以php来解析任何类型的文件了。
http://www.80sec.com/80sec.jpg/80sec.php
POC: 访问一个nginx来支持php的站点,在一个任何资源的文件如robots.txt后面加上/80sec.php,这个时候你可以看到如下的区别:
访问http://www.80sec.com/robots.txt
HTTP/1.1 200 OK
Server: nginx/0.6.32
Date: Thu, 20 May 2010 10:05:30 GMT
Content-Type: text/plain
Content-Length: 18
Last-Modified: Thu, 20 May 2010 06:26:34 GMT
Connection: keep-alive
Keep-Alive: timeout=20
Accept-Ranges: bytes
访问访问http://www.80sec.com/robots.txt/80sec.php
HTTP/1.1 200 OK
Server: nginx/0.6.32
Date: Thu, 20 May 2010 10:06:49 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
Keep-Alive: timeout=20
X-Powered-By: PHP/5.2.6
其中的Content-Type的变化说明了后端负责解析的变化,该站点就可能存在漏洞。
漏洞厂商:http://www.nginx.org
解决方案:
我们已经尝试联系官方,但是此前你可以通过以下的方式来减少损失
关闭cgi.fix_pathinfo为0
或者
if ( $fastcgi_script_name ~ \..*\/.*php ) {
return 403;
}
转载于:https://blog.51cto.com/linkboy/318979
nginx解析漏洞 只要可以上传文件就会被黑相关推荐
- 文件上传漏洞、WebShell、防御及绕过利用、Web容器解析漏洞、编辑器上传漏洞
文章目录 文件上传漏洞 漏洞概述 漏洞成因 漏洞危害 WebShell 大马 小马 GetShell 漏洞利用的条件 PUT方法上传文件 漏洞的防御.绕过和利用 黑白名单策略 安装upload-lab ...
- i春秋:警惕您站上的“FCK编辑器”解析漏洞突破检测上传后
实验环境 实验环境 操作机:Windows XP 目标机:Windows 2003 目标网址:www.test.com 实验工具:中国菜刀 实验目的 本课程带领大家利用"FCK编辑器&quo ...
- “FCK编辑器”解析漏洞突破检测上传后门漏洞
实验环境 操作机: Windows XP 目标机:Windows 2003 目标网址:www.test.com - 实验目的 掌握FCK编辑器上传漏洞的利用 了解如何修复FCK编辑器上传漏洞 实验工具 ...
- 万能表单解析工具在xheditor上传文件中的应用
利用JadePool中的万能表单解析工具cn.jadepool.web.ProcessForm可以轻松解析表单提交的全部信息,甚至可以轻松获取一个未知结构的表单由那些字段组成.以下是在xheditor ...
- Gin 框架学习笔记(01)— 自定义结构体绑定表单、绑定URI、自定义log、自定义中间件、路由组、解析查询字符串、上传文件、使用HTTP方法
要实现一个 API 服务器,首先要考虑两个方面:API 风格和媒体类型.Go 语言中常用的 API 风格是 RPC 和 REST,常用的媒体类型是 JSON.XML 和 Protobuf.在 Go A ...
- 漏洞复现- - -IIS解析漏洞在fckEditor上传攻击中的利用
目录 一,fckEditor在线编辑器 二,ISS6.0解析漏洞介绍 三,实验环境 四,实验步骤 一,fckEditor在线编辑器 FCKeditor是一个功能强大支持所见即所得功能的文本编辑器,可以 ...
- nginx 上传 文件超时设置_nginx限制上传大小和超时时间设置说明/php限制上传大小...
现象说明: 在服务器上部署了一套后台环境,使用的是nginx反向代理tomcat架构,在后台里上传一个70M的视频文件,上传到一半就失效了! 原因是nginx配置里限制了上传文件的大小 client_ ...
- 关于上传文件的大小限制
Springboot项目关于上传文件的大小限制 1, 第一种处理方式 application.properties中添加 maxFileSize 是单个文件大小 maxRequestSize是设置总上 ...
- nginx 上传文件漏洞_nginx解析漏洞复现
nginx解析漏洞复现 一.漏洞描述 该漏洞与nginx.php版本无关,属于用户配置不当造成的解析漏洞 二.漏洞原理 1. 由于nginx.conf的如下配置导致nginx把以'.php'结尾的文件 ...
最新文章
- RISV-V未来将面临怎样的挑战?
- 2020中国人工智能年度评选报名即将截止!4大类别7大奖项开放申请
- 软件测试用python一般用来做什么-想要成为一个优秀的软件测试人员,应该学些什么?...
- 【转载】中文输入法下onKeyPress不能触发的问题
- Python A+B问题
- ByteBuffer用法小结
- 前端开发中使用mock模拟数据
- windows组件向导里没有internet 信息服务(iis) 的解决办法
- mysql语言的特点不包括_SQL语言具有两种使用方式,分别称为交互式SQL和__________...
- H3C进入目录---用户视图
- java序列化原理_Java序列化机制和原理
- quartz入门案例
- Luogu3613 睡觉困难综合征
- DH参数法 例题 机器人学
- 道德经和译文_道德经全文和译文
- 拼多多推广效果不好,哪里需要改善?
- play框架使用起来(16)
- springboot毕设项目游泳馆管理系统2069l(java+VUE+Mybatis+Maven+Mysql)
- 学校计算机室应该配备哪种灭火器,学校教学楼应配备的灭火器型号是什么
- 计算机适应性考试题目,计算机控制考试题目整理
热门文章
- 手机有一个时钟的标志_手机桌面时钟有这几款就够了
- quarz设置定时器任务的有效时间段_quartz定时任务时间设置
- 三位数的茎叶图怎么看_人参怎么判断年份,这些点你要了解
- Pentium 4处理器架构/微架构/流水线 (11) - NetBurst执行核详解 - Load/Store操作/存储转发
- 【英语学习】【WOTD】veritable 释义/词源/示例
- python Django之Web框架本质 (2)
- SPH(光滑粒子流体动力学)流体模拟实现二:SPH算法(1)-数学原理
- linux从usb安装软件,Linux下USB Camera的安装和使用
- oracle 论坛 千万级表,Oracle千万级记录操作总结
- 图解Visual Studio 2010中的UML建模功能