一个用Go编写的目录/文件、DNS和VHost破解工具 | Gobuster
作者:Sec-Labs | 发布时间:
项目地址
https://github.com/OJ/gobuster
Gobuster项目简介
相关技术点
- 爆破攻击
- 目录枚举
- DNS子域名枚举
- 虚拟主机名枚举
- Amazon S3桶枚举
- Google Cloud桶枚举
- TFTP服务器枚举
项目用途
Gobuster是一个用于网络安全领域的攻击工具,主要用于爆破攻击。具体来说,Gobuster可以用于以下方面:
- 在Web站点中枚举URI(目录和文件)。
- 在DNS中枚举子域名(支持通配符)。
- 在目标Web服务器上枚举虚拟主机名。
- 枚举Amazon S3桶。
- 枚举Google Cloud桶。
- 枚举TFTP服务器中的文件。
Gobuster可以帮助安全专家发现网站可能存在的漏洞,从而进行修复工作。同时,Gobuster也可以帮助安全专家进行安全测试,以评估网站的安全性。
Gobuster
Gobuster是一个用于暴力破解的工具,可以用于:
- 网站中的URI(目录和文件)。
- DNS子域(支持通配符)。
- 目标Web服务器上的虚拟主机名。
- 打开Amazon S3桶
- 打开Google Cloud桶
- TFTP服务器
标签、状态等
喜欢这个工具吗?支持它!
如果您已经支持我们,那太棒了。如果您还没有支持,也没关系!想要支持我们?成为支持者!
所有捐赠给该项目的资金都将捐赠给慈善机构。慈善捐款的完整日志将在此存储库中提供。
更改
3.5
- 允许在状态码和状态码黑名单中使用范围。示例:200、300-305、404
3.4
- 启用TLS1.0和TLS1.1支持
- 添加TFTP模式以在TFTP服务器上搜索文件
3.3
- 支持TLS客户端证书/mtls
- 支持从文件加载扩展
- 支持模糊POST正文、HTTP标头和基本身份验证
- 新选项不规范化标头名称
3.2
- 使用go 1.19
- 在正确的方式下使用上下文
- 摆脱通配符标志(除了DNS模式)
- 彩色输出
- 超时重试
- Google Cloud桶枚举
- 修复空引用错误
3.1
- 枚举公共AWS S3存储桶
- 模糊模式
- 指定HTTP方法
- 支持模式。您现在可以指定一个包含应用于每个单词的模式的文件,每行一个。其中每个术语的出现
{GOBUSTER}将被替换为当前的单词列表项。请小心使用,因为这可能会大大增加发出的请求数量。 - 简写
p标志现在用于模式标志
3.0
- 新的CLI选项,因此模式严格分离(
-m现已消失!) - 性能优化和更好的连接处理
- 能够枚举虚拟主机名
- 提供自定义HTTP标头的选项
许可证
请参阅LICENSE文件。
手册
可用模式
- dir - 经典的目录暴力破解模式
- dns - DNS子域暴力破解模式
- s3 - 枚举开放的S3存储桶并查找存在和存储桶列表
- gcs - 枚举开放的Google云存储桶
- vhost - 虚拟主机暴力破解模式(不同于DNS!)
- fuzz - 一些基本的模糊,替换
FUZZ关键字 - tftp - 暴力破解tftp文件
简便安装
二进制版本
我们现在为每个版本提供二进制文件,以便您甚至不必自己构建它们!这是多么美妙!
如果您够傻,信任我编写的二进制文件,您可以从发布页面下载它们。
使用 go install
如果您已准备好Go环境(至少是go 1.19),那么它很容易:
go install github.com/OJ/gobuster/v3@latest
PS: 您需要至少go 1.19才能编译gobuster。
从源代码构建
由于此工具是使用Go编写的,因此需要安装Go语言/编译器/等。完整的安装和设置详细信息可以在Go语言网站上找到。安装后,您有两个选择。您需要至少go 1.19才能编译gobuster。
编译
gobuster 有外部依赖项,因此需要先引入它们:
go get && go build
这将为您创建一个 gobuster 二进制文件。如果您想将其安装在 $GOPATH/bin 文件夹中,可以运行:
go install
模式
内置帮助!
gobuster help- 输出顶级帮助。-gobuster help <mode>- 输出特定模式的帮助信息。
dns 模式
选项
使用 DNS 子域名枚举模式
Usage:
gobuster dns [flags]
Flags:
-d, --domain string 目标域名
-h, --help dns 的帮助信息
-r, --resolver string 使用自定义 DNS 服务器(格式为 server.com 或 server.com:port)
-c, --show-cname 显示 CNAME 记录(不能与 '-i' 选项一起使用)
-i, --show-ips 显示 IP 地址
--timeout duration DNS 解析器超时(默认为 1s)
--wildcard 当发现通配符时,强制继续操作
Global Flags:
--delay duration 每个线程在请求之间等待的时间(例如 1500ms)
--no-color 禁用彩色输出
--no-error 不显示错误
-z, --no-progress 不显示进度
-o, --output string 写入结果的输出文件(默认为 stdout)
-p, --pattern string 包含替换模式的文件
-q, --quiet 不打印标语和其他噪音
-t, --threads int 并发线程数(默认为 10)
-v, --verbose 详细输出(错误)
-w, --wordlist string 字典文件的路径
示例
gobuster dns -d mysite.com -t 50 -w common-names.txt
正常运行示例如下:
gobuster dns -d google.com -w ~/wordlists/subdomains.txt
===============================================================
Gobuster v3.2.0
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Mode : dns
[+] Url/Domain : google.com
[+] Threads : 10
[+] Wordlist : /home/oj/wordlists/subdomains.txt
===============================================================
2019/06/21 11:54:20 Starting gobuster
===============================================================
Found: chrome.google.com
Found: ns1.google.com
Found: admin.google.com
Found: www.google.com
Found: m.google.com
Found: support.google.com
Found: translate.google.com
Found: cse.google.com
Found: news.google.com
Found: music.google.com
Found: mail.google.com
Found: store.google.com
Found: mobile.google.com
Found: search.google.com
Found: wap.google.com
Found: directory.google.com
Found: local.google.com
Found: blog.google.com
===============================================================
2019/06/21 11:54:20 Finished
===============================================================
显示 IP 的示例运行如下:
gobuster dns -d google.com -w ~/wordlists/subdomains.txt -i
===============================================================
Gobuster v3.2.0
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Mode : dns
[+] Url/Domain : google.com
[+] Threads : 10
[+] Wordlist : /home/oj/wordlists/subdomains.txt
===============================================================
2019/06/21 11:54:54 Starting gobuster
===============================================================
Found: www.google.com [172.217.25.36, 2404:6800:4006:802::2004]
Found: admin.google.com [172.217.25.46, 2404:6800:4006:806::200e]
Found: store.google.com [172.217.167.78, 2404:6800:4006:802::200e]
Found: mobile.google.com [172.217.25.43, 2404:6800:4006:802::200b]
Found: ns1.google.com [216.239.32.10, 2001:4860:4802:32::a]
Found: m.google.com [172.217.25.43, 2404:6800:4006:802::200b]
Found: cse.google.com [172.217.25.46, 2404:6800:4006:80a::200e]
Found: chrome.google.com [172.217.25.46, 2404:6800:4006:802::200e]
Found: wap.google.com [172.217.25.43, 2404:6800:4006:802::200b]
Found: music.google.com [172.217.25.46, 2404:6800:4006:80a::200e]
Found: directory.google.com [172.217.25.46, 2404:6800:4006:806::200e]
Found: mail.google.com [172.217.25.37, 2404:6800:4006:802::2005]
Found: local.google.com [172.217.25.46, 2404:6800:4006:806::200e]
Found: search.google.com [172.217.25.46, 2404:6800:4006:80a::200e]
Found: news.google.com [172.217.25.46, 2404:6800:4006:80a::200e]
Found: translate.google.com [172.217.25.46, 2404:6800:4006:80a::200e]
Found: support.google.com [172.217.25.46, 2404:6800:4006:806::200e]
Found: blog.google.com [172.217.25.46, 2404:6800:4006:80a::200e]
===============================================================
2019/06/21 11:54:54 Finished
===============================================================
```## `dir` 模式
### 选项
```text
使用目录/文件枚举模式
用法:
gobuster dir [flags]
标志:
-f, --add-slash 在每个请求后附加/
-c, --cookies string 用于请求的 Cookies
-d, --discover-backup 通过添加多个备份扩展名也搜索备份文件
--exclude-length ints 排除以下内容长度(完全忽略状态)。多次提供以排除多个大小。
-e, --expanded 扩展模式,打印完整的 URL
-x, --extensions string 要搜索的文件扩展名
-r, --follow-redirect 跟随重定向
-H, --headers stringArray 指定 HTTP 标头,-H 'Header1: val1' -H 'Header2: val2'
-h, --help dir 的帮助
--hide-length 在输出中隐藏正文的长度
-m, --method string 使用以下 HTTP 方法(默认为“GET”)
-n, --no-status 不打印状态代码
-k, --no-tls-validation 跳过 TLS 证书验证
-P, --password string Basic Auth 的密码
--proxy string 用于请求的代理 [http(s)://host:port]
--random-agent 使用随机的 User-Agent 字符串
--retry 在请求超时时重试
--retry-attempts int 请求超时时重试的次数(默认为 3)
-s, --status-codes string 正状态码(如果设置,将被状态码黑名单覆盖)
-b, --status-codes-blacklist string 负状态码(如果设置,将覆盖状态码)(默认为“404”)
--timeout duration HTTP 超时(默认为 10s)
-u, --url string 目标 URL
-a, --useragent string 设置 User-Agent 字符串(默认为“gobuster/3.2.0”)
-U, --username string Basic Auth 的用户名
全局标志:
--delay duration 每个线程在请求之间等待的时间(例如 1500ms)
--no-color 禁用彩色输出
--no-error 不显示错误
-z, --no-progress 不显示进度
-o, --output string 输出文件以写入结果(默认为 stdout)
-p, --pattern string 包含替换模式的文件
-q, --quiet 不打印横幅和其他噪音
-t, --threads int 并发线程数(默认为 10)
-v, --verbose 详细输出(错误)
-w, --wordlist string 单词列表的路径
示例
gobuster dir -u https://mysite.com/path/to/folder -c 'session=123456' -t 50 -w common-files.txt -x .php,.html
默认选项如下所示:
gobuster dir -u https://buffered.io -w ~/wordlists/shortlist.txt
===============================================================
Gobuster v3.2.0
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Mode : dir
[+] Url/Domain : https://buffered.io/
[+] Threads : 10
[+] Wordlist : /home/oj/wordlists/shortlist.txt
[+] Status codes : 200,204,301,302,307,401,403
[+] User Agent : gobuster/3.2.0
[+] Timeout : 10s
===============================================================
2019/06/21 11:49:43 Starting gobuster
===============================================================
/categories (Status: 301)
/contact (Status: 301)
/posts (Status: 301)
/index (Status: 200)
===============================================================
2019/06/21 11:49:44 Finished
===============================================================
禁用状态代码的默认选项如下所示:
gobuster dir -u https://buffered.io -w ~/wordlists/shortlist.txt -n
===============================================================
Gobuster v3.2.0
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Mode : dir
[+] Url/Domain : https://buffered.io/
[+] Threads : 10
[+] Wordlist : /home/oj/wordlists/shortlist.txt
[+] User Agent : gobuster/3.2.0
[+] Timeout : 10s
===============================================================
/categories
/contact
/posts
/index
===============================================================
```## `vhost` 模式
### 选项
```text
使用 VHOST 枚举模式(你最好使用 IP 地址作为 URL 参数)
用法:
gobuster vhost [flags]
标志:
--append-domain 将 URL 中的主域名添加到来自字典的单词中。否则需要在字典中完整指定域名。
-c, --cookies string 用于请求的 Cookies
--domain string 当使用 IP 地址作为 URL 时要添加的域名。如果留空并且您指定了基于域名的 URL,则从 URL 中提取主机名。
--exclude-length ints 排除以下内容长度(完全忽略状态)。多次提供以排除多个大小。
-r, --follow-redirect 跟随重定向
-H, --headers stringArray 指定 HTTP 标头,-H 'Header1: val1' -H 'Header2: val2'
-h, --help 显示帮助信息
-m, --method string 使用以下 HTTP 方法(默认为 "GET")
-k, --no-tls-validation 跳过 TLS 证书验证
-P, --password string Basic Auth 的密码
--proxy string 用于请求的代理 [http(s)://host:port]
--random-agent 使用随机的 User-Agent 字符串
--retry 请求超时时是否重试
--retry-attempts int 在请求超时时重试的次数(默认为 3)
--timeout duration HTTP 超时(默认为 10s)
-u, --url string 目标 URL
-a, --useragent string 设置 User-Agent 字符串(默认为 "gobuster/3.2.0")
-U, --username string Basic Auth 的用户名
全局标志:
--delay duration 每个线程在请求之间等待的时间(例如 1500ms)
--no-color 禁用颜色输出
--no-error 不显示错误
-z, --no-progress 不显示进度
-o, --output string 输出结果的文件(默认为 stdout)
-p, --pattern string 包含替换模式的文件
-q, --quiet 不打印横幅和其他噪音
-t, --threads int 并发线程数(默认为 10)
-v, --verbose 详细输出(错误)
-w, --wordlist string 字典的路径
示例
gobuster vhost -u https://mysite.com -w common-vhosts.txt
正常的示例运行如下:
gobuster vhost -u https://mysite.com -w common-vhosts.txt
===============================================================
Gobuster v3.2.0
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url: https://mysite.com
[+] Threads: 10
[+] Wordlist: common-vhosts.txt
[+] User Agent: gobuster/3.2.0
[+] Timeout: 10s
===============================================================
2019/06/21 08:36:00 Starting gobuster
===============================================================
Found: www.mysite.com
Found: piwik.mysite.com
Found: mail.mysite.com
===============================================================
2019/06/21 08:36:05 Finished
===============================================================
fuzz 模式
选项
使用模糊测试模式
用法:
gobuster fuzz [flags]
标志:
-c, --cookies string 用于请求的 Cookies
--exclude-length ints 排除以下内容长度(完全忽略状态)。多次提供以排除多个大小。
-b, --excludestatuscodes string 负面状态代码(如果设置,将覆盖 statuscodes)
-r, --follow-redirect 跟随重定向
-H, --headers stringArray 指定 HTTP 标头,-H 'Header1: val1' -H 'Header2: val2'
-h, --help 显示帮助信息
-m, --method string 使用以下 HTTP 方法(默认为 "GET")
-k, --no-tls-validation 跳过 TLS 证书验证
-P, --password string Basic Auth 的密码
--proxy string 用于请求的代理 [http(s)://host:port]
--random-agent 使用随机的 User-Agent 字符串
--retry 请求超时时是否重试
--retry-attempts int 在请求超时时重试的次数(默认为 3)
--timeout duration HTTP 超时(默认为 10s)
-u, --url string 目标 URL
-a, --useragent string 设置 User-Agent 字符串(默认为 "gobuster/3.2.0")
-U, --username string Basic Auth 的用户名
全局标志:
--delay duration 每个线程在请求之间等待的时间(例如 1500ms)
--no-color 禁用颜色输出
--no-error 不显示错误
-z, --no-progress 不显示进度
-o, --output string 输出结果的文件(默认为 stdout)
-p, --pattern string 包含替换模式的文件
-q, --quiet 不打印横幅和其他噪音
-t, --threads int 并发线程数(默认为 10)
-v, --verbose 详细输出(错误)
-w, --wordlist string 字典的路径
```## 例子
```text
gobuster fuzz -u https://example.com?FUZZ=test -w parameter-names.txt
s3 模式
选项
使用 AWS 存储桶枚举模式
使用方法:
gobuster s3 [flags]
标志:
-h, --help 显示帮助信息
-m, --maxfiles int 列出存储桶时的最大文件数(仅在详细模式下显示)(默认值为5)
-k, --no-tls-validation 跳过 TLS 证书验证
--proxy string 用于请求的代理 [http(s)://host:port]
--random-agent 使用随机 User-Agent 字符串
--retry 在请求超时时是否重试
--retry-attempts int 请求超时时的重试次数 (默认值为3)
--timeout duration HTTP 超时时间 (默认值为10s)
-a, --useragent string 设置 User-Agent 字符串 (默认值为 "gobuster/3.2.0")
全局标志:
--delay duration 每个线程在请求之间等待的时间 (例如 1500ms)
--no-color 禁用彩色输出
--no-error 不显示错误
-z, --no-progress 不显示进度
-o, --output string 输出结果的文件 (默认为标准输出)
-p, --pattern string 包含替换模式的文件
-q, --quiet 不打印标语和其他噪音
-t, --threads int 并发线程数 (默认值为10)
-v, --verbose 详细输出 (错误)
-w, --wordlist string 字典文件的路径
例子
gobuster s3 -w bucket-names.txt
gcs 模式
选项
使用 GCS 存储桶枚举模式
使用方法:
gobuster gcs [flags]
标志:
-h, --help 显示帮助信息
-m, --maxfiles int 列出存储桶时的最大文件数(仅在详细模式下显示)(默认值为5)
-k, --no-tls-validation 跳过 TLS 证书验证
--proxy string 用于请求的代理 [http(s)://host:port]
--random-agent 使用随机 User-Agent 字符串
--retry 在请求超时时是否重试
--retry-attempts int 请求超时时的重试次数 (默认值为3)
--timeout duration HTTP 超时时间 (默认值为10s)
-a, --useragent string 设置 User-Agent 字符串 (默认值为 "gobuster/3.2.0")
全局标志:
--delay duration 每个线程在请求之间等待的时间 (例如 1500ms)
--no-color 禁用彩色输出
--no-error 不显示错误
-z, --no-progress 不显示进度
-o, --output string 输出结果的文件 (默认为标准输出)
-p, --pattern string 包含替换模式的文件
-q, --quiet 不打印标语和其他噪音
-t, --threads int 并发线程数 (默认值为10)
-v, --verbose 详细输出 (错误)
-w, --wordlist string 字典文件的路径
例子
gobuster gcs -w bucket-names.txt
tftp 模式
选项
使用 TFTP 枚举模式
使用方法:
gobuster tftp [flags]
标志:
-h, --help 显示帮助信息
-s, --server string 目标 TFTP 服务器
--timeout duration TFTP 超时时间 (默认值为1s)
全局标志:
--delay duration 每个线程在请求之间等待的时间 (例如 1500ms)
--no-color 禁用彩色输出
--no-error 不显示错误
-z, --no-progress 不显示进度
-o, --output string 输出结果的文件 (默认为标准输出)
-p, --pattern string 包含替换模式的文件
-q, --quiet 不打印标语和其他噪音
-t, --threads int 并发线程数 (默认值为10)
-v, --verbose 详细输出 (错误)
-w, --wordlist string 字典文件的路径
例子
gobuster tftp -s tftp.example.com -w common-filenames.txt
通过 STDIN 传递字典文件
可以通过将 - 提供给 -w 选项,通过 stdin 将字典文件传递到 gobuster:
hashcat -a 3 --stdout ?l | gobuster dir -u https://mysite.com -w -
注意:如果同时指定了 -w 选项和来自 STDIN 的管道,则会显示错误并终止程序。## 模式
您可以提供模式文件,它将应用于来自单词列表的每个单词。只需将字符串 {GOBUSTER} 放入其中,就会将其替换为该单词。此功能在 s3 模式中也很方便,可用于预先或后缀某些模式。
注意: 使用大型模式文件可能会导致大量请求,因为每个模式都将应用于单词列表中的每个单词。
示例文件
{GOBUSTER}Partial
{GOBUSTER}Service
PRE{GOBUSTER}POST
{GOBUSTER}-prod
{GOBUSTER}-dev
结合模式的用例
- 为目标创建包含公司名称等内容的自定义单词列表
- 创建用于常见存储桶名称的模式文件。
curl -s --output - https://raw.githubusercontent.com/eth0izzle/bucket-stream/master/permutations/extended.txt | sed -s 's/%s/{GOBUSTER}/' > patterns.txt
- 使用自定义输入运行 gobuster。确保打开详细模式以查看存储桶详细信息
gobuster s3 --wordlist my.custom.wordlist -p patterns.txt -v
正常的示例运行如下:
PS C:\Users\firefart\Documents\code\gobuster> .\gobuster.exe s3 --wordlist .\wordlist.txt
===============================================================
Gobuster v3.2.0
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Threads: 10
[+] Wordlist: .\wordlist.txt
[+] User Agent: gobuster/3.2.0
[+] Timeout: 10s
[+] Maximum files to list: 5
===============================================================
2019/08/12 21:48:16 Starting gobuster in S3 bucket enumeration mode
===============================================================
webmail
hacking
css
img
www
dav
web
localhost
===============================================================
2019/08/12 21:48:17 Finished
===============================================================
详细模式和示例运行
PS C:\Users\firefart\Documents\code\gobuster> .\gobuster.exe s3 --wordlist .\wordlist.txt -v
===============================================================
Gobuster v3.2.0
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Threads: 10
[+] Wordlist: .\wordlist.txt
[+] User Agent: gobuster/3.2.0
[+] Verbose: true
[+] Timeout: 10s
[+] Maximum files to list: 5
===============================================================
2019/08/12 21:49:00 Starting gobuster in S3 bucket enumeration mode
===============================================================
www [Error: All access to this object has been disabled (AllAccessDisabled)]
hacking [Error: Access Denied (AccessDenied)]
css [Error: All access to this object has been disabled (AllAccessDisabled)]
webmail [Error: All access to this object has been disabled (AllAccessDisabled)]
img [Bucket Listing enabled: GodBlessPotomac1.jpg (1236807b), HOMEWORKOUTAUDIO.zip (203908818b), ProductionInfo.xml (11946b), Start of Perpetual Motion Logo-1.mp3 (621821b), addressbook.gif (3115b)]
web [Error: Access Denied (AccessDenied)]
dav [Error: All access to this object has been disabled (AllAccessDisabled)]
localhost [Error: Access Denied (AccessDenied)]
===============================================================
2019/08/12 21:49:01 Finished
===============================================================
扩展的示例运行
PS C:\Users\firefart\Documents\code\gobuster> .\gobuster.exe s3 --wordlist .\wordlist.txt -e
===============================================================
Gobuster v3.2.0
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Threads: 10
[+] Wordlist: .\wordlist.txt
[+] User Agent: gobuster/3.2.0
[+] Timeout: 10s
[+] Expanded: true
[+] Maximum files to list: 5
===============================================================
2019/08/12 21:48:38 Starting gobuster in S3 bucket enumeration mode
===============================================================
http://css.s3.amazonaws.com/
http://www.s3.amazonaws.com/
http://webmail.s3.amazonaws.com/
http://hacking.s3.amazonaws.com/
http://img.s3.amazonaws.com/
http://web.s3.amazonaws.com/
http://dav.s3.amazonaws.com/
http://localhost.s3.amazonaws.com/
===============================================================
2019/08/12 21:48:38 Finished
===============================================================