网页内容发现,你该找谁?Gobuster!
在网络测试,特别是大型网络测试中,最好的早期步骤之一是运行EyeWitness工具,以快速了解环境中存在哪些类型的Web应用程序。
在某些情况下,有价值的信息可能直接显示在安全性较差的Web应用程序的主页上。其他时候,您可能从HTTP头和源代码中获取易受攻击软件的名称和版本号,然后利用已知漏洞。有时,获取软件的管理员访问权限就像查找Web内容管理服务的手册,然后输入管理员门户的默认URL和默认凭据一样简单。
但对于那些没有提供太多信息的Web应用程序呢?也许根目录返回空白页面或HTTP 404“未找到”错误,并且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应用程序!