【最新漏洞预警】CVE-2021-41773-Apache HTTP Server 路径穿越漏洞快速分析与复现
日期:2021-10-06 02:12

漏洞概述




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



由于传播、利用此文档提供的信息而造成任何直接或间接的后果及损害,均由使用本人负责,且听安全团队及文章作者不为此承担任何责任。



点关注,不迷路!

本文转载自网络,版权归原作者所有,如侵犯您的权益请联系wyl860211@qq.com,我们将第一时间删除。