Web 服务器托管构成您的 Web 应用程序的文件(网页、图片、视频、表单等),并在有人访问您的网站时提供这些文件。有些服务器更先进,还可以控制网络访问者的访问权限。他们可能会限制普通访客访问其他用户的帐户或管理仪表板。尽管 Web 服务器在他们所做的事情上是高效的——而且他们这样做相当安全——攻击者可以利用由人为错误或服务器如何为其托管文件提供服务的逻辑缺陷引起的错误。
什么是 LFI 攻击?
当攻击者利用 Web 服务器存储、服务、验证或控制对其文件访问的方式中的漏洞时,就会发生本地文件入侵 (LFI) 攻击。此漏洞在基于 PHP 的网站中很常见。 与攻击者依靠恶意软件破坏应用程序的许多形式的网络攻击不同,LFI 中的攻击者主要依靠巧妙的技巧和简短的代码行。这很少需要复杂的工具或复杂的脚本;攻击通常发生在网络浏览器上。攻击者最常使用的技巧是使用代码、文件路径或文件名修改 URL 字符串。
LFI 攻击是如何发生的?
LFI 攻击通常分四个阶段发生。 首先,攻击者识别一个运行易受攻击的 Web 应用程序的 PHP 网站,通常通过在浏览器 URL 中运行一段基本代码来查看该 Web 应用程序(即站点)是否处理命令。可以把它想象成按下游戏控制器上的组合键来解锁复活节彩蛋——例如,按下下键进入超级马里奥的隧道。但是攻击者在 LFI 攻击中运行的命令比在超级马里奥中检查每个隧道更一致。 配置不当或无法验证输入的 Web 应用程序或服务器将执行恶意代码。从这里,黑客可以获得他们读取易受攻击文件或将恶意文件上传到服务器所需的访问权限和特权。 大多数 LFI 攻击都会导致攻击者访问敏感信息。上传恶意软件的可能性很小,因为无法保证 Web 应用程序会将文件保存在存在 LFI 漏洞的同一台服务器上。如果 Web 应用程序处于多服务器环境中,则通常会出现这种情况。 因此,如果托管图像的服务器上存在 LFI 漏洞,但存储员工凭据或用户密码的服务器上不存在 LFI 漏洞,则攻击者只能访问该易受攻击服务器上的图像文件。无论如何,像 LastPass 攻击这样的网络事件表明,黑客可以通过看似最微不足道的访问级别造成严重破坏。
如何防止 LFI 攻击
根据开放 Web 应用程序安全项目(OWASP) ,LFI 攻击非常普遍。可以理解的是,黑客会喜欢这种攻击,因为正如 W3Techs 报道的那样,将近十分之八的网站将 PHP 作为服务器端编程语言运行——可以这么说,大量的受害者。可以通过采用网络安全最佳实践来防止 LFI 攻击。
白名单公共服务器文件
Web 应用程序通常使用文件路径作为 URL 输入。黑客可以通过更改兼作文件路径的 URL 部分来利用此文件系统。例如,攻击者可以将 https://dummywebsite.com/?module=contact.php 更改为 https://dummywebsite.com/?module=/etc/passwd。具有不良过滤和有缺陷逻辑的易受攻击的服务器将显示存储在路径 /etc/passwd 中的文件的内容。 当然,黑客会使用常见文件名的变体和查询字符的组合来增加成功攻击的几率。目标是诱使 Web 应用程序运行脚本或在 Web 服务器上显示文件。 您可以通过在服务器上创建公共文档白名单并指示 Web 应用程序忽略对所有其他文档或文件路径的查询来阻止此漏洞。因此,如果攻击者试图操纵 URL 来请求或运行请求私有的代码,他们将得到一个错误页面。
经常测试漏洞
您可以使用 Web 扫描工具来查找和修复可能使您遭受 LFI 攻击的漏洞。Web 应用程序扫描器是自动化工具,可以像攻击者一样抓取您的应用程序并提醒您潜在的漏洞。有几种开源 Web 扫描器,如 OpenVAS 和 Wireshark,但大多数漏洞扫描器都是专有软件,需要付费才能使用。 但是,当然,您得到的 Web 扫描仪并不仅仅针对 LFI 攻击。这些工具还寻找更广泛的安全漏洞,如远程文件包含、跨站点脚本、SQL 注入和不良的服务器配置。所以,他们是值得的。
限制站点访问者权限
黑客经常成功地执行 LFI 攻击,因为 Web 应用程序无法划分用户权限,并且这样做允许访问者访问应该只对管理员可见的文件。此措施类似于白名单:配置您的 Web 应用程序和服务器,以便它们提供公共文件并在访问者与 Web 应用程序交互时忽略未经授权的请求。这对于查询包含敏感文件的文件路径尤为重要。 为此,您可能需要防止直接修改文件路径。Web 应用程序应仅提供硬编码路径列表中的文档。此外,将 Web 应用程序配置为使用动态路径串联(URL 应包含字母数字字符)而不是 base64 或 bin2hex 函数来处理请求。 如果您正在考虑将文件名列入黑名单,请不要。黑客通常拥有越来越多的文件名列表,他们可以使用这些文件名来执行 LFI 攻击。此外,将不断增加的攻击源列表列入黑名单实际上是不可能的(而且会浪费大量时间) 。
使用多服务器环境
多服务器环境可让您将重要、敏感的文档与公共文件隔离开来,从而降低发生泄露时的风险。专用服务器不太容易受到 LFI 攻击,因为尽管它们一起工作,但它们的配置不同。 除了这种安全性之外,多台服务器还可靠(停机风险较低)、快速且高效。诚然,如果您的网站很小,使用多服务器环境并不划算。在这种情况下,请考虑将您的 Web 应用程序对数据的访问分为私有数据数据库和公共文件服务器。
您应该担心 LFI 攻击吗?
LFI 攻击的可能性是存在的,特别是如果您的网站运行在 PHP 上,但您可以根据网络安全最佳实践配置网络应用程序和服务器来减少暴露。 此外,您应该考虑进行例行安全检查以发现漏洞。事情总是出问题,尤其是当站点架构变得复杂时。您保护自己所需的工具是自动化的,许多工具不需要精心设置或高级技术知识。