感受路径穿越漏洞的影响,这也是最近Apache困境的罪魁祸首

发表于2021年10月18日
作者:Charlie Eriksen
案例研究

感受路径穿越漏洞的影响,这也是最近Apache困境的罪魁祸首

发表于2021年10月18日
作者:Charlie Eriksen
查看资源
查看资源

10月初,Apache发布了2.4.49版本,修复了一个路径遍历和远程代码执行漏洞,随后又发布了2.4.50版本,以解决2.4.49版本修复不完整的问题。也许你已经在社交媒体上看到了关于更新到最新版本以避免这些风险的重要性的讨论,因为根据一些估计,Apache为25%的互联网提供动力。但这是怎么回事呢?这里存在多大的风险?

为什么不自己尝试一下呢? 

我们已经建立了一个任务来展示真实环境中的风险,并将其公开供大家尝试。在这个任务中,我们将引导你了解路径穿越漏洞如何影响你的基础设施和应用程序。点击下面直接进入,或继续阅读以了解更多关于该漏洞的细节。

试用阿帕奇CVE-2021-41773任务的标语
转到公共使命


关于路径穿越漏洞 

该漏洞是在2.4.49版本中引入的(由于URL规范化功能的改变),其中引入了一个新的路径规范化功能。不幸的是,它未能正确规范URL编码的路径。这使得如果不存在以下配置,就有可能进行路径遍历攻击

拒绝或允许对目录文件系统的访问


而如果mod_cgi 被启用,它也可以被利用成为一个远程代码执行的漏洞。但是,让我们首先挖掘一下URL编码,以更好地了解出错的原因。

URL 编码

在最基本的情况下,该漏洞的发生是由于缺乏对具有URL编码的URL的考虑。新引入的路径规范化功能没有完全处理点状物是URL编码的情况。 

请记住,要进行路径遍历攻击,你需要用.../这个序列进行遍历。然而,规范化函数足够聪明,可以将其剥离出来。那么你是怎么做的呢?你可以将.(Dot)编码为%2e,并使用.%2e/这样的序列。这在很多情况下对Apache 2.4.40都有效。但你也可以更进一步,对它进行双重编码。.%2e/ 的URL编码版本是.%252e/。这进一步能够绕过Apache试图进行的规范化。

但有一个问题

如果有人想直接在他们的浏览器中尝试利用这个漏洞,他们不会成功。这是由于浏览器也试图将发送到服务器的URL规范化。这意味着,即使是我们的双重编码序列也会被删除。这也意味着我们不能简单地用浏览器来证明这一点。

你可以通过使用-path-as-is 标志来证明这一点,这可以防止它在发送URL之前对其进行规范化。

带链接的Curl路径代码

预防和缓解

为了完全防止这个问题,重要的是保持与Apache的最新补丁同步。具体来说,你至少要升级到2.4.51。但定期升级以保持最新也是一个好的做法。

如果你运行的是2.4.49,为了减轻这个问题,请确保你在你的Apache配置中包含以下内容。

带有allowoverride none和require all denied规则的目录代码标签

为了防止远程代码执行,如果你不使用mod_cgi ,请禁用它。

亲身体验其影响

有兴趣探究到底发生了什么,并亲自尝试一下吗? 


查看资源
查看资源

作者

Charlie Eriksen

想要更多吗?

在博客上深入了解我们最新的安全编码见解。

我们广泛的资源库旨在增强人类对安全编码技术提升的方法。

查看博客
想要更多吗?

获取关于开发者驱动的安全的最新研究

我们广泛的资源库充满了有用的资源,从白皮书到网络研讨会,让你开始使用开发者驱动的安全编码。现在就去探索它。

资源中心

感受路径穿越漏洞的影响,这也是最近Apache困境的罪魁祸首

发表于2021年10月18日
作者:Charlie Eriksen

10月初,Apache发布了2.4.49版本,修复了一个路径遍历和远程代码执行漏洞,随后又发布了2.4.50版本,以解决2.4.49版本修复不完整的问题。也许你已经在社交媒体上看到了关于更新到最新版本以避免这些风险的重要性的讨论,因为根据一些估计,Apache为25%的互联网提供动力。但这是怎么回事呢?这里存在多大的风险?

为什么不自己尝试一下呢? 

我们已经建立了一个任务来展示真实环境中的风险,并将其公开供大家尝试。在这个任务中,我们将引导你了解路径穿越漏洞如何影响你的基础设施和应用程序。点击下面直接进入,或继续阅读以了解更多关于该漏洞的细节。

试用阿帕奇CVE-2021-41773任务的标语
转到公共使命


关于路径穿越漏洞 

该漏洞是在2.4.49版本中引入的(由于URL规范化功能的改变),其中引入了一个新的路径规范化功能。不幸的是,它未能正确规范URL编码的路径。这使得如果不存在以下配置,就有可能进行路径遍历攻击

拒绝或允许对目录文件系统的访问


而如果mod_cgi 被启用,它也可以被利用成为一个远程代码执行的漏洞。但是,让我们首先挖掘一下URL编码,以更好地了解出错的原因。

URL 编码

在最基本的情况下,该漏洞的发生是由于缺乏对具有URL编码的URL的考虑。新引入的路径规范化功能没有完全处理点状物是URL编码的情况。 

请记住,要进行路径遍历攻击,你需要用.../这个序列进行遍历。然而,规范化函数足够聪明,可以将其剥离出来。那么你是怎么做的呢?你可以将.(Dot)编码为%2e,并使用.%2e/这样的序列。这在很多情况下对Apache 2.4.40都有效。但你也可以更进一步,对它进行双重编码。.%2e/ 的URL编码版本是.%252e/。这进一步能够绕过Apache试图进行的规范化。

但有一个问题

如果有人想直接在他们的浏览器中尝试利用这个漏洞,他们不会成功。这是由于浏览器也试图将发送到服务器的URL规范化。这意味着,即使是我们的双重编码序列也会被删除。这也意味着我们不能简单地用浏览器来证明这一点。

你可以通过使用-path-as-is 标志来证明这一点,这可以防止它在发送URL之前对其进行规范化。

带链接的Curl路径代码

预防和缓解

为了完全防止这个问题,重要的是保持与Apache的最新补丁同步。具体来说,你至少要升级到2.4.51。但定期升级以保持最新也是一个好的做法。

如果你运行的是2.4.49,为了减轻这个问题,请确保你在你的Apache配置中包含以下内容。

带有allowoverride none和require all denied规则的目录代码标签

为了防止远程代码执行,如果你不使用mod_cgi ,请禁用它。

亲身体验其影响

有兴趣探究到底发生了什么,并亲自尝试一下吗? 


我们希望得到您的许可,向您发送有关我们产品和/或相关安全编码主题的信息。我们将始终以最谨慎的态度对待您的个人资料,绝不会将其出售给其他公司用于营销目的。

提交
要提交表格,请启用 "分析 "cookies。完成后,请随时再次禁用它们。