Gobuster · Go 编写的高速目录 / DNS / 虚拟主机爆破工具 · 渗透测试枚举部署与使用全指南
项目仓库: https://github.com/OJ/gobuster
开源协议:Apache-2.0 · 语言:Go(要求 Go 1.24+) · 容器化:官方 ghcr 镜像 · 模式:dir / dns / vhost / s3 / gcs / tftp / fuzz
1 项目简介
Gobuster 是一个用 Go
编写的高性能、灵活的爆破(brute-forcing)工具,面向安全专业人员与渗透测试人员。它以“快速、可靠、易用”为设计目标,可对
Web 目录 / 文件、DNS 子域名、虚拟主机、云存储桶、TFTP
服务器进行枚举,并支持基于 FUZZ 关键字的自定义
fuzzing。
1.1 核心信息一览
| 项目项 | 内容 |
|---|---|
| 项目名称 | Gobuster |
| 仓库地址 | github.com/OJ/gobuster |
| 项目定位 | 目录 / DNS / vhost / 云存储 / TFTP 爆破枚举工具 |
| 开源协议 | Apache-2.0 |
| 语言 | Go(v3 要求 Go 1.24+) |
| 安装方式 | go install、Release 二进制、Docker、源码构建 |
| Docker 镜像 | ghcr.io/oj/gobuster:latest |
| 默认端口 | 无网络服务(本地命令行工具) |
| 系统入口 | gobuster <mode> [options] |
1.2 适用场景
- Web 目录与文件枚举:发现 Web 服务器上隐藏的目录与备份文件。
- DNS 子域名发现:批量解析字典中的子域名,支持通配符。
- 虚拟主机发现:识别目标 Web 服务器上的 vhost。
- 云存储枚举:发现暴露的 Amazon S3 / Google Cloud Storage 存储桶。
- TFTP 文件发现、自定义参数 / 头 / POST 体 fuzzing。
1.3 能力边界(官方口径)
- Gobuster 是枚举工具,本身不做漏洞利用;它只基于字典告诉你“哪些路径 / 域名存在”。
- 官方最佳实践:测试前务必获得授权;从低线程开始,避免压垮目标;尊重速率限制,必要时加延时。
- 字典需要自备,官方推荐 SecLists、FuzzDB 等公开字典集。
2 功能特性
- 高性能:多线程扫描,并发数可配置(
-t)。 - 多模式:
dir(目录)、dns(子域名)、vhost(虚拟主机)、s3(AWS S3)、gcs(GCS)、tftp、fuzz(自定义 fuzz)。 - 目录模式增强:支持扩展名
-x php,html,js,txt、自定义头-H、Cookie-c、响应长度-l、按状态码过滤-s。 - DNS 模式:支持自定义 DNS 服务器
-r 8.8.8.8:53、TCP DNS、通配符处理。 - fuzz 模式:在 URL、Header、POST 体中用
FUZZ关键字占位,可 fuzz Host 头、POST body、HTTP basic auth。 - 模式化 CLI:v3
起各模式严格分离(
gobuster dir/gobuster dns…),帮助用gobuster help [mode]。 - Docker 支持:官方容器镜像
ghcr.io/oj/gobuster。 - 输出管理:
-o保存结果、-q安静模式、颜色输出、debug 日志。
3 官方界面预览
Gobuster
是终端工具,运行时逐行输出命中的条目(路径、状态码、大小),例如
dir 模式输出类似
https://example.com/admin (Status: 200) [Size: 1234]。用
gobuster help 查看总览。
4 官方跳转链接汇总
| 类别 | 链接 | 说明 |
|---|---|---|
| 仓库主页 | https://github.com/OJ/gobuster | 源码、Issues、Releases |
| Releases | github.com/OJ/gobuster/releases | 预编译二进制 |
| Docker 镜像 | ghcr.io/oj/gobuster | 容器镜像 |
| 许可证 | LICENSE | Apache-2.0 |
| 推荐字典 SecLists | github.com/danielmiessler/SecLists | 官方推荐字典 |
| FuzzDB | github.com/fuzzdb-project/fuzzdb | 官方推荐字典 |
| Open Collective | opencollective.com/gobuster | 捐赠支持 |
5 前置要求与服务器配置
5.1 软件前提
- Go 1.24 或更高(使用
go install时):go version确认版本。 - Docker(可选):使用官方镜像时需要 Docker。
- 字典文件:自备或下载 SecLists 等。
- 安装后确认
$GOPATH/bin在$PATH中。
5.2 硬件与建议
- 普通家用机或 VPS 即可;扫描速度主要取决于网络带宽与目标并发承受能力。
- 不要用过高线程压垮目标;官方建议从
-t较小值开始。
5.3 端口与资源
- 工具本身不监听端口;它作为客户端向外发起 HTTP / DNS 请求。
6 方式一:Docker 一键运行(推荐)
docker pull ghcr.io/oj/gobuster:latest
docker run --rm -it ghcr.io/oj/gobuster:latest \
dir -u https://example.com -w /usr/share/wordlists/dirb/common.txt容器内已带工具;把字典目录挂载进去即可使用自己的字典。
7 方式二:go install / 源码构建
7.1 go install(推荐快速安装)
go install github.com/OJ/gobuster/v3@latest
gobuster help7.2 源码构建
git clone https://github.com/OJ/gobuster.git
cd gobuster
go mod tidy
go build8 常用模式与参数说明
| 命令 | 用途 |
|---|---|
gobuster dir -u URL -w wordlist |
目录 / 文件枚举 |
gobuster dir ... -x php,html,js |
追加扩展名 |
gobuster dir ... -H "Name: Value" -c "session=x" |
自定义头与 Cookie |
gobuster dns -do example.com -w wordlist |
DNS 子域名枚举 |
gobuster dns ... -r 8.8.8.8:53 -t 50 |
自定义 DNS 与线程 |
gobuster vhost -u URL --append-domain -w wordlist |
虚拟主机发现 |
gobuster s3 -w bucket-names.txt |
S3 存储桶枚举 |
gobuster gcs -w bucket-names.txt |
GCS 存储桶枚举 |
gobuster tftp -s 10.0.0.1 -w wordlist |
TFTP 文件枚举 |
gobuster fuzz -u URL?FUZZ=test -w wordlist |
自定义 fuzz |
-o results.txt |
结果写文件 |
-q |
安静输出 |
9 常用运维命令
- 查看总帮助:
gobuster help - 查看某模式帮助:
gobuster help dir - 检查版本:
gobuster version - 目录枚举并保存:
gobuster dir -u https://target.com -w dirs.txt -o results.txt - DNS
枚举:
gobuster dns -do target.com -w subs.txt -t 50 - 更新(go install):重新执行
go install github.com/OJ/gobuster/v3@latest。
10 常见故障排查
- Permission Denied / Access Denied:降低线程
-t,用--delay在请求间加延时,用-a换 User-Agent。 - Connection Timeout:增大
--timeout,降低线程,检查网络。 - No Results Found:确认目标 URL 可访问,换字典,检查
-s状态码过滤是否过严。 - 扫描很慢:增大
-t(注意不要压垮目标),换更小更精准的字典。 - go install 找不到命令:确认 Go
1.24+、
$GOPATH/bin在$PATH。
11 风险与合规说明
- 合法性:Gobuster 只能在你拥有或已获书面授权的目标上使用;未经授权对他人网站 / 域名进行爆破属于违法行为。
- 许可证:Apache-2.0,可自由使用与再分发。
- 对目标的影响:高并发爆破可能触发目标 WAF / 限流 / 封禁 IP,官方建议低线程、加延时、尊重速率限制。
- 本文整理自官方 README,命令与参数以官方仓库最新说明为准;不包含 star 数等动态数据。