`
icarusli
  • 浏览: 531084 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

nginx文件类型错误解析漏洞

    博客分类:
  • WEB
阅读更多

漏洞介绍: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;
}

PS: 鸣谢laruence大牛在分析过程中给的帮助

 

 

内容转自:http:// www.80sec.com/ nginx-securit.html

http:// www.laruence.com/2010/05/20/1495.html

---------------------------------------------------------------------

80sec团队由一群年轻、充满活力、充满体力、充满激情、富有创造力的未婚dota男组成,他们均在各大互联网公司从事信息安全工作,他们的口号是know it then hack it,素包子非常认同这个观点:“我们只要非常熟悉一个事物,就有可能客观的发现它的不足之处,同时我们也能的发现该事物的优点”。

80sec的意思是“80端口的安全”,也就是“web安全”;同时由于该团队成员都是80后的年轻人,我们也可以理解为“80后安全”;另外由于sec的发音是se ke,我们还可以理解为“80后色客”、“80后摄客”或“80后S客”,我们对80sec的理解仅受限于想象力。

下面介绍一下他们的丰功伟绩,他们曾发现IIS、IE、FireFox、Maxthon、世界之窗、PHPWind、DeDeCMS、QQ mail、QuarkMail、EXTMail等软件的漏洞,可见硕果累累。

既然介绍了80sec,就不得不介绍另外一个非常专注WEB安全的顶级安全团队80vul,该团队同样也是由80后的男童鞋组成(90后表示压力很大:p),他们也发现了大量WEB APP的安全漏洞,例如IE、Gmail、wordpress、PHPWind、DISCUZ、MYBB等。

---------------------------------------------------------------------

分享到:
评论

相关推荐

    Nginx解析漏洞测试

    Nginx是一款高性能的web服务器,使用非常广泛,其不仅经常被用作...默认情况下可能导致服务器错误的将任何类型的文件以PHP的方式进行解析,这将导致严重的安全问题,使得恶意的攻击者可能攻陷支持php的nginx服务器。

    nginx0.8.15解析漏洞拿下某空间的图片服务器1

    【Nginx 0.8.15 解析漏洞详解】 在网络安全领域,解析漏洞是一种常见的服务器安全问题,它允许攻击者通过特定的输入利用软件的解析机制来执行恶意操作。这里提到的是针对Nginx 0.8.15版本的一个解析漏洞,这个版本...

    信息安全技术基础:利用Nginx漏洞上传.pptx

    **Nginx解析漏洞**是指当一个文件名后跟任意字符(如"/任意文件名.php")时,Nginx可能会错误地将非PHP文件解析为PHP文件。例如,如果有一个名为"nginx.jpg"的文件,攻击者可以将其修改为"nginx.jpg/x.php",使得...

    nginx配置文档详细说明中文说明

    **:默认的MIME类型,当无法确定文件类型时使用。 - **sendfile on;**:启用sendfile指令,通过操作系统直接读取和发送文件,减少数据拷贝,提高传输效率。 - **gzip on;**:启用GZIP压缩,对于支持压缩的响应体,...

    IIS漏洞全解析

    - 配置Nginx以禁用对某些文件类型的支持。 - 使用防火墙规则或访问控制列表来限制对敏感资源的访问。 #### Apache 文件扩展名绕过漏洞 - **漏洞描述**:Apache Web服务器在处理带有多个扩展名的文件时存在一个...

    PHP爆绝对路径方法收集

    7. nginx文件类型错误解析爆路径方法 nginx文件类型错误解析爆路径方法是通过在图片地址后加/x.php来获取绝对路径信息的。例如,http://www.xxx.com/top.jpg/x.php。 8. 其他爆路径方法 其他爆路径方法包括使用整...

    GetShell的姿势总结1

    - **Nginx**:Nginx的解析漏洞可能源于配置错误,使得非PHP文件被当作PHP脚本执行。 - **Apache**:Apache也有类似的解析漏洞,如通过扩展名大小写混淆或Apache 1.x、2.2.x版本的文件解析问题。 总的来说,GetShell...

    用于文件上传下载的lua代码

    Lua需要解析这些数据,提取文件名、文件类型和文件内容。 2. **临时文件管理**:文件上传后,通常会先存储在服务器的临时目录中。Lua需要管理这些临时文件,确保安全和有效存储。 3. **文件验证**:在保存文件前,...

    第03天:基础入门-搭建安全拓展1

    总体而言,搭建过程中可能出现的安全问题包括但不限于:配置错误、权限设置不当、文件解析漏洞、脚本注入、中间件漏洞等。防护措施应涵盖所有层面,从代码编写、服务器配置到日常监控和更新。 通过深入理解这些...

    php漏洞探测思路

    - 例如,通过观察和分析被Zend Engine编译和执行的文件,可以推断出可能存在哪些类型的漏洞。 2. **利用预定义函数:** - PHP提供了一系列预定义函数,如`get_defined_vars()`、`get_declared_classes()`等,这些...

    PHP爆绝对路径方法收集整理

    7. **nginx文件类型错误解析爆路径**: 对于使用nginx的服务器,如果存在文件类型解析漏洞,攻击者可以在图片URL后添加`.php`,导致图片作为PHP文件执行,并可能泄露路径。例如:`www.xxx.com/top.jpg/x.php` 8. *...

    渗透测试面试题2019版.pdf

    - 不同类型的服务器可能存在不同的解析漏洞或配置错误。 **9. MySQL注入** - 若想通过工具直接向目标站写入一句话木马,则需要拥有root权限并知道网站的具体路径。 **10. 解析漏洞** - 介绍了不同版本的服务器容器...

    PHP 5.2.6 Win32x86 Installer 完整安装文件(MSI)

    在这个版本的安装过程中,当用户指定了Apache的安装目录,PHP会自动配置与Apache的集成,生成必要的配置文件(如`php.ini`)并添加模块(如`mod_php`),使得Apache能够解析PHP脚本。 5. **推荐Apache 2.2**:...

    护网面试题总结+DD安全工程师笔试问题

    知识点:常见的中间件漏洞包括 IIS PUT 漏洞、短文件名猜解、远程代码执行、解析漏洞 Apache 解析漏洞、目录遍历 Nginx 文件解析、目录遍历、CRLF 注入、目录穿越 Tomcat 远程代码执行、war 后门文件部署 JBoss 反序...

    渗透测试工程师面试题大全.pdf

    - **Nginx**:版本小于等于0.8.37存在类似的解析漏洞,即使关闭Fast-CGI也能利用。 - **Apache**:通过给文件名附加多个扩展名绕过解析限制。 - **lighttpd**:允许通过在文件名后添加PHP扩展名的方式进行错误...

    hd_wish.zip

    - 需要注意文件大小限制、文件类型检查以及错误处理。 7. PHP错误和日志: - PHP有错误报告等级设置,如E_ALL、E_NOTICE、E_WARNING等,可控制显示哪些类型的错误信息。 - 错误可以通过error_log()函数记录到...

    PHP实例开发源码-击掌CMS (无数据库CMS系统).zip

    理解PHP的基础语法、变量、数据类型、控制结构(如条件语句和循环)、函数以及错误处理是深入学习此源码的关键。 2. **文件操作**:由于击掌CMS是一个无数据库的系统,所以很可能依赖于文件系统来存储和管理内容。...

    基于PHP的disk网盘专用探针源码.zip

    需要考虑防止SQL注入、跨站脚本攻击(XSS)、文件包含漏洞等常见的Web安全问题。 8. **Web接口设计**:探针通常以网页形式展示结果,因此需要理解HTML、CSS和JavaScript,以及PHP如何生成动态网页内容。可能还需要...

    基于原生PHP7.4编写的动态博客系统,大二PHP动态网页设计期末作品,包含SQL脚本与数据库文件 .zip

    例如,类型提示的改进,如弱类型数组返回提示,以及新的`nullsafe`操作符,用于防止空对象调用方法时产生错误。 2. **动态博客系统**: 动态博客系统允许用户发布、编辑和删除博客文章,同时支持评论、分类等功能。...

Global site tag (gtag.js) - Google Analytics