对于网页内容发现,你该找谁?Gobuster!
作者:Melissa Bruno
在网络测试,尤其是大型网络测试中,最好的早期步骤之一是运行 EyeWitness 工具,以快速了解环境中存在哪些类型的 Web 应用程序。在某些情况下,有价值的信息可能直接显示在安全性较差的 Web 应用程序的主页上。其他时候,你可能会从 HTTP 头和源代码中获取易受攻击软件的名称和版本号,然后利用已知的漏洞来获得优势。有时,获取软件的管理员访问权限就像查找 Web 内容管理服务的手册,然后输入管理员门户的默认 URL 和默认凭据一样简单。
但那些没有提供太多信息的 Web 应用程序呢?也许根目录返回一个空白页面,或者一个 HTTP 404 “Not Found” 错误,并且 HTTP 头显示最新的软件版本号或根本没有有用信息。这时,自动化猜测就可以派上用场了。
脚本和自动化工具可用于检查可能在 Web 服务器上运行的常见文件和目录。其中一个工具就是 gobuster。
安装 Gobuster
根据你的操作系统,你可能可以直接使用包管理器安装 gobuster。否则,gobuster 可以在任何能够运行最新版本 Go 编程语言的系统上运行。对于后一种方法,你需要首先在此处下载最新版本的 Go:https://golang.org/dl/,然后按照此处的说明进行安装:https://golang.org/doc/install。
设置好 Go 后,只需运行命令 go install github.com/OJ/gobuster/v3@latest 即可安装最新版本的 gobuster。“go install” 命令会将 gobuster 可执行文件放置在 $GOPATH/bin 或 $HOME/go/bin 目录中。
运行 Gobuster
为了演示 gobuster 的用法,我设置了一个包含几个文件的目录,并使用 Python 3 的简单 HTTP 服务器在本地托管它们。你可以自己创建一个包含要托管的文件的目录,导航到该目录,然后使用以下命令:
|
|
接下来,在包含 gobuster 可执行文件的目录中,再创建两个文件:一个包含要检查的文件名列表,另一个包含目录名列表。我使用了 SecLists 的 raft-medium-directories.txt 和 raft-medium-files.txt 列表。使用以下命令检查服务器是否有你列表中的任何目录:
|
|
在输出部分,我们可以看到 gobuster 发现了 /important 目录。现在,我将检查该目录是否存在我另一个列表中的任何文件:
|
|
现在,gobuster 已经识别出一个文件 /secret.html。导航到该文件会返回一个( admittedly low-effort)包含机密数据的网页表示。
微调 Gobuster
由于本示例中使用的 Web 服务器是极简的,最简单的 gobuster 命令返回了有趣且易于解析的输出。对于生产 Web 服务器,通常情况并非如此。一些更常用的 Gobuster 参数包括:
--user-agent:通过使用浏览器的用户代理字符串,增加 Web 服务器返回有效响应的可能性。--timeout:增加超时时间,减少错过响应缓慢服务器托管的页面的可能性。--no-tls-validation:不要求 TLS 验证。--exclude-length:不显示指定长度的 HTTP 响应的结果。--status-codes:指定哪些 HTTP 响应代码应被解释为 Web 应用程序返回有效文件。这可以减少假阴性。--status-codes-blacklist:指定哪些 HTTP 响应代码不应被解释为 Web 应用程序返回有效文件。这可以减少假阳性。
一如既往,在运行这些工具之前,请确保你有权限测试目标 Web 应用程序!