Nginx 解析漏洞

news2024/11/29 22:40:37

文章目录

  • Nginx 解析漏洞
    • 1. 空字节漏洞
      • 1.1 漏洞描述
      • 1.2 漏洞复现
      • 1.3 修复方案
    • 2. Nginx 解析漏洞复现
      • 2.1 漏洞描述
      • 2.2 漏洞复现
      • 2.3 获取GetShell
      • 2.4 修复方案
    • 3. Nginx 文件名逻辑漏洞
      • 3.1 漏洞描述
      • 3.2 漏洞原理
      • 3.3 漏洞复现
        • 3.3.1 环境启动
        • 3.3.2 漏洞验证
      • 3.4 漏洞利用
      • 3.5 修复方案

Nginx 解析漏洞

1. 空字节漏洞

1.1 漏洞描述

说明内容
漏洞编号
漏洞名称Nginx解析漏洞
漏洞评级高危
影响范围0.5.,0.6., 0.7 <= 0.7.65, 0.8 <= 0.8.37
漏洞描述当使用PHP-FastCGI执行PHP时,遇到url里面存在%00空字节时与FastCGI的处理不一致,导致可在非PHP文件中嵌入PHP代码,通过访问url+%00.PHP来执行其中的PHP代码
修复方案升级组件

1.2 漏洞复现

启动环境

image-20230907201439490

访问页面

看到如下页面及启动成功

image-20230907201529915

在nginx_0.7.65目录下的html目录中有一个info.png

image-20230907202112278

从后缀名来看这个是一个图片,但是如果从文件内容的角度来看是一个phpinfo。

image-20230907202254207

这个图片是无法直接进行访问的。

image-20230907202443341

使用bp抓取数据包,然后在文件后缀名末尾添加%00.php

image-20230907202636913

该文件即可执行。

解析:此处这个漏洞属于00截断漏洞,文件系统在处理寻找文件的时候会有偏差,PHP语言的底层是通过C语言来实现的,C语言字符串结束是00。PHP解释引擎在访问这个文件的时候,遇到了00,认为该文件在%00处就结束了,所以读取的是png文件,但是是以php方式执行的

1.3 修复方案

为了修复此漏洞,可以考虑以下方案:

  • 更新 NGINX 版本: 确保您的 NGINX 版本已升级到最新版本。NGINX 团队通常会修复安全漏洞,并发布相关的更新补丁。及时更新可帮助解决已知的漏洞。
  • 安装安全模块: NGINX 支持许多第三方安全模块,例如 ModSecurity 或 NAXSI。这些模块可以帮助检测和阻止恶意请求,包括空字节注入攻击。
  • 过滤输入: 对于用户提供的输入,进行适当的输入验证和过滤。对于文件路径、文件名等参数,应该对空字节进行处理或过滤,以防止攻击者利用空字节绕过文件类型检查。

2. Nginx 解析漏洞复现

链接地址:Vulhub - 用于漏洞环境的 Docker-Compose 文件。

2.1 漏洞描述

说明内容
漏洞编号
漏洞名称Nginx解析漏洞
漏洞评级高危
影响范围Nginx 1.x 最新版,PHP 7.x最新版
漏洞描述该漏洞与Nginx、php版本无关,属于用户配置不当造成的解析漏洞。
修复方案升级组件

2.2 漏洞复现

环境启动

image-20230907205202688

访问页面

image-20230907205129296

上传一个php文件,页面显示我们只能上传图像文件。

image-20230907205219922

修改文件后缀名,Content-Type类型为image/png,最后在文件内容的头部添加GIF89a。

image-20230907205615598

上传成功,并且显示出了文件的上传路径。

页面访问上传路径,但是文件并没有执行。

image-20230907205851213

增加后缀,被解析成PHP文件:/.php

image-20230907205927963

漏洞原因:开启了cgi.fix_pathinfo选项后,本身是一个png文件,但是加上/.php后会把整个文件当中php文件来执行。

image-20230907210142373

2.3 获取GetShell

还可以上传一个一句话木马

image-20230907211141245

使用bp抓取数据包并进行修改

image-20230907211225679

然后使用蚁剑进行连接即可。

image-20230907211054301

2.4 修复方案

  • 将php.ini文件中的cgi.fix_pathinfo的值设为0

3. Nginx 文件名逻辑漏洞

链接地址:Vulhub - Docker-Compose file for vulnerability environment。

3.1 漏洞描述

说明内容
漏洞编号CVE-2013-4547
漏洞名称Nginx 文件名逻辑漏洞
漏洞评级高危
影响范围Nginx 0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7
漏洞描述该漏洞存在于Nginx于PHP的配置上,如果配置不当,容易使得Nginx实现对%00等特殊字符解析出现问题,造成Nginx将特殊构造的URL交给PHP来进行处理,而Nginx则因为特殊字符的问题,无法接收含有特殊字符的URL或者是造成了在%00位置处的截断,从而造成了客户上传的文件被当作PHP代码来解析。
修复方案升级组件

3.2 漏洞原理

主要原因是错误地解析了请求的URI,错误地获取到用户请求的文件名,导致出现权限绕过、代码执行的连带影响。

比如,Nginx匹配到.php结尾的请求,就发送给fastcgi进行解析,常见的写法如下:

location ~ \.php$ {
    include        fastcgi_params;

    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  /var/www/html$fastcgi_script_name;
    fastcgi_param  DOCUMENT_ROOT /var/www/html;
}

正常情况下(关闭pathinfo的情况下),只有.php后缀的文件才会被发送给fastcgi解析。而存在Nginx 文件名逻辑漏洞的情况下,我们请求1.gif[0x20][0x00].php,这个URI可以匹配上正则\.php$,可以进入这个Location块;但进入后,Nginx却错误地认为请求的文件是1.gif[0x20],就设置其为SCRIPT_FILENAME的值发送给fastcgi。

fastcgi根据SCRIPT_FILENAME的值进行解析,最后造成了解析漏洞。

3.3 漏洞复现

3.3.1 环境启动

image-20230908212612796

环境启动后,访问http://your-ip:8080/即可看到一个上传页面。

image-20230908213420971

上传一个php文件,页面显示我们上传的文件类型不支持。这个环境是黑名单验证,我们无法上传php后缀的文件。

image-20230908214005506

3.3.2 漏洞验证

开启Burpsuit抓取数据包,截获文件上传的数据包后,修改文件后缀名为gif格式,然后在文件后缀名的后面添加一个空格,这样,文件上传后也会出现一个空格。

image-20230909100310175

访问http://your-ip:8080/uploadfiles/wuhu.gif[0x20][0x00].php,在bp中将文件修改为uploadfiles/wuhu.gif[0x20][0x00].php。这里的[0x20]为空格,[0x00]为\0起到了截断的作用。

image-20230909100718950

即可发现PHP已被解析:

image-20230909100810741

3.4 漏洞利用

上传木马文件

image-20230909102002153

image-20230909101235923

在文件的后缀名后面添加一个空格

image-20230909101332942

访问上传文件 shell.jpg[0x20][0x00].php时,将文件修改为 shell.jpg[0x20][0x00].php,[0x20]为空格,[0x00]为\0(起到截断作用)

image-20230909101543925

命令执行成功

image-20230909102323556

3.5 修复方案

  • 更新 Nginx 版本: 确保 Nginx 版本已升级到最新版本。Nginx 团队通常会修复安全漏洞,并发布相关的更新补丁。及时更新可帮助解决已知的漏洞。该问题已经在 Nginx 1.5.7 和 1.4.4 版本中修复。

补丁链接地址

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/991830.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

X(推特)“鸡贼”手段曝光:这些广告并没有标注,你知道吗?

在使用推特的时候&#xff0c;有些人可能会注意到&#xff0c;一些广告并没有正确地标注&#xff0c;看起来很像普通的内容&#xff0c;十分难以区分。美国的联邦贸易委员会&#xff08;FTC&#xff09;和欧盟的欧洲广告标准局&#xff08;EASA&#xff09;等机构都对广告标签有…

WhatsApp的两个商业模式该如何选择

WhatsApp Business 是什么 目前 WhatsApp 提供两种商业模式&#xff0c;企业应根据自身需求选择相应版本。 第一个版本是 WhatsApp Business&#xff1a;初创企业只需一个手机应用程序&#xff0c;便可以个体单位与客户轻松互动; 另一个版本是 WhatsApp Business API&#xff…

如何优雅地实现接口防刷

背景 最近在学习redis&#xff0c;想到了之前的写的一个案例demo&#xff0c;实现了接口的流量防刷。主要是为了防止爬虫爬取接口&#xff0c;当然可以适用于那些需要进行流控的系统&#xff0c;shigen画了一张草图展示主要的原理和过程&#xff1a; 首先用户请求系统的接口&a…

一篇文章教会你如何降低代码的冗余度——探索指针数组,数组指针,函数指针,函数指针数组,回调函数的奥妙

前言&#xff1a;人们总说指针是c语言的灵魂&#xff0c;是因为指针的使用技巧是“千姿百态”的&#xff0c;程序员可以通过指针来直接访问内存&#xff0c;这就赋予了它功能的多样性以及更多意想不到的编程技巧与方式&#xff0c;在本篇文章中&#xff0c;笔者就给大家带来指针…

同时安装python2和3解决方案

我先安装python3后&#xff0c;按照网上步骤&#xff0c;继续安装好python2&#xff0c;直接运行python -v只能显示python2&#xff0c;运行python3找不到此命令&#xff0c;通过https://blog.csdn.net/qq_64409509/article/details/131514944这篇文章找到了解决方案&#xff0…

MindFusion.Diagramming for ASP.NET MVC 4.2 Crack

ASP.NET MVC 4.2 的 MindFusion.Diagramming 添加对多个图表页面和选项卡式图表视图的支持。 2023 年 9 月 8 日 - 16:57新版本 特征 多个图表页面-添加了DiagramDocument 类&#xff0c;它表示图表页面或工作表的集合。 可以将新页面添加到文档中&#xff0c;并且可以删除或重…

功率放大器主要用作什么用途

功率放大器是一种用于增大输入信号功率的器件&#xff0c;有着广泛的应用。其主要作用是提供足够的功率输出&#xff0c;以满足各种系统和设备对信号放大的需要。下面西安安泰电子详细介绍功率放大器的主要应用领域。 音频放大&#xff1a;功率放大器在音频领域有着广泛的应用。…

9.8day58 单调栈

739. 每日温度 - 力扣&#xff08;LeetCode&#xff09; 知识点&#xff1a;1.建栈 2.如果后面要加入的数小于栈顶元素就把数组的下标压进栈里 3.反之 就让该数于栈顶元素进行比较 如果该数大于栈顶元素&#xff08;while&#xff09; 就把栈顶元素下表对应的arr数组的值进行…

创建n维空间每个维度(轴)的刻度值numpy.ogrid[]

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 创建n维空间每个维度&#xff08;轴&#xff09;的刻度值 numpy.ogrid[] [太阳]选择题 下列代码y[1].shape输出的结果是&#xff1f; import numpy as np x np.ogrid[1:5:1] print("【显…

沿着管道或者巷道流动的烟雾或者液体的Shader参考

这个Shader正确其作用的前提是管道或者巷道和周围的物体要拉开一定距离&#xff0c;如果和周围的物体紧挨着是不行的。 首先看液体&#xff1a; 使用的贴图参考&#xff1a; 然后是气体&#xff1a; 使用的贴图参考&#xff1a;

如何将WPS设置为默认的办公软件

很多小伙伴的电脑中有好几种办公软件&#xff0c;每次打开文档表格都要进行选择&#xff0c;有小伙伴想要将WPS设置成默认的办公软件该怎么操作呢&#xff0c;下面小编就给大家详细介绍一下将WPS设置为默认的办公软件的方法&#xff0c;有需要的小伙伴快来和小编一起看一看吧。…

Tableau自学四部曲_Part3:基础图表制作

文章目录 一、 对比分析&#xff1a;比大小1. 柱状图2. 条形图3. 热力图&#xff08;突出显示表&#xff09;4. 气泡图5. 词云 二、变化分析&#xff1a;看趋势1. 折线图2. 基于连续时间序列的折线图预测接下来的数据走向3. 面积图 三、构成分析&#xff1a;看占比1. 饼图2. 【…

Unity 之 定时调用函数的方法

文章目录 1. **Invoke方法&#xff1a;**2. **InvokeRepeating方法&#xff1a;**3. **协程&#xff08;Coroutines&#xff09;&#xff1a;**4. **Time.deltaTime&#xff1a;**5. **使用Invoke延迟执行方法并取消&#xff1a;** 在Unity中&#xff0c;你可以使用多种方式来实…

基于Java+SpringBoot+Vue前后端分离餐饮管理系统设计和实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

c++ 学习之 静态成员变量和静态成员函数

文章目录 前言正文静态成员变量初始化操作如何理解共享一份数据访问权限 静态成员函数访问方式静态成员函数只能访问静态成员变量访问权限 前言 静态成员分为 1&#xff09;静态成员变量 所有对象共享一份数据在编译阶段分配空间类内声明&#xff0c;类外初始化 2&#xff09…

C++编译底层

C/C编译底层 C内存管理LINUX进程区分段及存储数据GCC编译流程动态库静态库区别及LINUX加载库extern C的结果和CPP编译的区别重载的底层原理编译性语言和解释性语言的本质区别和优缺点 C内存管理 栈 存储函数的返回地址、参数、局部变量、返回值&#xff0c;从高地址向低地址增长…

Linux ifconfig只显示 lo 网卡,没有ens网卡解决方案

项目场景&#xff1a; 虚拟机中linux无网络问题 问题描述 之前在调试linux的时候&#xff0c;由于一些不太清楚的误操作&#xff0c;导致ubuntu linux出现无网络问题&#xff0c;现象如下 ifconfig 只显示了 lo 网卡 lo 网卡&#xff1a;它是本地环回接口。 这意味着您的虚…

Ubuntu系统下安装常用软件

安装MySQL 1、卸载清理残余 dpkg --list|grep mysqlsudo apt-get remove mysql-common2、升级apt sudo apt-get update3、安装MySQL sudo apt-get install mysql-server4、启动和关闭mysql的命令如下 #启动: sudo service mysql start#重启: sudo service mysql restart #…

Linux之查看so/bin依赖(三十一)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

亿发多门店商品管理信息化解决方案,可以帮助企业解决那些问题

在现代商业世界中&#xff0c;高效的管理是企业成功的关键之一。而进销存系统作为企业信息化管理的重要组成部分&#xff0c;对于加强企业的运营效率和竞争力具有至关重要的作用。许多企业正寻求专业的商品管理信息化 解决方案,支持其业务运营。亿发进销存管理系统,一个平台统一…