使用 Gobuster 执行基本目录扫描

Beginner
立即练习

引言

在本实验中,你将学习使用 Gobuster 进行目录扫描的基础知识。Gobuster 是一个强大的工具,在渗透测试和道德黑客攻击中用于发现 Web 服务器上隐藏的目录和文件。通过对目标 URL 进行常见目录名称的暴力破解,Gobuster 可以揭示敏感信息或被忽略的入口点。本实验将指导你选择目标、选择合适的单词列表(wordlist)、构建 Gobuster 命令、执行扫描以及解读结果。

为扫描选择目标 URL

在此步骤中,你将为 Gobuster 扫描选择一个目标 URL。在本实验中,我们将使用一个本地托管的、故意设计为易受攻击的 Web 应用程序。这可以确保你在执行扫描时不会影响外部系统,并能观察到典型的结果。

首先,让我们确保目标 Web 服务器正在运行。我们将使用 curl 来检查 Web 服务器是否可访问。

~/project 目录中打开你的终端。

curl http://localhost:8080

你应该会看到 HTML 输出,表明 Web 服务器已启动。我们扫描的目标 URL 将是 http://localhost:8080

<!DOCTYPE html>
<html>
<head>
<title>Welcome to Nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to Nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

选择一个基础单词列表

在此步骤中,你将为 Gobuster 扫描选择一个基础单词列表(wordlist)。单词列表是一个包含常见目录和文件名称列表的文件,Gobuster 将尝试在目标服务器上查找这些名称。你的单词列表的质量和全面性直接影响扫描的有效性。

在本实验中,我们将使用一个小型、预先安装的单词列表,该列表适用于演示目的。此单词列表位于 /usr/share/wordlists/dirb/common.txt

你可以使用 head 命令检查此单词列表的前几行,以了解其内容:

head /usr/share/wordlists/dirb/common.txt

此命令将显示单词列表的开头,展示 Gobuster 将测试的目录名称示例。

admin/
backup/
bin/
cgi-bin/
conf/
css/
data/
db/
dev/
doc/

此单词列表包含 Web 服务器上常见的目录名称。使用像这样的小型单词列表有助于在本实验中快速完成扫描。

构建基础的 gobuster dir 命令

在此步骤中,你将构建基础的 gobuster dir 命令。gobuster dir 命令用于目录和文件的暴力破解(brute-forcing)。它至少需要两个主要标志(flags):-u 用于目标 URL,-w 用于单词列表。

该命令的基本语法是:

gobuster dir -u <target_url> -w <wordlist_path>

根据我们之前的步骤:

  • 目标 URL 是 http://localhost:8080
  • 单词列表路径是 /usr/share/wordlists/dirb/common.txt

因此,你将构建的命令是:

gobuster dir -u http://localhost:8080 -w /usr/share/wordlists/dirb/common.txt

此命令告诉 Gobuster 使用 common.txt 中的条目作为潜在的目录名称,对 http://localhost:8080 执行目录扫描。你将在下一步执行此命令。

使用 -u 和 -w 标志执行扫描

在此步骤中,你将执行在上一步构建的 gobuster dir 命令。这将启动针对我们目标 URL 的目录扫描,并使用指定的单词列表。

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

gobuster dir -u http://localhost:8080 -w /usr/share/wordlists/dirb/common.txt

扫描运行时,Gobuster 将显示其进度以及发现的任何目录或文件。输出将显示每个找到条目的状态码(例如,200 表示 OK,301 表示永久移动)和响应的大小。

===============================================================
Gobuster vX.X.X-XXXXXX Linux/amd64
===============================================================
[+] Url:                     http://localhost:8080
[+] Threads:                 10
[+] Wordlist:                /usr/share/wordlists/dirb/common.txt
[+] Status codes:            200,204,301,302,307,401,403
[+] User Agent:              gobuster/X.X.X
[+] Timeout:                 10s
===============================================================
XXXX/XX/XX XX:XX:XX Starting gobuster in directory enumeration mode
===============================================================
/css                  (Status: 301)
/js                   (Status: 301)
/images               (Status: 301)
/admin                (Status: 301)
/icons                (Status: 301)
/server-status        (Status: 403)
===============================================================
XXXX/XX/XX XX:XX:XX Finished
===============================================================

上面的输出显示了几个找到的目录及其 HTTP 状态码。例如,/css 返回了 301 状态,表示永久重定向。

分析发现的目录的输出

在此步骤中,你将分析 Gobuster 扫描的输出以理解结果。输出提供了关于目标 Web 服务器上发现的目录和文件的宝贵信息。

回顾上一步的输出。你应该会看到类似以下的行:

/css                  (Status: 301)
/js                   (Status: 301)
/images               (Status: 301)
/admin                (Status: 301)
/icons                (Status: 301)
/server-status        (Status: 403)

每一行代表 Gobuster 发现的一个潜在目录或文件。

  • 第一部分,例如 /css,是 Gobuster 成功识别的路径。
  • (Status: XXX) 表示服务器为该路径返回的 HTTP 状态码。
    • 200 OK:请求成功,并返回了内容。这通常意味着一个有效的目录或文件。
    • 301 Moved Permanently:资源已永久移动到新的 URL。这仍然表明目录的存在。
    • 403 Forbidden:服务器理解请求但拒绝授权。这意味着目录存在,但你没有直接访问它的权限。
    • 401 Unauthorized:与 403 类似,但通常需要身份验证。

在我们的示例中,/css/js/images/admin/icons 都返回了 301 状态码,这意味着这些目录存在并且服务器正在将请求重定向到它们。/server-status 路径返回了 403 状态,表明它存在但访问被禁止。

这种分析有助于你识别需要进一步调查的潜在区域,例如管理面板 (/admin) 或配置文件,这些区域可能存在漏洞。

总结

在此实验中,你成功使用 Gobuster 执行了基本的目录扫描。你学会了如何选择目标 URL,选择合适的单词列表,使用 -u-w 标志构建 gobuster dir 命令,执行扫描,并分析输出以识别存在的目录及其 HTTP 状态码。这项基本技能对于网络安全中的侦察至关重要,它能帮助你发现可能包含敏感信息或漏洞的隐藏 Web 资产。现在,你可以使用不同的单词列表和目标来应用这些技术,以扩展你对 Web 服务器结构的理解。