什么是目录遍历?

已发表: 2023-05-09

通过诱使 Web 服务器暴露原本受限的信息,攻击者可以获得一个强大的工具来破坏系统并造成重大破坏。 目录遍历是实现此目的的常用方法。 尝试在为特定网站保留的文件系统区域之外导航可能会导致数据窃取和任意代码执行。

通常,Web 服务器通过将网站文件限制在其根目录(也称为文档根文件夹)内来限制对文件系统的访问。 但是,网络罪犯可以绕过这些安全控制并利用不安全的文件权限。 这样,他们就可以在未经授权的情况下访问存储在受害者服务器上其他地方的关键信息。

经常在插件和主题中发现的文件包含漏洞使 WordPress 网站成为涉及目录遍历的攻击的高优先级目标。 虽然实施安全编码实践是插件和主题开发人员的任务,但实施良好的安全实践是网站所有者的责任。

在本目录遍历指南中,我们将探索黑客突破网站根目录访问受限数据的常用方法。 您将了解路径遍历如何使攻击者能够成功利用本地文件包含 (LFI) 漏洞造成损害,以及如何通过实施稳健的安全实践来保护您的 WordPress 网站免受这些类型的攻击。

首先,让我们仔细看看安全服务器操作的概念。 更具体地说,不同类型的数据在服务器环境中是如何分离的,以及网站数据在这个生态系统中的位置。

目录遍历

数据分区如何帮助保护服务器操作

网站和 Web 应用程序依靠服务器来存储数据。 这些数据随后由 Web 和数据库服务器以及其他特定应用程序处理,然后作为请求的网页通过 Internet 传送到访问者的浏览器。 底层硬件和软件组件协同工作以创建支持此功能的强大基础架构。

但是,这种客户端-服务器架构还需要一种谨慎的服务器安全方法。 服务器操作系统的关键服务和其他组件必须与用户文件和网站数据完全分离。 文件系统上的这种数据分离通常称为数据分区。

数据分区通过将不同类型的数据隔离到单独的分区中,有助于保护服务器操作中最脆弱的方面。 文件系统分区和其他安全机制的实施有助于保护服务器免受未经授权的敏感信息访问和系统级危害。 此外,数据分区通过将经常修改的数据与主要只读文件分开以及隔离系统和用户数据来实现高效的资源管理并提高服务器性能。

Web 服务器访问控制:使用文档根限制网站数据

为了将网站数据与系统数据隔离开来,Web 服务器利用了文档根的概念。 这涉及将网站文件限制在文件系统上的指定目录中,称为网站的根目录。 通过定义文档根目录,Web 服务器可以正确地引导和响应对该网站内容的传入请求。 此根目录是处理该网站的 Web 请求的起点。

这种限制有助于防止未经授权访问存储在指定根目录之外的关键服务器数据,例如操作系统信息和关键配置文件。 这意味着与特定网站相关的任何脚本或其他内容和功能只能访问和修改根目录及其子目录中的数据,从而在发生安全漏洞时保护服务器的其余部分。

除了文档根之外,Web 服务器还使用其他访问控制机制来进一步限制对网站数据的访问。 最值得注意的机制之一是文件权限。 文件权限有助于实施最小特权原则,这意味着系统用户或进程仅被授予执行其预期功能所需的最低访问级别。

尽管这种方法具有强大的安全性,但黑客可以使用多种恶意技术来绕过它。 一种这样的方法是目录遍历。 目录遍历攻击利用网站代码中的弱点和安全权限的实施来诱骗网络服务器泄露浏览器无法访问的受限信息。

什么是目录遍历?

目录遍历,也称为路径遍历,是一种恶意技术,旨在授予对目标网站或 Web 应用程序的文档根目录之外的受限文件和目录的访问权限。 路径遍历允许攻击者通过浏览器通过服务器的文件系统一直导航到根目录和其他受限文件夹——这种行为在正常情况下是不可能发生的。

目录遍历是通过使用特殊字符(称为路径遍历序列)操纵引用文件的变量来执行的。 诸如点-点-斜杠“../”之类的序列被 Web 服务器解释,迫使它在文件系统层次结构中向上移动一个目录,远离网站的文档根目录。

如果网站存储在 /home/user/public_html 中,提供目录遍历序列 '../../../etc' 将允许攻击者导航到 /etc 目录,该目录存储 Linux 上的关键系统配置服务器。

如果在 Web 服务器配置中禁用了目录列表,则网络罪犯将无法查看所请求目录的内容。 这可以部分提高系统的安全性并限制目录遍历攻击造成的潜在损害,因为攻击者必须指定他们想要在浏览器中显示的确切文件。 但在大多数情况下,黑客确切地知道他们在寻找什么信息,禁用目录列表不会阻止他们访问它。

/etc/passwd 文件是目录遍历攻击的常见目标之一。 在 Linux 服务器上,/etc/passwd 文件包含在服务器上创建的用户列表。 这可以为黑客提供对用户凭据进行暴力攻击的良好起点。 由于 /etc/passwd 的文件权限为 644,这意味着系统上的所有用户都可以读取它,包括运行 Web 服务器的用户。 这样,Web 服务器就可以通过浏览器呈现文件的内容。

目录遍历如何工作?

作为一种恶意技术,目录遍历很少被用作访问受害者服务器上敏感信息的唯一手段。 首先,攻击者需要想办法利用目标网站的漏洞,想办法让它在浏览器中显示请求的信息。 只有这样,目录遍历才会用于浏览受害者服务器的文件系统以到达受限目录。

文件包含漏洞使目录遍历成为可能。 当网站没有正确清理用户输入时,例如使用动态文件包含提供的文件路径,就会出现目录遍历漏洞。 本地文件包含 (LFI) 和目录遍历漏洞的组合允许黑客访问目标网站文档根目录之外的数据,从而泄露敏感的服务器信息。

目录遍历的例子

为了更好地了解如何利用本地文件包含和目录遍历漏洞,让我们看一下以下示例。 此示例是如何通过文件包含缺陷使用目录遍历的简化表示。

Web 开发人员添加一个网页 content.php,用于允许网站根据用户的请求动态加载不同的页面或组件。 例如,如果网站访问者想要查看“联系我们”页面,他们的请求可能会在浏览器地址栏中显示为“https://website.com/content.php?page=contact_us”。

content.php 页面将使用本地文件包含技术来引用与“contact_us”参数对应的文件,该参数可能包含请求的“联系我们”页面的 PHP 和 HTML 代码。 在此示例中,content.php 网页充当控制器,它加载根据用户输入动态生成内容的适当文件。

但是,如果用户的输入未得到正确验证或清理,攻击者可能会利用文件包含和目录遍历漏洞来包含任意文件,然后这些文件将显示在浏览器中。

例如,黑客可以将“../../../../../var/log/apache2/access.log”作为页面查询参数的值传递——一系列目录遍历序列后跟Apache Web 服务器在文件系统中的主要访问日志的地址。 这样,攻击者就可以查看日志文件的内容,其中包含敏感信息,例如 IP 地址、用户代理字符串和网站访问者请求的 URL。

文件权限如何促进或减轻目录遍历

文件权限在确保服务器和网站安全方面发挥着巨大作用。 通过将对文件的访问限制为仅特定的系统用户和组,权限可以帮助促进或减少目录遍历。

在使用目录遍历的文件包含攻击中,攻击者请求的文件的内容只有在其文件权限允许使用 Web 服务器运行的系统读取时才会显示在浏览器中。 虽然一些受限制的文件(例如 /etc/password)具有 644 的权限,这使得所有系统用户都可以读取它们,但其他文件仍然只能由 root 用户访问。

/etc/shadow 文件包含 Linux 服务器上所有用户的加密密码,文件权限为 640,这使得除 root 以外的任何用户都无法访问它。 这使得黑客无法通过目录遍历通过浏览器访问该文件。

如何检测您的 WordPress 网站上的目录遍历漏洞?

WordPress 核心保持高级别的安全性,并完全免受文件包含漏洞和目录遍历的影响。 但是,该平台提供的高度自定义选项增加了 WordPress 网站上存在这些漏洞的可能性。 即使是最著名的 WordPress 插件和主题也可能包含经常被发现的安全漏洞。

iThemes 每周 WordPress 漏洞报告可帮助您快速识别和修补 WordPress 插件和主题中新披露的漏洞,包括目录遍历。 只需检查漏洞报告,看看最近是否在您在 WordPress 网站上使用的插件以及您的活动主题中发现任何安全漏洞,并查看是否已发布补丁。

iThemes Security Pro 可以自动扫描您的 WordPress 网站是否存在漏洞,并代表您快速修补已识别的漏洞。 iThemes Security Pro 将每天进行两次高级漏洞扫描,如果检测到任何漏洞,将通过电子邮件发送给您,并在有可用的安全修复程序时自动安装更新。

如何防御目录遍历?

利用插件和主题中发现的漏洞是黑客用来获取未经授权的访问、窃取敏感数据以及将恶意软件(包括后门 shell)上传到 WordPress 网站的最大攻击媒介之一。 虽然遵循安全编码实践属于插件和主题开发人员的责任范围,但 WordPress 网站所有者有责任在本地实施保护措施。 只有多方面的 WordPress 安全方法才能帮助降低成为现代复杂网络攻击受害者的风险。

保持所有软件更新

将 WordPress 核心、活动插件和所选主题更新到可用的最新版本是消除目录遍历和其他严重的应用程序级漏洞的第一步。 由于在支持您的 WordPress 网站的软件中发现了新的安全漏洞,因此在安全补丁可用后尽快安装是最重要的。 在插件或主题开发人员解决发现的漏洞之前,可以禁用受影响的软件以减少攻击面。

跟踪插件和主题更新可能是一项具有挑战性的任务,但通过 iThemes Security Pro,网站所有者可以获得一个全面的解决方案,该解决方案可以简化流程并帮助确保网站保持最新状态并防止出现安全漏洞。 版本管理功能提供自动软件更新以保护您的 WordPress 站点。

配置安全文件权限

安全的 WordPress 文件权限为旨在访问敏感网站和服务器信息的攻击提供了额外的防御层。 尽管您很少需要更改关键系统配置文件和其他受限服务器数据的文件权限,但为网站文件设置安全权限的责任通常落在网站所有者身上。

保留重要的 WordPress 信息,例如 wp-config.php 文件,可以帮助有效防止通过利用目录遍历漏洞的文件包含攻击符号链接的跨帐户妥协。 iThemes Security Pro 中的文件权限检查可帮助网站所有者确保在其 WordPress 网站上正确实施这一关键安全机制。

实施 Web 应用程序防火墙

防火墙的工作原理是在将匹配已知模式或表现出异常模式的恶意网络请求传递到网络服务器之前将其过滤掉。 作为抵御大量机器人驱动的网络攻击(例如拒绝服务 (Dos) 和分布式拒绝服务 (DDoS))以及跨站点脚本 (XSS) 和 SQL 等数据注入攻击的强大第一道防线注入(SQLi)。

实施 Web 应用程序防火墙 (WAF) 或基于主机和基于云的入侵防御解决方案的组合可以显着降低成功入侵尝试的可能性。 作为针对文件包含和目录遍历漏洞的第二层防御,Web 应用程序防火墙确保黑客可以利用未修补版本的插件和主题中发现的任何安全漏洞。

借助 IThemes Security Pro,暴力破解保护和内置机器人程序管理解决方案有助于阻止不良机器人程序并过滤掉到达您网站的恶意 Web 请求。 通过添加由带有生物识别登录的密码支持的多因素身份验证,这个全面的安全套件提供了一种多方面的方法来保护您的网站免受各种类型的安全威胁。

使用 iThemes Security Pro 保护您的 WordPress 网站

文件包含和目录遍历漏洞对网站安全构成重大威胁,因为它们经常被黑客利用,以期获得对敏感数据的未授权访问或在受害者的服务器上执行恶意代码。 使用目录遍历序列并为易受攻击的网站提供特定数据的路径,攻击者可以诱骗 Web 服务器暴露原本受限的服务器和网站信息。

尽管得到了广泛的研究和认可,但目录遍历仍然是依赖过时软件且缺乏适当安全措施的 WordPress 网站的主要问题。 及时执行 WordPress 核心、主题和插件更新,配置安全文件权限并实施 Web 应用程序防火墙可以显着降低您的网站容易受到利用目录遍历的文件包含攻击的风险。

iThemes Security Pro 可以通过提供全面、多方面的网站安全方法来帮助您保护 WordPress 网站免受大量网络威胁。 凭借高级漏洞扫描、自动软件更新和强大的内置机器人管理解决方案,iThemes Security Pro 充当您的个人安全顾问,始终确保您的 WordPress 网站安全无虞。