暴露的备份和未引用的文件以及如何找到它们

已发表: 2021-08-24

保持您的 WordPress 安全需要一个持续的测试、强化、监控和改进过程。 WordPress 管理员可以处理几件事情来帮助他们确保他们的网站是安全的。 从确保密码符合特定标准到强化 PHP,这些过程可以在很大程度上帮助您确保运行紧凑、干净的船舶。 容易被忽视的一件事是暴露的备份和未引用的文件。 这些文件可能会带来安全风险,可以通过遵循最佳实践轻松管理。

WordPress 使用目录来组织信息。 所有页面和媒体都驻留在此结构中。 在典型的安装中,这个结构看起来像 var/www/html/wordpress/wp-content。

Web 服务器,包括托管 WordPress 网站的服务器,通常配置为为客户端提供位于特定目录中的所有文件。 有一些例外,例如 PHP 文件; 但是,除非管理员明确阻止访问,否则如果客户端请求它,Web 服务器可能会提供帮助。

一般来说,这是一件好事,这是您希望发生的事情,因为这是与您的网页相关的文件(例如 CSS 文件、JS 文件和图像)提供给访问者的方式。 但是,这种行为也意味着您可能会无意中提供您从未打算让公众看到的文件,例如备份和未引用的文件。

什么是备份和未引用文件?

顾名思义,备份和未引用文件是实际备份,可以是特定文件的备份,通常是在编辑配置文件等文件时创建的,甚至可以是完整备份。 了解这些备份文件是什么以及它们是如何生成的,是我们解决问题所需采取的第一步。

您可能需要编辑 WordPress 文件的原因有很多。 然而,编辑您的 WordPress 网站的文件,而不先进行备份需要一些勇气 - 一个丢失的分号可能会导致您的网站崩溃!

当然,由于此类错误很容易犯,因此不建议直接在生产 Web 服务器上编辑文件。 最佳实践告诉我们首先测试测试或登台服务器中的任何更改。 只有经过彻底和成功的测试,才能将更改移动到实时/生产服务器。

然而,在现实生活中,并不总是遵循最佳实践。 当它是一个很小的变化时,尤其如此。 下载文件、进行更改、测试和重新上传的过程可能比在实时服务器上编辑文件花费的时间要长得多。 我们都去过那儿。

在实时服务器上进行编辑非常容易。 使用 SSH 客户端和 Vi(或 Vim,如果您更喜欢改进的版本),您可以创造奇迹。 一旦您连接到服务器并进入目录,您可能会首先备份文件(例如 wp-config.php.bak),编辑实时文件,确保一切正常,这都是笨拙的。 但是,留在文件夹中的备份文件(以防万一,你知道)最终可能会成为许多痛苦的根源。 几乎任何人都可以下载它,并以纯文本形式下载整个配置。

此外,许多 WordPress 管理员可能不知道使用文件编辑器(如 Vim)编辑文件可能会自动创建备份、恢复和锁定文件。 Vim 创建这些文件是为了让您在 Vim 崩溃或意外退出时恢复您的工作。 虽然这无疑是一项有价值的功能,但这也意味着您可能会无意中将您从未打算创建的备份文件散布在您的网站上,等待任何人访问。

同样,保留在公用文件夹中的整个目录的备份也可能具有破坏性。 虽然备份您的 WordPress 网站至关重要,但这需要安全地完成,而不会引入新的安全风险。 我们将在本文后面更详细地讨论这一点。

备份文件的常见示例包括修改后的配置文件、PHP 文件或其他源代码的重命名旧版本,以及以压缩存档(例如 .zip、.gz 或 .tar.gz 存档)形式的自动或手动备份。

另一方面,未引用的文件是错误放置的文件,由于配置或设计决策,最终会出现在它们不属于的地方。

有哪些风险?

意外留下可访问的备份和未引用文件可能会泄漏敏感信息。 根据文件的不同,敏感数据可能包括配置参数或源代码,可帮助恶意用户更好地了解您的网站的工作方式,从而更容易对您的网站进行攻击。 在某些情况下,可能使攻击者控制整个 WordPress 安装的密码也可能被泄露。

有人可以通过多种方式在您的 Web 服务器上找到剩余文件。 虽然其中一些方法需要一些技术专长,但其他方法就像谷歌搜索一样简单,这增加了暴露的风险。 如果您不确定服务器上是否有剩余文件,请继续阅读以了解如何在其他人之前搜索并找到它们。

如何在您的 WordPress 网站上查找备份文件和未引用的文件

人们可以使用几种不同的方法来查找备份和未引用的文件。 作为服务器所有者,您拥有优势,因为您可以更直接地进行操作。 本节将探讨这些不同的工具,从可用于搜索和删除这些文件的工具开始。 然后,我们将看看一只好奇的猫如何在您的服务器上查找备份和未引用的文件。

在查找您可能留在 Web 服务器上的备份文件时,您可以采用三种方法中的一种(或多种)。 最简单的方法是安装一个插件来监控文件的变化。 或者,您可以尝试使用命令行工具(例如 find)查找留在文件系统上的备份文件,或者您可以尝试使用称为fuzzing的技术查找备份文件。

文件完整性监控插件

WordPress 的文件完整性监控解决方案可以毫不费力地帮助监控 Web 服务器上的文件更改,并在检测到任何添加、删除或更改的内容时提醒您。

这可以通过网站文件更改监视器插件来实现。 该插件获取您目录的指纹,然后将其与后续指纹进行比较。 本质上,它的工作原理与校验和相同,使其高度安全和可靠。

如果您不了解 WordPress 使用的所有目录,则文件完整性监视器可能特别有效。 这个插件的另一个显着优势是监控是自动化的,所以你不必记得检查文件——插件会自动完成。

寻找

现在让我们看看如何使用 find 命令查找备份文件。 以下命令将查找创建备份文件时使用的几个常用文件扩展名。

查找 /var/www -type f \( -name '*.bak' -o -name '*.backup' -o -name '*.bac' -o -name '*.zip' -o -name '* .tar' -o -name '*.jar' -o -name '*.log' -o -name '*.swp' -o -name '*~' -o -name '*.old' -o -名称 '*.~bk' -o -name '*.orig' -o -name '*.tmp' -o -name '*.exe' -o -name '*.0' -o -name '*. 1' -o -name '*.2' -o -name '*.3' -o -name '*.gz' -o -name '*.bz2' -o -name '*.7z' -o -名称 '*.s7z' -o -name '*.lz' -o -name '*.z' -o -name '*.lzma' -o -name '*.lzo' -o -name '*.apk ' -o -name '*.cab' -o -name '*.rar' -o -name '*.war' -o -name '*.ear' -o -name '*.tar.gz' -o -name '*.tgz' -o -name '*.tar.z' -o -name '*.tar.bz2' -o -name '*.tbz2' -o -name '*.tar.lzma' - o -name '*.tlz' -o -name '*.zipx' -o -name '*.iso' -o -name '*.src' -o -name '*.dev' -o -name '* .a' -o -name '*.ar' -o -name '*.cbz' -o -name '*.cpio' -o -name '*.shar' -o -name '*.lbr' -o -name '*.mar' -o -name '*.f' -o -name '*.rz' -o -name '*.sfark' -o -name '*.xz' -o -name '*. ace' -o -name '*.afa' -o -name '*.alz' -o -name '*.arc' -o -nam e '*.arj' -o -name '*.ba' -o -name '*.bh' -o -name '*.cfs' -o -name '*.cpt' -o -name '*.dar ' -o -name '*.dd' -o -name '*.dgc' -o -name '*.dmg' -o -name '*.gca' -o -name '*.ha' -o -name '*.hki' -o -name '*.ice' -o -name '*.inc' -o -name '*.j' -o -name '*.kgb' -o -name '*.lhz' -o -name '*.lha' -o -name '*.lzk' -o -name '*.pak' -o -name '*.partimg.' -o -name '*.paq6' -o -name '*.paq7' -o -name '*.paq8' -o -name '*.pea' -o -name '*.pim' -o -name '*.pit' -o -name '*.qda' -o -name '*.rk' -o -name '*.sda' -o -name '*.sea' -o -name '*.sen' -o -name '*.sfx' -o -name ' *.sit' -o -name '*.sitx' -o -name '*.sqx' -o -name '*s.xz' -o -name '*.tar.7z' -o -name '*. tar.xz' -o -name '*.uc' -o -name '*.uc0' -o -name '*.uc2' -o -name '*.ucn' -o -name '*.ur2' - o -name '*.ue2' -o -name '*.uca' -o -name '*.uha' -o -name '*.wim' -o -name '*.xar' -o -name '* .xp3' -o -name '*.yz1' -o -name '*.zoo' -o -name '*.zpaq' -o -name '*.zz' -o -name '*.include' -o -name '*_1' -o -name '*_2' -o -name '*_x' -o -name '*bak' -o -name '*_bak' -o -name '*old' -o -name '*_old' -o -name '*_a' -o -name '*_b' -o -name '*_c' -o -name '*_d' -o -name '*_e' -o -name '*_f' -o -name '*inc' -o -name '*_inc' -o -name '*_backup' -o -name '* - 复制' -o -name '* - 复制 (2)' -o -name '* - 复制 (3)' -o -name '*backup' -o -name '*-backup' -o -name '*-bak' -o -name '*-old' -o -name '*-1' -o -name '*-2' -o -name '* - 复制 - 复制' -o -name '*(副本)' -o -name '*(另一个副本)' -o -name '*(第二个副本)' -o -name '*(第三个副本)' -o -name '*(第四个副本)' -o - name '*(第二份)' -o -name '*(第三份)' -o -name '*(第四份)' -o -name '* (副本)' -o -name '* (另一份) ' -o -name '* (第二个副本)' -o -name '* (第三个副本)' -o -name '* (第四个副本)' -o -name '* (第二个副本)' -o -name ' * (第 3 份)' -o -name '* (第 4 份)' -o -name '* 的副本' -o -name '* 的副本 (2)' -o -name '* 的副本 (3)' -o -name '副本的副本 *' -o -name 'backup*' -o -name 'backup_*' -o -name 'backup-*' -o -name 'bak*' -o -name 'bak_ *' -o -name 'bak-*' -o -name'old*' -o -name 'old_*' -o -name 'old-*' -o -name '1*' -o -name '1_*' -o -name '1-*' -o -name '2*' -o -name '2_*' -o -name '2-*' \)

模糊测试

下面的方法使用一个名为 ffuf 的基于命令行的工具,其中包含一个专注于 WordPress 文件的单词列表(以纯文本形式收集的文件名和文件路径的列表)。 ffuf 可以配置为使用逗号分隔的常见备份文件扩展名列表发出请求(此示例仅使用仅包含 .bak 和 .backup 的缩短列表,但实际上,它可能会更长)。

ffuf -u http://example.com/FUZZ -w wordlist.txt -e '.bak,.backup'

搜索引擎搜索

搜索引擎非常非常擅长在 Web 服务器上查找和分类信息。 有人可以通过使用高级运算符来做到这一点,例如,可以深入查询以查找给定服务器上的特定文件类型。

这种类型的搜索也称为 Google Dorking,可以结合使用高级过滤器和推理。 推理是不知道服务器上存在什么的人如何使用一般信息来推断服务器上可能存在哪种文件和结构,然后搜索那些特定的东西。

安全扫描仪

有不同类型的扫描仪可以扫描网站的目录。 第一种扫描器称为站点爬虫,它与搜索引擎用于读取网站的底层技术相同。 然而,这些类型的扫描仪并不是搜索引擎独有的,可以免费下载。

在大多数国家/地区扫描目标网站是违法的,即使您的意图是好的。 您可以而且应该只对您拥有的网站使用扫描仪。 如果您正在扫描第三方网站,请确保您同意。 即便如此,有恶意的人也可以使用安全扫描程序来了解有关您网站的更多信息并了解其中包含哪些类型的文件。

另一种类型的扫描器是渗透测试扫描器,它可以扫描网站的漏洞,包括剩余文件。

找到备份或未引用的文件? 这是做什么

在网站上存储备份文件绝不是一个好主意。 不幸的是,WordPress 网站所有者和管理员配置 cron 作业(计划任务)来进行数据库备份的情况并不少见,只是将这些备份存储在同一台服务器上。 虽然您当然应该备份您的网站,但您应该注意不要将备份文件存储在您备份的系统上的任何位置。

拥有一个遵循最佳实践的深思熟虑的 WordPress 备份策略不仅从安全角度来看,而且从业务连续性的角度来看也是至关重要的。 毕竟,如果您不能使用它们来恢复数据,那么备份就没有多大价值。

如何防止备份文件枚举

正如我们在整篇文章中看到的那样,在您的 WordPress 网站上保留备份文件可能会带来很大风险。 因此,在将更改推送到实时/生产服务器之前,您应该始终使用测试或临时环境来执行更改。 大多数托管 WordPress 托管帐户都带有开箱即用的登台环境。 您还可以使用 Local 等软件,它允许您在 PC 上启动 WordPress 实例。

尽管如此,如果您选择将备份文件保留在您的网络服务器上,理想情况下,请将它们放在您配置网络服务器服务的目录之外。

此外,配置您的 WordPress 文件权限以禁止访问 Web 服务器的用户 - 这确保即使在配置错误的情况下,Web 服务器也不会被允许将文件提供给请求它的客户端。 作为一项附加措施,最好对任何数据库备份进行加密,并确保 Web 服务器的用户无法访问加密密钥。