编码员征服安全。分享与学习系列 - 远程文件包含

2019年7月18日发布
作者:Jaap Karan Singh
案例研究

编码员征服安全。分享与学习系列 - 远程文件包含

2019年7月18日发布
作者:Jaap Karan Singh
查看资源
查看资源

阅读本系列博客的朋友可能会注意到远程文件包含漏洞与之前讨论的本地文件包含和路径遍历漏洞之间有很多相似之处。它们的根本原因是相似的,推荐的修复方法也是如此。

在许多方面,远程文件包含漏洞比其本地文件对应的漏洞要危险得多,也更容易被利用。因此,应该尽快发现并补救它。或者更好的是,网络应用的设计应该首先防止它的发生。

在这一集里,我们将学习。

  • 黑客如何利用远程文件包含漏洞
  • 为什么允许远程文件包含是危险的
  • 可以解决这个问题的技术。

攻击者是如何利用远程文件包含的?

远程文件包含漏洞利用了大多数编程框架中存在的 "动态文件包含 "命令或机制。这种能力的目的是允许开发人员使用位于二级服务器上的文件来执行应用服务器上的活动。显然,如果落入坏人之手,这可能是危险的。

攻击者如何利用这种能力是通过找到任何允许不受控制的用户输入的网站或应用程序,这可能来自HTTP头或交互式表格中的输入区等东西。他们将此作为一个启动点来生成文件包含命令。

例如,如果一个网站使用GET功能加载页面,如page = request.getParameter("page'); include page; 那么攻击者可以使用page命令发送一个查询,但要有一个他们控制的网站的URL和他们想执行的文件的路径。然后查询被传递给服务器,远程文件在主机上被执行。这个活动是允许的,因为它现在是受信任的应用程序的一部分。

为什么远程文件包含漏洞是危险的?

远程文件包含所带来的危险程度极高。与本地文件包含漏洞不同的是,攻击者运行的文件必须存在于主机上,而且攻击者还要通过试验和错误来发现,而远程文件包含则没有这样的限制。显然,攻击者知道他们想要利用的文件的位置,因为这些文件可能存在于他们自己的机器上,或者他们控制的网站上。这些文件也可以由他们自己选择,不需要在利用前存在于目标机器上。该文件甚至可能包括专门为利用远程主机而编写的脚本。

简而言之,一旦攻击者能够找到并利用远程文件包含漏洞,就没有什么能阻止他们获得对一个应用程序甚至整个网站的完全控制。当然,存储在那里的任何数据都不会对他们的入侵感到安全。

移除远程文件包含漏洞

永远不要让用户输入直接传递给文件包含命令执行。相反,使用命令的间接参考图,只从那里执行命令。间接参考图将不受信任的用户输入映射到服务器上一组硬编码的可信值。要确保将用户可以输入数据的任何区域列入白名单,不要忘记将HTTP头、表单参数甚至cookies都列入该名单。这样做将关闭任何想要创建文件包含命令的攻击者可以使用的窗口。

作为奖励,对用户生成的内容进行适当的消毒和验证,并采用参考地图来执行命令,不仅可以压制远程文件包含漏洞,还可以压制其他一些漏洞,包括这个漏洞的危险表弟,本地文件包含和路径遍历漏洞。

关于远程文件包含的更多信息

要进一步阅读,你可以看一下OWASP的远程文件包含漏洞参考指南。你也可以用Secure Code Warrior 平台的免费演示来测试你新发现的防御知识,该平台培训网络安全团队成为终极网络战士。要了解更多关于击败这个漏洞以及其他威胁的流氓画廊,请访问Secure Code Warrior 博客。

查看资源
查看资源

作者

Jaap Karan Singh

想要更多吗?

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

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

查看博客
想要更多吗?

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

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

资源中心

编码员征服安全。分享与学习系列 - 远程文件包含

2019年7月18日发布
作者:Jaap Karan Singh

阅读本系列博客的朋友可能会注意到远程文件包含漏洞与之前讨论的本地文件包含和路径遍历漏洞之间有很多相似之处。它们的根本原因是相似的,推荐的修复方法也是如此。

在许多方面,远程文件包含漏洞比其本地文件对应的漏洞要危险得多,也更容易被利用。因此,应该尽快发现并补救它。或者更好的是,网络应用的设计应该首先防止它的发生。

在这一集里,我们将学习。

  • 黑客如何利用远程文件包含漏洞
  • 为什么允许远程文件包含是危险的
  • 可以解决这个问题的技术。

攻击者是如何利用远程文件包含的?

远程文件包含漏洞利用了大多数编程框架中存在的 "动态文件包含 "命令或机制。这种能力的目的是允许开发人员使用位于二级服务器上的文件来执行应用服务器上的活动。显然,如果落入坏人之手,这可能是危险的。

攻击者如何利用这种能力是通过找到任何允许不受控制的用户输入的网站或应用程序,这可能来自HTTP头或交互式表格中的输入区等东西。他们将此作为一个启动点来生成文件包含命令。

例如,如果一个网站使用GET功能加载页面,如page = request.getParameter("page'); include page; 那么攻击者可以使用page命令发送一个查询,但要有一个他们控制的网站的URL和他们想执行的文件的路径。然后查询被传递给服务器,远程文件在主机上被执行。这个活动是允许的,因为它现在是受信任的应用程序的一部分。

为什么远程文件包含漏洞是危险的?

远程文件包含所带来的危险程度极高。与本地文件包含漏洞不同的是,攻击者运行的文件必须存在于主机上,而且攻击者还要通过试验和错误来发现,而远程文件包含则没有这样的限制。显然,攻击者知道他们想要利用的文件的位置,因为这些文件可能存在于他们自己的机器上,或者他们控制的网站上。这些文件也可以由他们自己选择,不需要在利用前存在于目标机器上。该文件甚至可能包括专门为利用远程主机而编写的脚本。

简而言之,一旦攻击者能够找到并利用远程文件包含漏洞,就没有什么能阻止他们获得对一个应用程序甚至整个网站的完全控制。当然,存储在那里的任何数据都不会对他们的入侵感到安全。

移除远程文件包含漏洞

永远不要让用户输入直接传递给文件包含命令执行。相反,使用命令的间接参考图,只从那里执行命令。间接参考图将不受信任的用户输入映射到服务器上一组硬编码的可信值。要确保将用户可以输入数据的任何区域列入白名单,不要忘记将HTTP头、表单参数甚至cookies都列入该名单。这样做将关闭任何想要创建文件包含命令的攻击者可以使用的窗口。

作为奖励,对用户生成的内容进行适当的消毒和验证,并采用参考地图来执行命令,不仅可以压制远程文件包含漏洞,还可以压制其他一些漏洞,包括这个漏洞的危险表弟,本地文件包含和路径遍历漏洞。

关于远程文件包含的更多信息

要进一步阅读,你可以看一下OWASP的远程文件包含漏洞参考指南。你也可以用Secure Code Warrior 平台的免费演示来测试你新发现的防御知识,该平台培训网络安全团队成为终极网络战士。要了解更多关于击败这个漏洞以及其他威胁的流氓画廊,请访问Secure Code Warrior 博客。

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

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