CVE-2021-41773漏洞复现完整过程

CVE-2021-41773漏洞复现完整过程,第1张

CVE-2021-41773漏洞复现完整过程 1.安装debian系统

首先我选择的系统是debian10版本,也可以在别的系统完成复现,我想一个纯净版,所有重新安装了一个系统,安装步骤简单展示一下。

1.创建虚拟机,点击下一步。

导入镜像

自己选安装的位置以及虚拟机的名称。

安装过程需要设置管理员密码和新建一个用户,自己设置一下就可以了

这里选择了第二个。

 因为之前我们选择了lvm,那么这里选择是就可以了

因为我们需要一个简单系统,所有只选择了下面三个安装软件

 

中间少的部分就是一直点击继续就可以了,最后安装好了。

 2.下载靶场,首先找到虚拟终端,打开终端。

2.下载靶场、docker以及docker-compose

 首先需要安装git命令,这样我们利用git命令下载靶场

 下载好git,输入命令下载靶场,靶场地址https://github.com/vulhub/vulhub 如果和下面一样出现错误,就将命令https换成git就可以啦。

 下载完成以后,可以自己查看一下。

 接下来安装docker和docker-compose

 

 下载完成以后可以进入CVE-2021-41773查看readme.zh-cn.md 查看中午,里面会有该漏洞的提示和一些playload.

3.漏洞复现

 现在我们输入命令开始启动环境。

 环境启动以后,我们按照提示访问自己的IP地址8080端口,这个时候我们需要查看自己的ip地址,会发现ifconfig不行,需要输入apt install net-tools 安装工具,这样就可以使用ifconfig

 得到ip地址可以在本机浏览器访问http://ip:8080,看到it's work,就代表可以了

 现在我们就可以构造playload ,记得回到根目录执行代码

 可以看到成功读取了passwd文件内容。也可以读取adduser.conf,其他文件需要自己试试了。

 在服务端开启了cgi或cgid这两个mod的情况下,这个路径穿越漏洞将可以执行任意命令:

```
curl -v --data "echo;id" 'http://your-ip:8080/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh'
```

4.漏洞的条件

穿越的目录允许被访问,比如配置了`Require all granted`。(默认情况下是不允许的)

5.漏洞产生的原理

Apache HTTP Server 2.4.49版本使用的ap_normalize_path函数在对路径参数进行规范化时会先进行url解码,然后判断是否存在../的路径穿越符

当检测到路径中存在%字符时,如果紧跟的2个字符是十六进制字符,就会进行url解码,将其转换成标准字符,如%2e通过url解码之后是一个点(.)对于路径的url解码之后再来判断是否存在../。

如果路径中存在%2e./形式,就会检测到,因为遍历第一个字符是%紧跟2个字符是十六进制那么会被转换成点,这样会和后面的./就会连成../,这样就会被拦截。但是出现.%2e/这种形式时,在遍历到第一个.字符时,此时检测到后面的两个字符是%2而不是./,就不会把它当作路径穿越符处理,也就是说在检测之后%2e进行了转换变成了../。因此可以使用.%2e/或者%2e%2e绕过对路径穿越符的检测。

参考文章:【安全漏洞】CVE-2021-41773和CVE-2021-42013漏洞分析 - 简书(里面有详细过程,大家可以参考)

6.修复建议

增加ap_normalize_path函数的判断条件,对于.%2e或者%2e%2e进行判断,避免绕过


 

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/3989388.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-10-21
下一篇 2022-10-21

发表评论

登录后才能评论

评论列表(0条)

保存