在 Gobuster 中扫描特定文件扩展名

Beginner
立即练习

引言

Gobuster 是一个强大的工具,用于对 Web 服务器进行目录和文件暴力破解。虽然它通常用于发现隐藏的目录,但也可以用来查找具有特定扩展名的文件。这项能力在渗透测试和安全评估中至关重要,因为它有助于识别潜在的入口点、敏感文件或可能不那么明显的错误配置。例如,查找 .php 文件可能表明存在 Web 应用程序,而 .bak.old 文件可能暴露敏感数据的备份副本。

在本实验中,你将学习如何在 Web 枚举过程中有效地使用 Gobuster 的 -x 标志来定位特定的文件扩展名。你将从识别常见且相关的文件扩展名开始,构建一个基本的 Gobuster 命令,然后对其进行增强以包含特定扩展名的扫描。最后,你将执行扫描并分析结果,以了解如何解释输出。这种实践经验将为你提供一项宝贵的技能,以实现更具针对性和效率的 Web 侦察。

识别目标文件扩展名(例如:.php, .html)

在此步骤中,你将学习识别在 Web 枚举过程中可能想要扫描的常见且相关的文件扩展名。扩展名的选择通常取决于目标技术栈(例如,.php 用于 PHP 应用程序,.aspx 用于 ASP.NET,.jsp 用于 Java 应用程序)或可能包含敏感信息的常见文件类型(例如,.txt, .bak, .zip, .sql)。

在本实验中,我们将重点关注几个常见的 Web 相关扩展名:.php.html.txt。这些扩展名经常遇到,并且是展示 Gobuster 功能的良好示例。

你可以列出一些在扫描时需要考虑的常见扩展名。虽然在此步骤中你不需要执行任何命令,但在任何有针对性的扫描中,了解你要查找的文件类型是第一个关键步骤。

请考虑以下常见扩展名:

  • .php: PHP 脚本
  • .html, .htm: HTML 页面
  • .txt: 文本文件,通常包含笔记或日志
  • .js: JavaScript 文件
  • .css: 层叠样式表 (Cascading Style Sheets)
  • .xml: XML 文件
  • .json: JSON 数据文件
  • .bak, .old, .orig: 备份文件
  • .zip, .tar.gz: 压缩文件
  • .sql: 数据库转储 (Database dumps)

了解要定位的扩展名有助于缩小搜索范围,并使你的枚举更有效率。

构建基础的 gobuster dir 命令

在此步骤中,你将构建基础的 gobuster dir 命令。Gobuster 中的 dir 模式用于目录和文件暴力破解。在添加特定文件扩展名的选项之前,了解基本命令结构是一个好习惯。

gobuster dir 命令的基本组成部分包括:

  • gobuster dir: 指定模式(目录/文件暴力破解)。
  • -u <URL>: 指定目标 URL。在本实验中,我们的目标将是 http://localhost:8000,它正在从 /tmp/web_root 提供文件。
  • -w <wordlist>: 指定用于暴力破解的单词列表 (wordlist)。Web 枚举常用的单词列表是 common.txtdirectory-list-2.3-medium.txt。为了在本实验中实现简单和快速,我们将使用一个小的自定义单词列表,其中包含 indexaboutnotesadmin

让我们在你的 ~/project 目录中创建一个简单的单词列表。

echo -e "index\nabout\nnotes\nadmin\nconfig" > ~/project/small_wordlist.txt

现在,让我们构建不带扩展名的基础命令。此命令将尝试查找与 small_wordlist.txt 中的条目匹配的目录或文件。

gobuster dir -u http://localhost:8000 -w ~/project/small_wordlist.txt

你将看到类似以下的输出,显示了未带特定扩展名找到的目录/文件:

...
/index (Status: 200)
/about (Status: 200)
/notes (Status: 200)
/admin (Status: 200)
/config (Status: 200)
...

此输出表明 Gobuster 找到了与单词列表匹配的条目,但尚未告知我们它们的具体文件类型。

添加 -x 标志以指定扩展名

在此步骤中,你将学习如何在 Gobuster 中使用 -x 标志来指定要扫描的文件扩展名。这是查找特定类型文件的核心。

-x 标志接受一个逗号分隔的扩展名列表。例如,要扫描 .php.html 文件,你将使用 -x php,html。然后,Gobuster 会将这些扩展名附加到你的单词列表中的每个条目,并尝试查找 index.phpabout.html 等文件。

让我们修改之前的命令,加入 .php.html.txt 扩展名。

gobuster dir -u http://localhost:8000 -w ~/project/small_wordlist.txt -x php,html,txt,bak

此命令告诉 Gobuster 为你的单词列表中的每个条目查找 index.phpindex.htmlindex.txtindex.bakabout.phpabout.htmlabout.txtabout.bak 等。

执行命令并观察输出。你现在应该看到明确包含文件扩展名的结果。

...
/index.php (Status: 200)
/about.html (Status: 200)
/notes.txt (Status: 200)
/admin.php (Status: 200)
/config.bak (Status: 200)
...

请注意输出现在如何清晰地显示带有各自扩展名的文件名,这表明 Gobuster 已成功找到这些文件。

对目标运行扫描

在此步骤中,你将针对我们模拟的目标执行包含指定扩展名的完整 Gobuster 命令。这是你所学知识的实际应用。

我们将使用上一步的命令,该命令包括目标 URL、自定义单词列表以及带有 .php.html.txt.bak 扩展名的 -x 标志。

gobuster dir -u http://localhost:8000 -w ~/project/small_wordlist.txt -x php,html,txt,bak

当你运行此命令时,Gobuster 将开始遍历单词列表,附加每个指定的扩展名,并向 http://localhost:8000 服务器发出请求。

输出将显示它发现的文件及其 HTTP 状态码。200 OK 状态码表示文件已成功找到。

===============================================================
Gobuster v3.6
by OJ (https://github.com/OJ/gobuster)
===============================================================
[+] Url:                     http://localhost:8000
[+] Method:                  GET
[+] Threads:                 10
[+] Wordlist:                /home/labex/project/small_wordlist.txt
[+] Extensions:              php,html,txt,bak
[+] Timeout:                 10s
===============================================================
2024/01/01 12:00:00 Starting gobuster in directory enumeration mode
===============================================================
/index.php            (Status: 200)
/about.html           (Status: 200)
/notes.txt            (Status: 200)
/admin.php            (Status: 200)
/config.bak           (Status: 200)
===============================================================
2024/01/01 12:00:00 Finished
===============================================================

此输出确认 Gobuster 已在目标服务器上成功识别了 index.phpabout.htmlnotes.txtadmin.phpconfig.bak

查看具有特定扩展名的文件的结果

在最后一步中,你将审查和解释从 Gobuster 扫描获得的结果。理解输出对于在安全评估中识别有价值的信息至关重要。

上一步的输出清晰地列出了找到的文件及其 HTTP 状态码。

===============================================================
Gobuster v3.6
by OJ (https://github.com/OJ/gobuster)
===============================================================
[+] Url:                     http://localhost:8000
[+] Method:                  GET
[+] Threads:                 10
[+] Wordlist:                /home/labex/project/small_wordlist.txt
[+] Extensions:              php,html,txt,bak
[+] Timeout:                 10s
===============================================================
2024/01/01 12:00:00 Starting gobuster in directory enumeration mode
===============================================================
/index.php            (Status: 200)
/about.html           (Status: 200)
/notes.txt            (Status: 200)
/admin.php            (Status: 200)
/config.bak           (Status: 200)
===============================================================
2024/01/01 12:00:00 Finished
===============================================================

以下是每行的含义:

  • /index.php (Status: 200):表示在 Web 服务器的根目录下找到了名为 index.php 的文件,并且服务器响应了 200 OK 状态,这意味着请求成功。
  • /about.html (Status: 200):同样,找到了 about.html
  • /notes.txt (Status: 200):找到了一个名为 notes.txt 的文本文件。这可能包含敏感信息。
  • /admin.php (Status: 200):找到了一个 admin.php 文件。这可能是一个管理界面,通常是进一步调查的目标。
  • /config.bak (Status: 200):找到了一个名为 config.bak 的备份文件。备份文件通常包含敏感的配置详细信息或源代码。

通过审查这些结果,你可以识别可能值得进一步调查的文件。例如,你可以在浏览器中尝试访问 /admin.php 或下载 /config.bak 来检查其内容。

这种针对扩展名的定向扫描有助于发现可能导致漏洞或信息泄露的隐藏或被遗忘的文件。

总结

在此实验中,你已成功学会如何使用 Gobuster 扫描目标 Web 服务器上的特定文件扩展名。你首先了解了识别相关文件扩展名的重要性,然后构建了一个基本的 gobuster dir 命令,最后使用 -x 标志对其进行了增强,以定位 .php.html.txt.bak 文件。

你针对模拟的 Web 服务器执行了扫描并解释了结果,识别了具有相应扩展名和 HTTP 状态码的各种文件。这项技能在渗透测试期间进行 Web 枚举时非常宝贵,它能让你发现可能包含敏感信息、揭示技术栈或暴露潜在入口点的隐藏文件。

通过掌握 -x 标志的使用,你可以执行更具针对性、更高效的侦察,从而显著提高发现 Web 应用程序漏洞的能力。继续练习使用不同的单词列表和扩展名组合,以进一步磨练你的 Web 枚举技能。