网上疯传一个Nginx的所谓文件类型错误解析漏洞,但是真的就只有这样吗?漏洞介绍:nginx是一款高性能的web服务器,使用非常广泛,其不仅经常被用作反向代理,也可以非常好的支持PHP的运行。80sec发现其中存在一 个较为 严重的安全问题,默认情况下可能导致服务器错误的将任何类型的文件以PHP的方式进行解析,这将导致严重的安全问题,使得恶意的攻击者可能攻陷支持 php的nginx服务器。
大家在到处利用这个有趣的漏洞的时候有没有想过真的是Nginx的Bug吗?真的是Nginx文件解析错误了吗?
首先看看,小顿提供的解决 方案: 第一种:

修改cgi.fix_pathinfo=0

第 二种:

if ( $fastcgi_script_name ~ ..*/.*php ) { return 403; }

cgi.fix_pathinfo 是什么?             cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP's previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting this to 1 will cause PHP CGI to fix it's paths to conform to the spec. A setting of zero causes PHP to behave as before. Default is 1. You should fix your scripts to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
我 注意到三件事情:             1.两种方案的修改都是针对fastcgi做的             2.这个漏洞只提出针对Nginx+PHP CGI有效             3. 漏洞利用的最终后缀一定是.php,而不是输入任何后缀都被当作PHP执行
由上面三点我做出一个假设,这个并不是Nginx的漏洞,而是fastcgi或者php-fpm的bug。
接下来要做的就是漏洞重现。 我首先假设是Nginx版本的问题,所以我测试了以下版本,测试顺序是 nginx 0.7.32 nginx 0.8.34 nginx 0.6.32
因为80sec是个很有名的安全网站,所以我很坚信是我自己错了,所以当测试完0.7.32和 0.8.34都没有出现这个漏洞的时候,我差点下了一个武断的结论,0.7以下版本的Nginx才受此漏洞影响,但是当我测试完0.6.32之 后,我崩溃了,依然没有重现这个漏洞。看来,我上面的结论有可能成立~~
于是,我测试了三个版本的php-fpm, 0.6, 0.5.13, 0.5.10。 上面测试nginx不同版本时,我用的是0.6,没能重现漏洞,然后接下来两个版本 0.5.13,0.5.10都出现了这个漏洞。我比较了下不同版本php-fpm下的phpinfo();,发现php-fpm 0.6 没有 cgi.fix_pathinfo这个选项,即使在php.ini中做了设置也不会有这个选项值,而php-fpm 0.5版本下的phpinfo();有这个选项值。
所以我断定是php-fpm的问题。php-fpm 0.6中有可能禁用了cgi.fix_pathinfo这个选项,或者说修正了这个bug.
为了证实我的这个想法,我Google了一 下,发现在 2010-01-27 那一天就已经有人在bugs.php.net提交了这个Bug . 详见:http://bugs.php.net/bug.php?id=50852&edit=1, 里面写的很清楚,我就不翻译了。
另外,我还参考了大牛laruence的文章 http://www.laruence.com/2009/11/13/1138.html, 虽然这边文章没有提出漏洞,但是却给了我思路。
所以,聪明 的小朋友想想,如果不是Nginx的问题,是不是其它使用php-fpm的服务器也有问题呢????

转载于:https://www.cnblogs.com/demonspider/archive/2013/04/11/3014474.html

nginx是否存在文件类型解析漏洞(转)相关推荐

  1. nginx真的存在文件类型解析漏洞吗?

    这两天网上疯传一个Nginx的所谓文件类型错误解析漏洞,但是真的就只有这样吗?漏洞介绍:nginx是一款高性能的web服务器,使用非常广泛,其不仅经常被用作反向代理,也可以非常好的支持PHP的运行.8 ...

  2. GPS GLONASS数据文件类型解析

    GPS & GLONASS数据文件类型解析 一.GPS数据格式 RINEX格式现如今已成为GPS测量应用中的标准数据格式,目前应用最为广泛.最普遍的是RINEX格式的第2个版本,该版本能够用于 ...

  3. PBOC中文件结构,文件类型解析

    1.明确两个规范,a. ISO7816   b.EMV规范/PBOC规范,二者的区别,7816是ISO制定的,是国际规范,而EMV规范是卡组织制定的,是遵循ISO7816规范的,PBOC是抄袭EMV规 ...

  4. 【文件上传漏洞-07】中间件文件解析漏洞概述及实例——Apache、IIS和Nginx

    目录 1 Apache解析漏洞 1.1 概述 1.2 Apache解析漏洞实例 1.2.1 实验目的 1.2.2 实验环境 1.2.3 实验一:验证解析顺序漏洞 1.3 总结 2 IIS 解析漏洞 2 ...

  5. nginx解析漏洞简单复现及修复

    Nginx简介 Nginx是一款轻量级的web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,其特点是占内存小.并发能力强:国内使用Nginx的有百度.京东.新浪.网易.腾讯.淘宝等 ...

  6. 上传php文件不能解析,浅谈文件解析及上传漏洞

    中国菜刀 在web渗透中,我最期待两种漏洞,一种是任意命令执行漏洞,如struct2漏洞等:另一种是文件上传漏洞,因为这两种漏洞都是获取服务器权限最快最直接的方法.而对于任意命令执行漏洞,如果是通过内 ...

  7. 将jpg文件当作php文件来解析,解析漏洞

    1.漏洞简介 解析漏洞是指web服务器因对http请求处理不当导致将非可执行的脚本,文件等当做可执行的脚本,文件等执行.该漏洞一般配合服务器的文件上传功能使用,以获取服务器的权限. 2.漏洞成因.检测 ...

  8. 文件上传漏洞 解析、验证、伪造(三)

    注意:仅用于本人学习的笔记记录,禁止进行传播分享,一旦造成严重后果与本人无关!!! 1.文件上传是个功能,任意文件上传(漏洞) 2.无法提交shell但是可以提交其他的文件,例如HTML(上传存储型x ...

  9. apache不能解析php文件_Web中间件漏洞之Apache篇

    Apache简介 Apache 是世界使用排名第一的 Web 服务器软件. 它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的 Web 服务器端软件之一. 它快速. ...

最新文章

  1. 详解Django中Request对象的相关用法
  2. linux中mfsort用法,Linux命令――sort
  3. keras 多层lstm_《Keras 实现 LSTM》笔记
  4. 操作系统实验报告13:线程池简单实现
  5. mysql 代理 a_Keepalived+Mysql+Haproxy
  6. android对象缓存,Android简单实现 缓存数据
  7. java 确定对象的引用_JVM学习笔记之了解对象存活判断和4种引用【三】
  8. sklearn中的Linear_model的score函数讲解
  9. 搭建私人博客踩过的坑(心酸)
  10. Flink 实战问题(五):The transaction timeout is larger than the maximum value allowed by the broker
  11. 卸载python2.7_98%的人这样卸载软件,真的卸载干净了吗?这才是正确的卸载方式...
  12. ios使用theos tweak logify.pl自动hook .h头文件中所有的方法
  13. java.lang.IllegalStateException: Shutdown in progress
  14. 有效沟通bic法则_善用BIC法则,负面回馈不怕引起反弹!
  15. 3D 建模费时费力,Python 让照片秒变模型
  16. 基于Python和R的多元线性回归分析实例
  17. 啥叫工程?啥叫工程师?
  18. 无法将“pytest”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。
  19. 小程序超出文字显示为省略号(代码简单的无话可说)
  20. vivo老照片修复解密

热门文章

  1. java虚拟机内存模型与垃圾回收知识复习总结
  2. 转载:AD的授权还原和主还原:深入浅出Active Directory系列(六)
  3. ArcGIS API for JavaScript实现分图层显示
  4. kubernetes 客户端client-go 使用及常用api
  5. 国内少有的Flutter干货分享:Flutter的原理及美团的实践!
  6. 开源,免费,跨平台——白鹭引擎(Egret Engine)
  7. 高级着色语言HLSL入门(6)
  8. data vue 全部重新渲染_vue将data恢复到初始状态 重新渲染组件实例
  9. Spark核心RDD详述
  10. Hive External Table of Doris(详细)