使用 Gobuster 发现带点前缀的隐藏文件

Beginner
立即练习

引言

在 Web 应用安全中,发现隐藏的文件和目录是侦察阶段的关键一步。许多应用将敏感的配置、版本控制或环境变量存储在以点(.)为前缀的文件中(例如 .env, .git, .htaccess)。这些文件通常在文件浏览器和 Web 服务器中默认隐藏,使其成为不太明显的攻击目标。然而,如果配置不当,它们可能可以直接通过 Web 服务器访问,从而导致严重的信息泄露漏洞。

Gobuster 是一个强大的目录和文件暴力破解工具,可用于发现这些隐藏的资产。通过提供一个包含常见点前缀文件名的目标单词列表(wordlist),你可以显著提高找到有价值信息的几率,这些信息可能因此被忽略。

本实验(lab)将指导你使用 Gobuster 来专门针对并发现这些隐藏的点前缀文件。你将学习如何准备合适的单词列表,执行 Gobuster 扫描,并解读结果以识别潜在的安全风险。

理解点前缀文件(例如 .env, .git)的重要性

在本步骤中,我们将理解点前缀文件在 Web 安全中的重要性。像 .env, .git, .htaccess, .bashrc, 或 .ssh 这样的文件在 Linux 和 Web 开发环境中常用于存储配置、版本控制数据或敏感凭证。

  • .env 文件: 这些文件存储环境变量,通常包含数据库凭证、API 密钥和其他敏感的应用设置。如果暴露,它们可能使攻击者完全访问后端系统。
  • .git 目录: 如果一个 .git 目录在 Web 服务器上暴露,攻击者可以下载整个源代码仓库,包括提交历史、曾经是仓库一部分的敏感文件以及内部注释。
  • .htaccess 文件: Apache Web 服务器使用它来配置目录级别的设置,包括认证、授权和 URL 重写。配置错误或暴露可能导致绕过或信息泄露。

虽然这些文件在文件浏览器中通常默认隐藏,并且通常不打算通过 Web 服务器访问,但配置错误可能会无意中暴露它们。在侦察过程中发现它们可以为目标应用的架构和潜在漏洞提供关键的见解。

我们为本次实验(lab)在后台设置了一个简单的 Web 服务器,从 /tmp/web_root 提供内容。该目录包含一个隐藏的 .env 文件和一个 .hidden_config 文件,我们将尝试发现它们。

创建或查找包含点前缀文件名的单词列表

在本步骤中,我们将准备一个专门用于查找点前缀文件的单词列表。虽然存在许多通用单词列表(例如 SecLists 中的那些),但为特定任务创建目标性更强的列表会更有效。

我们将在你的 ~/project 目录中创建一个名为 dotfiles.txt 的简单单词列表。此单词列表将包含我们希望 Gobuster 检查的常见点前缀文件名。

首先,导航到你的项目目录:

cd ~/project

现在,使用 nano 创建 dotfiles.txt 文件,并添加一些常见的点前缀文件名。

nano dotfiles.txt

nano 中,添加以下行:

.env
.git
.htaccess
.bashrc
.profile
.ssh
.hidden_config

Ctrl+S 保存文件,然后按 Ctrl+X 退出 nano

你可以使用 cat 命令验证单词列表的内容:

cat dotfiles.txt

你应该会看到你刚刚添加的点前缀文件名列表。

.env
.git
.htaccess
.bashrc
.profile
.ssh
.hidden_config

Gobuster 将使用此单词列表来暴力破解目标 Web 服务器上这些特定文件的存在性。

使用此特定单词列表运行 gobuster dir 扫描

在本步骤中,我们将使用我们创建的 dotfiles.txt 单词列表执行 gobuster dir 扫描。我们将以运行在 http://127.0.0.1:8000 上的虚拟 Web 服务器为目标。

gobuster dir 的基本语法是:
gobuster dir -u <目标URL> -w <单词列表路径>

其中,-u 指定目标 URL,-w 指定单词列表的路径。

在你的终端中执行以下命令:

gobuster dir -u http://127.0.0.1:8000 -w ~/project/dotfiles.txt

让我们分解一下这个命令:

  • gobuster dir: 指定我们要执行目录/文件暴力破解扫描。
  • -u http://127.0.0.1:8000: 将目标 URL 设置为我们的本地虚拟 Web 服务器。
  • -w ~/project/dotfiles.txt: 告诉 Gobuster 使用我们自定义的 dotfiles.txt 单词列表。

运行命令后,Gobuster 将开始遍历单词列表并向目标服务器发出请求。你应该会看到类似以下的输出,表明已发现文件:

===============================================================
Gobuster vX.X.X.X-XXXXX Linux/amd64
===============================================================
[+] Url:                     http://127.0.0.1:8000
[+] Method:                  GET
[+] Threads:                 10
[+] Wordlist:                /home/labex/project/dotfiles.txt
[+] Status codes:            200,204,301,302,307,401,403
[+] User Agent:              gobuster/X.X.X
[+] Timeout:                 10s
===============================================================
2024/01/01 12:00:00 Starting gobuster in directory enumeration mode
===============================================================
/.env                 (Status: 200) [Size: 20]
/.hidden_config       (Status: 200) [Size: 27]
===============================================================
2024/01/01 12:00:00 Finished
===============================================================

正如你所见,Gobuster 成功识别了 .env.hidden_config 文件,它们都返回了 200 OK 状态,表明它们是可访问的。

使用 --no-error 标志隐藏连接错误

在本步骤中,我们将了解 Gobuster 中的 --no-error 标志。在执行扫描时,尤其是在针对不稳定的目标或处理网络问题时,Gobuster 可能会输出大量连接错误消息。这些错误会使输出混乱,并难以发现合法的发现。

--no-error 标志告诉 Gobuster 抑制这些与连接相关的错误消息,从而提供更清晰的、专注于成功发现的输出。

让我们重新运行 Gobuster 扫描,这次包含 --no-error 标志。虽然我们当前的本地服务器很稳定,但在实际场景中,此标志非常有用。

gobuster dir -u http://127.0.0.1:8000 -w ~/project/dotfiles.txt --no-error

你会注意到输出与上一步类似,因为在我们稳定的本地环境中没有需要抑制的连接错误。但是,在实际场景中,当有大量请求和潜在的网络问题时,此标志将显著减少噪音。

此标志的主要目的是通过过滤掉不相关的错误消息来提高扫描结果的可读性,让你能够专注于实际的发现(例如,200 OK 响应)。

分析敏感文件泄露的结果

在最后一步中,我们将分析从 Gobuster 扫描获得的结果,并理解发现这些文件的影响。

从我们之前的 Gobuster 扫描输出中,我们发现:

  • /.env (Status: 200) [Size: 20]
  • /.hidden_config (Status: 200) [Size: 27]

200 OK 状态码表示文件已找到并通过 Web 服务器访问。这是一个关键发现。

为了演示其影响,让我们尝试使用 curl 直接访问 .env 文件:

curl http://127.0.0.1:8000/.env

你应该会看到 .env 文件的内容:

DB_PASSWORD=supersecret

这清楚地表明敏感信息(在本例中为数据库密码)已被泄露。在实际场景中,攻击者可以利用这些信息获得对数据库或其他后端系统的未经授权的访问。

同样,你也可以尝试访问 .hidden_config 文件:

curl http://127.0.0.1:8000/.hidden_config

输出:

This is another hidden file.

虽然这个特定文件可能不包含高度敏感的数据,但它的发现表明存在潜在的配置错误,即本应隐藏的文件可公开访问。这可能导致进一步的枚举和发现更多关键资产。

关键要点:

  • 在 Web 侦察过程中,始终检查以点(dot)开头的文件。
  • 具有 200 OK 状态的此类文件的存在是信息泄露的有力指标。
  • 开发人员和系统管理员应确保敏感文件绝不能通过 Web 服务器直接访问,通常通过配置服务器规则(例如,Nginx location 块,Apache Directory 指令)或将其放置在 Web 根目录之外来实现。

本次实验突显了彻底侦察的重要性以及 Gobuster 等工具在发现隐藏漏洞方面的强大功能。

总结

在本实验中,你已成功学会如何使用 Gobuster 来发现以点(dot)为前缀的隐藏文件和目录。你首先了解了这类文件的重要性,它们通常包含敏感信息,如环境变量或版本控制数据。

然后,你创建了一个包含常见点前缀文件名的目标字典(wordlist),并使用它针对一个模拟 Web 服务器执行了 gobuster dir 扫描。你观察到 Gobuster 如何有效地识别出可访问的隐藏文件,如 .env.hidden_config。此外,你还了解了 --no-error 标志如何通过抑制连接错误来清理扫描输出。

最后,你分析了结果,演示了直接访问 .env 文件如何导致关键凭证的泄露。本次实验强调了在你的侦察方法中包含点文件枚举的重要性,以发现 Web 应用程序中可能被忽视的潜在信息泄露漏洞。

通过掌握这项技术,你将能更好地识别和报告那些可能未被注意到的安全风险。