0


CVE-2021-42013 Apache HTTP Server 路径穿越漏洞——漏洞复现

**Apache 披露了一个在 Apache HTTP Server 2.4.49 上引入的漏洞,称为 CVE-2021-41773。同时发布了2.4.50更新,修复了这个漏洞。该漏洞允许攻击者绕过路径遍历保护,使用编码并读取网络服务器文件系统上的任意文件。运行此版本 Apache 的 Linux 和 Windows 服务器都受到影响。此漏洞是在 2.4.49 中引入的,该补丁旨在提高 URL 验证的性能。可以通过对“.”进行编码来绕过新的验证方法。如果 Apache 网络服务器配置未设置为“要求全部拒绝”,则漏洞利用相对简单。通过对这些字符进行编码并使用有效负载修改 URL,可以实现经典的路径遍历。**

1.搭建靶场

docker pull vulfocus/apache-cve_2021_42013:lastest

docker run -d -p 8090:80 vulfocus/apache-cve_2021_42013:lastest

ps.换个空闲的端口。

2.打开靶场,抓包

127.0.0.1:8090

抓包

3. 绕过检测进行路径穿越

因为该漏洞是在CVE-2021-41773修复的基础上,还会造成路径穿越。

让我们了解一下CVE-2021-41773是什么吧。

CVE-2021-41773:

Apache HTTP Server 2.4.49版本使用的

ap_normalize_path

函数在对路径参数进行规范化时会先进行url解码,然后判断是否存在

../

的路径穿越符。

也就是说这个函数会检测路径中是否存在%,存在再检测其紧跟的两个字符16进制字符,是的话。会对其进行url解码,如:%2e ->. ,转换完之后再检测是不是存在../

但是奇怪的是%2e./能检测出来,但是.%2e/不行。原来它是检测.后是不是跟着./

所以用.%2e/或者%2e%2e就能绕过这个函数触发路径穿越。

CVE-2021-42013:

这时修复了对.%2e的检测。

在处理外部HTTP请求时,会调用

ap_process_request_internal

函数对url路径进行处理,在该函数中,首先会调用

ap_normalize_path

函数进行一次url解码,之后会调用

ap_unescape_url

函数进行二次解码。

这时候我们只需要将../url编码两次就行了。

ap_normalize_path

函数调用栈如下,在处理前path参数为

/icons/.%%32e/.%%32e/.%%32e/.%%32e/etc/passwd

经过

ap_normalize_path

函数处理后path参数变成

/icons/.%2e/.%2e/.%2e/.%2e/etc/passwd

经过

unescape_url

函数处理后,可以看到此时的url字符串内容变成

/icons/../../../../etc/passwd
补充一下:

对于没有进⾏安全配置的Apache服务器,默认情况可以⽤xxx.com/icons/的⽅式打开Apache⽬录下的icons⽂件夹,并且会罗列出⽂件列表。

2.4.51版本针对该漏洞进行了多处修改,最核心的一处修改是在

ap_normalize_path

函数中加强了对url编码的校验,如果检测到存在非标准url编码(%+两个十六进制字符)的情况,就返回编码错误,从根本上杜绝了多重编码可能导致的绕过。

我们来看看吧。

GET /icons/../../../../../../etc/passwd HTTP/1.1

编码两次之后

/icons/.%%32e/.%%32e/.%%32e/.%%32e/.%%32e/.%%32e/.%%32e/etc/passwd

标签: apache docker 安全

本文转载自: https://blog.csdn.net/qq_60905276/article/details/125163219
版权归原作者 留将一面与花 所有, 如有侵权,请联系我们删除。

“CVE-2021-42013 Apache HTTP Server 路径穿越漏洞——漏洞复现”的评论:

还没有评论