引言
在本实验中,你将学习使用 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 服务器结构的理解。
