博客

程序员征服安全:分享与学习系列 - 远程文件包含

July 18, 2019
Jaap Karan Singh

阅读本系列博客的读者可能会发现,远程文件包含漏洞与之前讨论的本地文件包含及路径遍历漏洞之间有许多相似之处。它们的根本原因和推荐的修复方法都很相似。

在许多方面,远程文件包含漏洞比本地文件包含漏洞更危险,也更容易被利用。因此,应尽快发现并修复此类漏洞。或者更好的是,在设计 Web 应用程序时就应从源头上防止此类漏洞的发生。

在本期节目中,我们将学习:

  • 黑客如何利用远程文件包含漏洞
  • 为什么允许远程文件包含是危险的
  • 修复此问题的技术手段。

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

远程文件包含漏洞利用了大多数编程框架中存在的“动态文件包含”命令或机制。此功能旨在允许开发人员使用位于辅助服务器上的文件来在应用程序服务器上执行活动。显然,如果被不当使用,这会非常危险。

攻击者利用此功能的方法是寻找任何允许不受控用户输入的网站或应用程序,这些输入可能来自 HTTP 标头或交互式表单中的输入区域。他们以此为切入点来生成文件包含命令。

例如,如果网站使用 GET 函数来加载页面,例如 page = request.getParameter("page'); include page;,那么攻击者就可以发送一个使用 page 命令的查询,但其中包含他们控制的网站 URL 以及他们想要执行的文件路径。查询随后被传递给服务器,远程文件便在主机上执行。由于该活动现在被视为受信任应用程序的一部分,因此被允许执行。

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

远程文件包含漏洞带来的危险程度极高。与本地文件包含漏洞不同(攻击者运行的文件必须存在于主机上,且需要通过反复试验找到),远程文件包含没有此类限制。显然,攻击者知道他们想要利用的文件位置,因为这些文件很可能存在于他们自己的机器或他们控制的网站上。这些文件也可以由他们亲自挑选,无需在利用漏洞之前就存在于目标机器上。该文件甚至可能包含专门为攻击远程主机而编写的脚本。

简而言之,一旦攻击者能够发现并利用远程文件包含漏洞,就没有任何东西能阻止他们获得对应用程序甚至整个网站的完全控制权。当然,存储在那里的任何数据都无法免受其侵害。

消除远程文件包含漏洞

切勿允许用户输入直接传递给文件包含命令进行执行。相反,应使用命令的间接引用映射,并仅从该映射中执行命令。间接引用映射将不可信的用户输入映射到服务器上的一组硬编码受信任值。请务必对用户可以输入数据的任何区域进行白名单限制,并且不要忘记将 HTTP 标头、表单参数甚至 Cookie 包含在该列表中。这样做将关闭攻击者试图创建文件包含命令的所有窗口。

此外,对用户生成的内容进行适当的清理和验证,并使用引用映射来执行命令,不仅可以消除远程文件包含漏洞,还能解决包括该漏洞的“危险表亲”——本地文件包含和路径遍历攻击在内的许多其他问题。

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

如需进一步阅读,您可以查看 OWASP 参考指南,了解远程文件包含攻击。您还可以通过 免费演示 来测试您新学到的防御知识,该演示来自 Secure Code Warrior 平台,旨在培训网络安全团队成为顶尖的网络战士。要了解更多关于击败此漏洞及其他威胁的信息,请访问 Secure Code Warrior 博客。

标语

在 AI 驱动的开发成果发布前实现有效治理

评估 AI 辅助风险,在提交代码时强制执行安全编码策略,并加速整个软件开发生命周期的安全交付。

预约演示
资源库

探索更多博客

获取有关安全编码、人工智能治理和软件风险管理的专家内容。

浏览全部
案例研究
筛选标签
这是 div 块中的一段文本。

Supercharged Security Awareness: How Tournaments are Inspiring Developers at Erste Group

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

了解更多
案例研究
筛选标签
这是 div 块中的一段文本。

Security as culture: How Blue Prism cultivates world-class secure developers

Learn how Blue Prism, the global leader in intelligent automation for the enterprise, used Secure Code Warrior's agile learning platform to create a security-first culture with their developers, achieve their business goals, and ship secure code at speed

了解更多
案例研究
筛选标签
这是 div 块中的一段文本。

统一的安全文化:Sage 如何打造其安全倡导者项目

了解 Sage 如何通过灵活且以关系为导向的方法提升安全性,成功培养了 200 多名安全倡导者,并实现了显著的风险降低。

了解更多
博客
筛选标签
这是 div 块中的一段文本。

2026年网络安全意识月:理解人工智能安全对企业防御至关重要

目前,大多数顶级人工智能公司已公开呼吁全球放缓人工智能的发展速度,以便安全防护措施能够跟上步伐。然而事实是,严重的安全问题已经显现。随着人工智能实施带来的经济成本和风险不断累积,无数安全领导者和高管团队正处于紧迫的境地。

了解更多
博客
筛选标签
这是 div 块中的一段文本。

赋能要素 8:打造项目品牌

成功的安全编码项目不仅需要优质的内容。赋能要素 8 展示了如何通过品牌化将参与过程转变为一种令人向往、以地位为驱动的体验。

了解更多
博客
筛选标签
这是 div 块中的一段文本。

每一位员工现在都处于 AI 网络安全的最前线

企业技术格局正以一种鲜有人预料到的速度发生剧变,直到为时已晚。我们已正式跨越了从人工编写代码和基础辅助编程,进入“智能体开发生命周期”(ADLC)的时代。虽然自主 AI 智能体有望在多个职能领域实现前所未有的效率,但它们也带来了全新的安全和监管风险。

了解更多

在产品发布前确保 AI 驱动的开发安全

洞察开发风险,执行安全策略,并在整个软件开发生命周期中预防漏洞。

预约演示
未找到相关项目。