【Vulhub靶场】Nginx 中间件漏洞复现

【Vulhub靶场】Nginx 中间件漏洞复现

  • 一、Nginx 文件名逻辑漏洞(CVE-2013-4547)
    • 1. 影响版本
    • 2. 漏洞原理
    • 3. 漏洞复现
  • 二、Nginx越界读取缓存漏洞(CVE-2017-7529)
    • 1. 漏洞详情
    • 2. 影响版本
    • 3. 漏洞复现
  • 三、Nginx 配置错误导致漏洞(insecure-configuration)
    • 1.漏洞复现
      • 1.1 CRLF注入漏洞
      • 1.2 目录穿越漏洞
      • 1.3 add_header被覆盖
  • 四、Nginx 解析漏洞(nginx_parsing_vulnerability)
    • 1. 版本信息:
    • 2. 漏洞详情
    • 3. 漏洞复现

Nginx 概念:

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
Nginx 是高性能的 HTTP 和反向代理的web服务器,处理高并发能力是十分强大的,能经受高负 载的考验,有报告表明能支持高达 50,000 个并发连接数。
Nginx支持热部署,启动简单,可以做到7*24不间断运行。几个月都不需要重新启动。

一、Nginx 文件名逻辑漏洞(CVE-2013-4547)

1. 影响版本

Nginx 0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7

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解析。
而存在CVE-2013-4547的情况下,我们请求1.gif[0x20][0x00].php,这个URI可以匹配上正则.php$,可以进入这个Location块;但进入后,Nginx却错误地认为请求的文件是1.gif[0x20],就设置其为SCRIPT_FILENAME的值发送给fastcgi。

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

所以,只需要上传一个空格结尾的文件,即可使PHP解析之。

3. 漏洞复现

开启vulhub靶机,启动环境

root@Fly:~/vulhub/nginx/CVE-2013-4547# docker-compose build
root@Fly:~/vulhub/nginx/CVE-2013-4547# docker-compose up -d

在这里插入图片描述
访问靶机的IP地址,如下图:

在这里插入图片描述
这个环境是黑名单验证,我们无法上传php后缀的文件,需要利用CVE-2013-4547。我们上传一个“1.gif ”,注意后面的空格:
在这里插入图片描述
上传成功
在这里插入图片描述
访问http://your-ip:8080/uploadfiles/1.gif[0x20][0x00].php,再次抓包修改,即可发现PHP已被解析:
在这里插入图片描述

二、Nginx越界读取缓存漏洞(CVE-2017-7529)

1. 漏洞详情

Nginx在反向代理站点的时候,通常会将一些文件进行缓存,特别是静态文件。缓存的部分存储在文件中,每个缓存文件包括“文件头”+“HTTP返回包头”+“HTTP返回包体”。如果二次请求命中了该缓存文件,则Nginx会直接将该文件中的“HTTP返回包体”返回给用户。

如果我的请求中包含Range头,Nginx将会根据我指定的start和end位置,返回指定长度的内容。而如果我构造了两个负的位置,如(-600, -9223372036854774591),将可能读取到负位置的数据。如果这次请求又命中了缓存文件,则可能就可以读取到缓存文件中位于“HTTP返回包体”前的“文件头”、“HTTP返回包头”等内容。

2. 影响版本

 Nginx 0.5.6 – 1.13.2

3. 漏洞复现

开启vulhub靶机,启动环境

root@Fly:~/vulhub/nginx/CVE-2017-7529# docker-compose up -d

访问http://your-ip:8080/,即可查看到Nginx默认页面,这个页面实际上是反向代理的8081端口的内容。在这里插入图片描述
在这里插入图片描述
直接在靶场环境中调用python3 poc.py http://your-ip:8080/,读取返回结果:
在这里插入图片描述
可见,越界读取到了位于“HTTP返回包体”前的“文件头”、“HTTP返回包头”等内容。

三、Nginx 配置错误导致漏洞(insecure-configuration)

1.漏洞复现

开启vulhub靶机,启动环境

root@Fly:~/vulhub/nginx/nginx_parsing_vulnerability# docker-compose up -d

运行成功后,Nginx将会监听8080/8081/8082三个端口,分别对应三种漏洞。

1.1 CRLF注入漏洞

Nginx会将$uri进行解码,导致传入%0d%0a即可引入换行符,造成CRLF注入漏洞。
Payload: http://your-ip:8080/%0d%0aSet-Cookie:%20a=1,可注入Set-Cookie头。

错误的配置文件示例(原本的目的是为了让http的请求跳转到https上):

在这里插入图片描述
访问访问http://192.168.111.146:8080/,进行抓包,发现在nginx重定向后,会在http响应头中出现Location字段,如下图所示
在这里插入图片描述
当我们访问http://192.168.111.146:8080/%0d%0atest时,抓包响应头如下图所示。 %0d%0a\r\n,也就是换行符,所以在url中加入一个换行符即可将恶意数据写入http响应头。
在这里插入图片描述
同理加两个换行符可以将数据写入响应体,例如访问 http://192.168.111.146:8080/%0d%0a%0d%0a<script>alert(1)</script>后响应体如下图所示,通过这种注入可实现xss攻击。
在这里插入图片描述

1.2 目录穿越漏洞

Nginx在配置别名(Alias)的时候,如果忘记加/,将造成一个目录穿越漏洞。

错误的配置文件示例(原本的目的是为了让用户访问到/home/目录下的文件):
在这里插入图片描述
在这里插入图片描述
Payload: http://your-ip:8081/files…/ ,成功穿越到根目录:
在这里插入图片描述

1.3 add_header被覆盖

Nginx配置文件子块(server、location、if)中的add_header,将会覆盖父块中的add_header添加的HTTP头,造成一些安全隐患。

如下列代码,整站(父块中)添加了CSP头:

在这里插入图片描述
访问之后http://192.168.111.146:8082/test1,进行抓包,发现CSP头目前还有。
在这里插入图片描述

访问之后http://192.168.111.146:8082/test2,进行抓包,发现CSP头消失
在这里插入图片描述
由此可见,/test2的location中又添加了X-Content-Type-Options头,导致父块中的add_header全部失效:

四、Nginx 解析漏洞(nginx_parsing_vulnerability)

1. 版本信息:

Nginx 1.x 最新版
PHP 7.x最新版

2. 漏洞详情

该漏洞与Nginx、php版本无关,属于用户配置不当造成的解析漏洞。

3. 漏洞复现

开启vulhub靶机,启动环境

root@Fly:~/vulhub/nginx/nginx_parsing_vulnerability# docker-compose up -d

访问http://192.168.111.146/uploadfiles/nginx.png可正常显示
在这里插入图片描述
增加/.php后缀,被解析成PHP文件:http://192.168.111.146/uploadfiles/nginx.png/.php
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

建发弘爱 X 袋鼠云:加速提升精细化、数字化医疗健康服务能力

厦门建发弘爱医疗集团有限公司&#xff08;简称“建发弘爱”&#xff09;创立于2022年&#xff0c;是厦门建发医疗健康投资有限公司的全资子公司&#xff0c;专业从事医疗健康领域的医疗服务。 建发弘爱通过医疗、健康及产业服务三大板块&#xff0c;为百姓提供医疗和健康全生…

【MySQL基本查询(下)】

文章目录 一、update案例 二、Delete案例注意&#xff1a;delete 全表数据的行为慎用&#xff01;truncate 三、插入查询结果案例 四、了解一些函数1.count函数2.sum函数3. avg函数4.max函数5. min函数 五、group by子句的使用案例having和where 一、update 该关键字的功能就是…

k8s遇到的常见问题及解决

1. error: open /var/lib/kubelet/config.yaml: no such file or directory 解决&#xff1a;关键文件缺失&#xff0c;多发生于没有做 kubeadm init就运行了systemctl start kubelet。 要先成功运行kubeadm init 2. 执行初始化kubeadm init ------的时候报错 The HTTP call…

(Mac)RocketMQ的本地安装测试(详细图示)

目录 部署服务 namesrv / broker下载解压缩运行 namesrvnohup ./bin/mqnamesrv & 启动命令详解运行 broker 测试收发消息运行自带的生产者测试类运行自带的消费者测试类 部署 Dashboard 可视化下载打包运行访问 部署服务 namesrv / broker 下载解压缩 官网下载 https://r…

Excel——项目管理,设置时间到期自动提醒及颜色高亮

效果图 第一步、自动获取合同到期日期 1、首先合同【签约日期】和【到期日期】下面的数据必须是日期格式&#xff0c;不能是其它的格式否则无法计算&#xff0c;如果是其它格式需要转换成标准的日期格式&#xff0c;如下图所示。 2、在“到期日期”下面的第一个单元格中输入公…

7 系列 FPGA 产品介绍及选型

目录 Spartan-7 FPGAsArtix-7 FPGAsKintex-7 FPGAsVirtex-7 FPGAsFPGA芯片命名规则DSP资源BRAM资源Transceivers 资源Transceivers 总带宽I/O 个数及带宽参考文档 Spartan-7 FPGAs Artix-7 FPGAs Kintex-7 FPGAs Virtex-7 FPGAs FPGA芯片命名规则 DSP资源 BRAM资源 Transceiver…

快速上手prometheaus grafana 监控

介绍 prometheaus 一个定时输出指标数据的巡检组件&#xff1f; grafana 一个读取指标&#xff0c;可视化的提供了好看界面的组件&#xff1f; 教程 如何和springboot项目集成 【IT老齐153】超级实用&#xff01;十分钟掌握Prometheus与Grafana监控SpringBoot应用_哔哩哔哩_…

100000订单直接拒掉,君子爱财,取之有道

近一个月询盘可谓寥寥无几&#xff0c;成交率为0&#xff0c;今天好不容易接了一个客户询盘&#xff0c;订单总价高达100000&#xff0c;听完细节直接拒掉&#xff0c;至于原因懂的都懂&#xff0c;不懂得等我慢慢道来。 前两天有2个询盘&#xff0c;其中一个是二次开发&#x…

【Python爬虫实战入门】:教你一个程序实现PPT模版自由

文章目录 &#x1f4a5;一、PPT模版爬取&#x1f525;1.1 第一个爬虫&#x1f6b2;1. 获取下载页面链接 ❤️1.2 第二个爬虫&#x1f6b2;1.3 第三个爬虫&#x1f388;2. 文件保存 ❤️1.4 翻页处理 &#x1f525;二、完整代码 &#x1f525;&#x1f525;&#x1f525; Pytho…

大腾智能网站正式上线

4月30日&#xff0c;我们翘首以盼的时刻终于来临&#xff0c;大腾智能官网&#xff08;www.da-teng.com&#xff09;正式上线&#xff0c;我们对此感到无比兴奋和自豪&#xff01;此刻&#xff0c;我们诚挚地邀请每一位朋友&#xff0c;共同踏上这个全新的数字之旅&#xff0c;…

从需求到实现的关键

版本封面 内容&#xff1a;产品logo&#xff0c;项目名称&#xff0c;所属公司&#xff0c;产品名称&#xff0c;文档类型&#xff0c;版本号&#xff0c;时间&#xff0c;相关人员&#xff08;最好说明下负责人&#xff09;。 作用&#xff1a; 突出重要信息&#xff0c;将…

【软考高项】三十八、风险管理7个过程

一、规划风险管理 1、定义、作用 定义&#xff1a;定义如何实施项目风险管理活动的过程作用&#xff1a;确保风险管理的水平、方法和可见度与项目风险程度相匹配&#xff0c;与对组织和其他干系人的重要程度相匹配 2、输入 项目管理计划 项目章程 项目文件 干系人登记册…

debian10 (armbian) 配置CUPS 服务

更新apt apt-update安装相关软件 apt-get install ghostscript apt-get install dc apt-get install foomatic-db-engine apt-get install cups3.修改配置文件 nano /etc/cups/cupsd.conf Listen localhost:631改为 Listen 0.0.0.0:631 以下四段配置加入Allow All # Only li…

中国地面气候资料日值数据获取方式

数据简介 环境气象数据服务平台提供了全国大约2100个点位&#xff0c;2000年至2023年的逐日数据。包括气温、气压、湿度、风、降水等要素。 数据基于ECMWF reanalysis-era5-land、reanalysis-era5-single-levels 以及中国2100站点地面气候资料日值观测数据&#xff0c;使用机器…

GAMMA Lab——知识图谱和LLM大模型

图机器学习的发展与分类 图基础模型 LLM基础模型 GNN LLM 前沿工作

Box86源码解读记录

1. 背景说明 Github地址&#xff1a;https://github.com/ptitSeb/box86 官方推荐的视频教程&#xff1a;Box86/Box64视频教程网盘 2. 程序执行主体图 Box86版本: Box86 with Dynarec v0.3.4 主函数会执行一大堆的初始化工作&#xff0c;包括但不限于&#xff1a;BOX上下文 …

Golang面向对象编程(一)

文章目录 结构体基本介绍结构体定义方式创建结构体变量结构体内存对齐结构体类型转换字段的Tag标签 方法基本介绍方法的定义和调用方法调用的传参机制String方法 结构体 基本介绍 基本介绍 Go支持面向对象编程特性&#xff0c;包括封装、继承和多态&#xff0c;但Go中没有类&a…

技术创作者在千帆AppBuilder中获得的极致体验

目录 前言 千帆AppBuilder简介 传统的技术文章写作方式 借助千帆AppBuilder提高写作质量和效率 千帆AppBuilder详细搭建步骤 1、注册百度智能云账号 2、登录百度智能云控制台 3、创建千帆AppBuilder应用 4、配置千帆AppBuilder应用 5、调试和发布千帆AppBuilder应用 …

文章分享:《肿瘤DNA甲基化标志物检测及临床应用专家共识(2024版)》

本文摘自于《肿瘤DNA甲基化标志物检测及临床应用专家共识&#xff08;2024版&#xff09;》 目录 1. DNA甲基化标志物概述 2 DNA甲基化标志物的临床检测 2.1 临床样本前处理注意事项 2.2 DNA甲基化标志物检测技术方法 2.2.1 DNA提取与纯化 2.2.2 DNA转化 2.2.3 DNA 甲基…

综述列表(~2024.05.10)

&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 每周末更新&#xff0c;完整版进群获取。 Q 群在群文件&#xff0c;VX 群每周末更新。