一个用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
===============================================================

 

标签:工具分享, 资产测绘, 扫描工具