在 Gobuster 中按状态码过滤扫描结果

Beginner
立即练习

引言

在 Web 枚举中,像 Gobuster 这样的工具被用来发现 Web 服务器上隐藏的目录和文件。然而,原始输出可能会让人不知所措,包含许多不直接相关的条目。根据 HTTP 状态码过滤这些结果是一种强大的技术,可以将你的注意力集中在特定类型的响应上,例如成功的页面(200 OK)、重定向(301/302)或被禁止的资源(403)。

本实验将指导你使用 Gobuster 的过滤功能来高效地分析扫描结果。你将学习识别常见的 HTTP 状态码,执行基本的 Gobuster 扫描,然后应用过滤器仅显示你感兴趣的状态码。这项技能对于任何从事 Web 安全或渗透测试的人来说都至关重要,因为它有助于快速识别可操作的信息。

理解常见的 HTTP 状态码 (200, 301, 403)

在本步骤中,你将了解在 Web 枚举过程中经常遇到的一些最常见的 HTTP 状态码。理解这些状态码是解读 Gobuster 输出和有效过滤结果的基础。

  • 200 OK: 此状态码表示请求已成功。服务器已成功处理请求,并正在返回所请求的资源(例如,网页、图片)。在 Gobuster 扫描中,200 状态码通常意味着找到了一个有效、可访问的页面或目录。
  • 301 Moved Permanently: 此状态码表示所请求的资源已永久移动到新的 URL。浏览器(或 Gobuster)应自动重定向到新位置。虽然这不是错误,但找到 301 重定向可能表明存在旧的或已重新组织的內容。
  • 403 Forbidden: 此状态码表示服务器理解请求但拒绝授权。这通常发生在用户(或 Gobuster)尝试访问需要身份验证或特定权限的资源,但客户端没有这些权限时。找到 403 状态码可能很有趣,因为它们可能指向受保护但仍然存在的敏感区域。

为了更好地理解这些,你可以尝试使用 curl 访问我们模拟 Web 服务器上的某些路径。

首先,让我们通过尝试访问 index.html 来确认服务器正在运行:

curl -I http://localhost:8000/index.html

你应该在输出中看到 HTTP/1.0 200 OK 状态。

接下来,尝试访问 redirect.html 来查看 301 重定向:

curl -I http://localhost:8000/redirect.html

你应该会观察到 HTTP/1.0 301 Moved Permanently 状态。

最后,尝试访问 admin.html 来查看 403 Forbidden 响应:

curl -I http://localhost:8000/admin.html

此命令应返回 HTTP/1.0 403 Forbidden 状态。

这些 curl 命令可以帮助你手动验证服务器上的不同路径如何响应特定的 HTTP 状态码,而这正是 Gobuster 将自动执行的操作。

运行扫描以查看所有状态码

在本步骤中,你将针对模拟 Web 服务器执行一次基本的 Gobuster 扫描,不进行任何状态码过滤。这将使你能够看到默认输出,其中包含所有已发现的路径及其对应的 HTTP 状态码。这可以作为应用过滤器之前的基线。

Gobuster 目录暴力破解的基本语法是 gobuster dir -u <URL> -w <wordlist>

  • -u: 指定目标 URL。在我们的例子中,它是 http://localhost:8000
  • -w: 指定单词列表文件的路径。我们将使用在设置中创建的 wordlist.txt 文件。

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

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

运行命令后,观察输出。你应该会看到类似以下的行,指示已发现的路径及其状态码:

/index.html           (Status: 200)
/secret.html          (Status: 200)
/redirect.html        (Status: 301)
/admin.html           (Status: 403)

请注意,Gobuster 会报告它遇到的所有状态码。在实际场景中,如果使用大型单词列表,此输出可能会非常长,并包含许多不相关的条目。接下来的步骤将展示如何优化此输出。

使用 -s 标志仅显示 200 OK 和 301 重定向

在本步骤中,你将学习如何在 Gobuster 中使用 -s (status) 标志来过滤扫描结果,仅显示特定的 HTTP 状态码。当你查找特定类型的响应时,例如成功的页面或重定向,这会非常有用。

-s 标志允许你指定一个逗号分隔的状态码列表来包含在输出中。例如,要仅查看 200 (OK) 和 301 (Moved Permanently) 响应,你可以使用 -s 200,301

执行以下命令:

gobuster dir -u http://localhost:8000 -w ~/project/wordlist.txt -s 200,301

观察输出。这次,你应该只会看到状态码为 200 和 301 的条目:

/index.html           (Status: 200)
/secret.html          (Status: 200)
/redirect.html        (Status: 301)

请注意,返回 403 状态的 /admin.html 条目已不再出现在输出中。这展示了 -s 标志可以多么有效地缩小你的结果范围,让你更容易专注于相关的发现。

运行新扫描以查找 Forbidden 页面 (403)

在本步骤中,你将执行另一次过滤扫描,这次专门查找返回 403 HTTP 状态码的“Forbidden”页面。在渗透测试中,识别 403 响应可能至关重要,因为它们通常表示受保护的管理界面、敏感文件或可能容易受到错误配置或绕过技术影响的目录。

要仅过滤 403 状态码,你将使用 -s 标志并将 403 作为参数。

执行以下命令:

gobuster dir -u http://localhost:8000 -w ~/project/wordlist.txt -s 403

检查输出。现在你应该只会看到 /admin.html 的条目,它返回了 403 状态:

/admin.html           (Status: 403)

这次有针对性的扫描可以快速突出显示服务器明确拒绝访问的资源。虽然这些资源受到保护,但它们的存在本身就可能为进一步调查提供有价值的信息。这展示了 -s 标志在专注于特定类型的服务器响应方面的灵活性。

分析过滤后的输出

在最后这个步骤中,你将分析你生成的过滤后输出的含义。理解 Gobuster 扫描中不同状态码的含义是有效进行 Web 枚举的关键。

当你过滤出 200,301 状态码时,你识别出:

  • /index.html (200 OK): 这是主页面,表示一个成功且可访问的资源。
  • /secret.html (200 OK): 这个也返回了 200,表明它是一个可访问的页面。在实际场景中,你应该检查其内容,看看是否包含敏感信息。
  • /redirect.html (301 Moved Permanently): 这表示一个重定向。你通常会跟踪重定向,看看它指向哪里,因为它可能指向更新的内容或应用程序的其他部分。

当你过滤出 403 状态码时,你识别出:

  • /admin.html (403 Forbidden): 这是一个关键发现。403 响应意味着服务器知道该资源存在但拒绝访问。这通常指向管理面板、敏感目录或有意保护的文件。虽然直接访问被拒绝,但此路径是进一步调查的首要候选对象,例如:
    • 绕过尝试: 是否有针对此特定 Web 服务器或应用程序的已知绕过技术?
    • 默认凭据: 默认凭据是否允许访问?
    • 漏洞扫描: 是否有任何漏洞可能导致未经授权的访问?

通过有选择地过滤 Gobuster 的输出,你可以快速将调查重点转移到最有希望的线索上,从而节省时间,并使你的枚举过程更有效、更有针对性。这项技能对于任何进行 Web 应用程序评估的安全专业人员来说都是基础。

总结

在这个实验中,你学会了如何有效地使用 Gobuster 的 -s 标志根据 HTTP 状态码过滤扫描结果。你首先了解了常见的状态码,如 200 (OK)、301 (Moved Permanently) 和 403 (Forbidden)。然后,你执行了一个基本的 Gobuster 扫描来查看所有响应,并随后应用过滤器来聚焦于特定类型的结果。

通过过滤 200 和 301 状态码,你识别出了可访问的页面和重定向。更重要的是,通过过滤 403 状态码,你定位了可能敏感或受保护的资源,这些资源值得进一步调查。这种有针对性的方法显著简化了 Web 枚举过程,使你在渗透测试或安全评估期间能够快速识别可操作的情报。掌握这项技术是任何网络安全专业人员的宝贵技能。