OJ/gobuster
GitHub: OJ/gobuster
Gobuster 是一个用 Go 编写的高性能暴力破解工具,用于目录枚举、DNS 子域名发现和虚拟主机检测。
Stars: 13481 | Forks: 1560
# Gobuster
[](https://goreportcard.com/report/github.com/OJ/gobuster/v3) [](https://github.com/OJ/gobuster/blob/master/LICENSE) [](https://opencollective.com/gobuster) [](https://opencollective.com/gobuster)
## 💻 简介
**Gobuster** 是一个使用 Go 语言编写的高性能目录/文件、DNS 和虚拟主机暴力破解工具。它专为安全专业人员和渗透测试人员设计,旨在实现快速、可靠且易于使用。
## ✨ 功能特性
- 🚀 **高性能**:具有可配置并发性的多线程扫描
- 🔍 **多种模式**:支持目录、DNS、虚拟主机、S3、GCS、TFTP 和 Fuzzing 模式
- 🛡️ **专注于安全**:专为渗透测试和安全评估而构建
- 🐳 **Docker 支持**:以 Docker 容器形式提供
- 🔧 **可扩展**:支持基于模式的扫描和自定义字典
## 🎯 Gobuster 能做什么?
- **Web 目录/文件枚举**:发现 Web 服务器上隐藏的目录和文件
- **DNS 子域名发现**:查找支持通配符的子域名
- **虚拟主机检测**:识别目标 Web 服务器上的虚拟主机
- **云存储枚举**:发现公开的 Amazon S3 和 Google Cloud Storage 存储桶
- **TFTP 文件发现**:查找 TFTP 服务器上的文件
- **自定义 Fuzzing**:具有可自定义参数的灵活 Fuzzing
## 🚀 快速开始
```
# 安装 gobuster
go install github.com/OJ/gobuster/v3@latest
# 基本目录枚举
gobuster dir -u https://example.com -w /path/to/wordlist.txt
# DNS 子域名枚举
gobuster dns -do example.com -w /path/to/wordlist.txt
# 虚拟主机发现
gobuster vhost -u https://example.com -w /path/to/wordlist.txt
# S3 bucket 枚举
gobuster s3 -w /path/to/bucket-names.txt
```
## 📦 安装
### 快速安装(推荐)
```
go install github.com/OJ/gobuster/v3@latest
```
**要求**:Go 1.24 或更高版本
### 其他安装方式
#### 使用二进制发布版
从[发布页面](https://github.com/OJ/gobuster/releases)下载预编译的二进制文件。
#### 使用 Docker
```
# 拉取最新镜像
docker pull ghcr.io/oj/gobuster:latest
# 在 Docker 中运行 gobuster
docker run --rm -it ghcr.io/oj/gobuster:latest dir -u https://example.com -w /usr/share/wordlists/dirb/common.txt
```
#### 从源码构建
```
git clone https://github.com/OJ/gobuster.git
cd gobuster
go mod tidy
go build
```
### 安装故障排除
如果遇到问题:
- 确保已安装 Go 1.24+ 版本:`go version`
- 检查你的 `$GOPATH` 和 `$GOBIN` 环境变量
- 确认 `$GOPATH/bin` 包含在你的 `$PATH` 中
## 🎯 使用方法
Gobuster 采用基于模式的方法。每种模式专为特定的枚举任务而设计:
```
gobuster [mode] [options]
```
### 获取帮助
```
gobuster help # Show general help
gobuster help [mode] # Show help for specific mode
gobuster [mode] --help # Alternative help syntax
```
### 📊 可用模式
#### 🌐 目录模式 (`dir`)
枚举 Web 服务器上的目录和文件。
**基本用法:**
```
gobuster dir -u https://example.com -w wordlist.txt
```
**高级选项:**
```
# 带文件扩展名
gobuster dir -u https://example.com -w wordlist.txt -x php,html,js,txt
# 带自定义 Header 和 Cookie
gobuster dir -u https://example.com -w wordlist.txt -H "Authorization: Bearer token" -c "session=value"
# 显示响应长度
gobuster dir -u https://example.com -w wordlist.txt -l
# 按状态码过滤
gobuster dir -u https://example.com -w wordlist.txt -s 200,301,302
```
#### 🔍 DNS 模式 (`dns`)
通过 DNS 解析发现子域名。
**基本用法:**
```
gobuster dns -do example.com -w wordlist.txt
```
**高级选项:**
```
# 使用自定义 DNS 服务器
gobuster dns -do example.com -w wordlist.txt -r 8.8.8.8:53
# 增加线程以加快扫描
gobuster dns -do example.com -w wordlist.txt -t 50
```
#### 🏠 虚拟主机模式 (`vhost`)
发现 Web 服务器上的虚拟主机。
**基本用法:**
```
gobuster vhost -u https://example.com --append-domain -w wordlist.txt
```
#### ☁️ S3 模式 (`s3`)
枚举 Amazon S3 存储桶。
**基本用法:**
```
gobuster s3 -w bucket-names.txt
```
**带调试输出:**
```
gobuster s3 -w bucket-names.txt --debug
```
#### 🖥️ TFTP 模式 (`tftp`)
枚举 TFTP 服务器上的文件。
**基本用法:**
```
gobuster tftp -s 10.0.0.1 -w wordlist.txt
```
#### ☁️ GCS 模式 (`gcs`)
枚举 Google Cloud Storage 存储桶。
**基本用法:**
```
gobuster gcs -w bucket-names.txt
```
**带调试输出:**
```
gobuster gcs -w bucket-names.txt --debug
```
#### 🔧 Fuzz 模式 (`fuzz`)
使用 `FUZZ` 关键字进行自定义 Fuzzing。
**基本用法:**
```
gobuster fuzz -u https://example.com?FUZZ=test -w wordlist.txt
```
**高级示例:**
```
# Fuzz URL 参数
gobuster fuzz -u https://example.com?param=FUZZ -w wordlist.txt
# Fuzz Header
gobuster fuzz -u https://example.com -H "X-Custom-Header: FUZZ" -w wordlist.txt
# Fuzz POST 数据
gobuster fuzz -u https://example.com -d "username=admin&password=FUZZ" -w passwords.txt
```
## 💡 常见用例
### Web 应用程序安全测试
```
# 综合目录枚举
gobuster dir -u https://target.com -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x php,html,js,txt,asp,aspx,jsp
# API 端点发现
gobuster dir -u https://api.target.com -w /usr/share/wordlists/dirb/common.txt -x json
# 管理面板发现
gobuster dir -u https://target.com -w admin-panels.txt -s 200,301,302,403
```
### DNS 侦察
```
# 综合子域名枚举
gobuster dns -do target.com -w /usr/share/wordlists/dnsrecon/subdomains-top1mil-5000.txt -t 50
```
### 云存储评估
```
# 带模式的 S3 bucket 枚举
gobuster s3 -w company-names.txt -v
# GCS bucket 枚举
gobuster gcs -w company-names.txt -v
```
## 🔧 故障排除
### 常见问题
#### “Permission Denied” 或 “Access Denied”(权限被拒绝)
- 尝试使用 `-t` 标志减少线程数
- 使用 `--delay` 在请求之间添加延迟
- 使用 `-a` 标志指定不同的 User-Agent
#### “Connection Timeout”(连接超时)
- 使用 `--timeout` 标志增加超时时间
- 针对较慢的目标减少线程数
- 检查你的互联网连接
#### “No Results Found”(未找到结果)
- 验证目标 URL 是否可访问
- 尝试不同的字典
- 使用 `-s` 标志检查状态码过滤设置
### 性能问题
#### 扫描速度慢
- 使用 `-t` 标志增加线程数(但要注意不要压垮目标)
- 使用更小、更具针对性的字典
## 🎯 最佳实践
### 安全测试准则
1. 在测试任何目标之前,**务必获得适当的授权**
2. **从低线程数开始**,以避免服务器过载
3. 针对目标技术**使用合适的字典**
4. **遵守速率限制**,并在需要时实施延迟
5. **监控你的网络流量**以避免被发现
### 字典选择
- **对于 Web 应用程序**:使用针对特定技术的字典(PHP、ASP.NET 等)
- **对于 API**:关注常见的 API 端点和版本控制模式
- **对于 DNS**:使用包含常见模式的子域名字典
- **对于云存储**:使用公司/品牌特定的模式
### 输出管理
```
# 保存结果到文件
gobuster dir -u https://example.com -w wordlist.txt -o results.txt
# 使用静默模式获取整洁输出
gobuster dir -u https://example.com -w wordlist.txt -q
```
## 📚 其他资源
### 推荐字典
- **SecLists**:[https://github.com/danielmiessler/SecLists](https://github.com/danielmiessler/SecLists)
- **FuzzDB**:[https://github.com/fuzzdb-project/fuzzdb](https://github.com/fuzzdb-project/fuzzdb)
- **Seclists DNS**:[https://github.com/danielmiessler/SecLists/tree/master/Discovery/DNS](https://github.com/danielmiessler/SecLists/tree/master/Discovery/DNS)
**祝 Hack 愉快!🚀**
_记住:务必负责任地进行测试,并确保已获得适当授权。_
# 更新日志
3.8.2
## 3.8.2 - 修复了扩展模式以再次显示完整 URL3.8.1
## 3.8.1 - 修复了扩展模式显示重复条目的问题3.8
## 3.8 - 由 @0xyy66 添加 `exclude-hostname-length` 标志以动态调整 `exclude-length` - 修复了查询参数 Fuzzing - 在 `dir` 模式下添加了 `--force` 标志,以便在预检查出错时继续执行3.7
## 3.7 - 使用新的 cli 库 - 由于新的 cli 库,增加了更多短选项 - 更用户友好的错误信息 - 清理 DNS 模式 - 在 DNS 模式下将 `show-cname` 重命名为 `check-cname` - 移除了 `verbose` 标志并引入了 `debug` - `version` 命令现在也会显示一些构建变量以提供更多信息 - 切换到另一个 pkcs12 库以支持使用 SHA256 HMAC 且由 openssl3 生成的 p12 文件 - 字典中的注释(以 # 开头的字符串)不再被忽略 - 在 vhost 模式下,如果可能忘记了 `--append-domain` 开关,会发出警告 - 允许在 vhost 模式下排除状态码和长度 - 添加了 automaxprocs 以便在有 CPU 限制的 docker 中使用 - 启用 debug 时记录 HTTP 请求 - 允许在 fuzz 模式下 Fuzzing Host 头 - 当输出被重定向时自动禁用进度输出 - 修复了使用 `--no-progress` 运行时的额外特殊字符问题 - 当在 vhost 模式下使用代理和基于 HTTP 的 URL 时发出警告,因为这可能无法按预期工作 - 添加了 `interface` 和 `local-ip` 参数以指定 HTTP 请求的出站接口 - 添加了对 TLS renegotiation 的支持 - 由 @acammack 修复了带模式的进度问题 - 由 @acammack 修复了备份发现问题 - 支持 DNS 服务器上的 TCP 协议 - 添加了对 URL 查询参数的支持3.6
## 3.6 - 添加 Wordlist offset 参数以跳过字典中的 x 行 - 防止在 dir 模式下构建 URL 时出现双斜杠 - 允许在 `--exclude-length` 上使用多个值和范围 - DNS 暴力破解上的 `no-fqdn` 参数,用于禁用系统搜索域的使用。如果你配置了一些搜索域,这应该会加快运行速度。[https://github.com/OJ/gobuster/pull/418](https://github.com/OJ/gobuster/pull/418)3.5
## 3.5 - 允许在状态码和状态码黑名单中使用范围。例如:200,300-305,4043.4
## 3.4 - 启用 TLS1.0 和 TLS1.1 支持 - 添加 TFTP 模式以搜索 TFTP 服务器上的文件3.3
## 3.3 - 支持 TLS 客户端证书 / mtls - 支持从文件加载扩展名 - 支持 Fuzzing POST body、HTTP headers 和 basic auth - 新选项:不对 header 名称进行规范化处理3.2
## 3.2 - 使用 Go 1.19 - 以正确的方式使用 context - 移除 wildcard 标志(DNS 模式除外) - 彩色输出 - 超时时重试 - Google Cloud bucket 枚举 - 修复 nil reference 错误3.1
## 3.1 - 枚举公开的 AWS S3 存储桶 - Fuzzing 模式 - 指定 HTTP 方法 - 添加了对模式(patterns)的支持。你现在可以指定一个包含模式的文件,这些模式将逐个应用于每个词,每行一个。其中的 `{GOBUSTER}` 会被替换为当前的字典项。请谨慎使用,因为这可能会导致发出的请求数量大幅增加。 - 原本分配给 proxy 的简写 `p` 标志现在由 pattern 标志使用3.0
## 3.0 - 新的 CLI 选项,严格区分模式(`-m` 已被移除!) - 性能优化和更好的连接处理 - 能够枚举 vhost 名称 - 提供自定义 HTTP headers 的选项标签:DNS爆破, EVTX分析, EVTX分析, Go语言, PoC, S3桶枚举, Web安全, 云存储扫描, 子域名挖掘, 密码管理, 日志审计, 暴力破解, 目录枚举, 移动安全, 程序破解, 网络安全, 网络安全审计, 蓝队分析, 虚拟主机探测, 请求拦截, 足迹分析, 隐私保护