IT猫扑网:您身边最放心的安全下载站! 最新更新| 软件分类| 专题汇总| 手机版

您当前所在位置:IT猫扑网 > 操作系统 > LINUX > nginx文件类型错误解析漏洞

nginx文件类型错误解析漏洞

时间:2015-06-28 00:00 来源:IT猫扑网|http://www.itmop.com/ 作者:网管联盟 我要评论(0)

  漏洞介绍: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里取出真正的脚本名。

  那么假设存在一个

  将会得到一个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来解析任何类型的文件了。

  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;

  }

关键词标签:nginx,解析漏洞,文件类

相关阅读 安装红帽子RedHat Linux9.0操作系统教程 Tomcat9.0如何安装_Tomcat9.0环境变量配置方法 多种操作系统NTP客户端配置 Linux操作系统修改IP Linux实现SCSI硬盘热插拔及在线识别 Linux下用CDMA modem拨号上网

文章评论
发表评论

热门文章 安装红帽子RedHat Linux9.0操作系统教程 安装红帽子RedHat Linux9.0操作系统教程 Linux服务器:设计高性能网站架构-LLMP Linux服务器:设计高性能网站架构-LLMP 使用Clonezilla迁移到虚拟Linux环境 使用Clonezilla迁移到虚拟Linux环境 Linux上的MRTG流量监控中心 Linux上的MRTG流量监控中心 Linux 双网卡绑定一个IP原理及实现 Linux 双网卡绑定一个IP原理及实现 linux和windows等系统远程控制ubuntu桌面 linux和windows等系统远程控制ubuntu桌面

相关下载

人气排行 Linux下获取CPUID、硬盘序列号与MAC地址 dmidecode命令查看内存型号 linux tc实现ip流量限制 安装红帽子RedHat Linux9.0操作系统教程 linux下解压rar文件 lcx.exe、nc.exe、sc.exe入侵中的使用方法 Ubuntu linux 关机、重启、注销 命令 查看linux服务器硬盘IO读写负载 linux命令行浏览器的使用方法 Linux NFS服务固定端口及防火墙配置 U盘安装Ubuntu 10.04 Linux清除用户登录记录和命令历史方法