Gobuster 使用文档¶
简介¶
Gobuster 是一个用 Go 语言编写的高性能目录/文件暴力破解工具,常用于 Web 安全测试和渗透测试中。它支持多种扫描模式,包括目录扫描、DNS 子域名枚举和虚拟主机发现。
安装¶
macOS 安装¶
使用 Homebrew(推荐):
brew install gobuster
使用 Go:
go install github.com/OJ/gobuster/v3@latest
验证安装:
gobuster version
Linux 安装¶
Debian/Ubuntu:
sudo apt update
sudo apt install gobuster
使用 Go:
go install github.com/OJ/gobuster/v3@latest
基本用法¶
Gobuster 有四种主要模式:
dir- 目录/文件暴力破解模式dns- DNS 子域名枚举模式vhost- 虚拟主机发现模式s3- AWS S3 存储桶枚举模式
1. 目录/文件扫描模式 (dir)¶
基础命令¶
gobuster dir -u http://target.com -w /path/to/wordlist.txt
常用参数¶
参数 |
说明 |
示例 |
|---|---|---|
|
目标 URL(必需) |
|
|
字典文件路径(必需) |
|
|
线程数(默认 10) |
|
|
文件扩展名 |
|
|
输出结果到文件 |
|
|
指定状态码 |
|
|
排除的状态码 |
|
|
跳过 SSL 证书验证 |
|
|
自定义 User-Agent |
|
|
添加 Cookie |
|
|
自定义 HTTP 头 |
|
|
跟随重定向 |
|
|
显示完整 URL |
|
|
不显示状态码 |
|
|
安静模式 |
|
|
不显示进度 |
|
|
调试模式 |
|
|
HTTP 超时时间 |
|
|
请求延迟 |
|
|
代理设置 |
|
实用示例¶
基础目录扫描:
gobuster dir -u http://example.com -w /usr/share/wordlists/dirb/common.txt
扫描特定文件扩展名:
gobuster dir -u http://example.com -w wordlist.txt -x php,html,js,txt
增加线程数加速扫描:
gobuster dir -u http://example.com -w wordlist.txt -t 50
显示完整 URL:
gobuster dir -u http://example.com -w wordlist.txt -e
保存结果到文件:
gobuster dir -u http://example.com -w wordlist.txt -o output.txt
跳过 SSL 验证:
gobuster dir -u https://example.com -w wordlist.txt -k
使用代理:
gobuster dir -u http://example.com -w wordlist.txt -p http://127.0.0.1:8080
添加自定义请求头:
gobuster dir -u http://example.com -w wordlist.txt -H "Authorization: Bearer token123"
扫描特定状态码:
gobuster dir -u http://example.com -w wordlist.txt -s 200,204,301,302,307
排除特定状态码:
gobuster dir -u http://example.com -w wordlist.txt -b 404,403
跟随重定向:
gobuster dir -u http://example.com -w wordlist.txt -r
添加 Cookie:
gobuster dir -u http://example.com -w wordlist.txt -c "PHPSESSID=abc123; token=xyz"
设置延迟(防止被封):
gobuster dir -u http://example.com -w wordlist.txt --delay 500ms
2. DNS 子域名枚举模式 (dns)¶
基础命令¶
gobuster dns -d target.com -w /path/to/wordlist.txt
常用参数¶
参数 |
说明 |
示例 |
|---|---|---|
|
目标域名(必需) |
|
|
字典文件路径(必需) |
|
|
线程数 |
|
|
输出结果到文件 |
|
|
自定义 DNS 服务器 |
|
|
显示 CNAME 记录 |
|
|
显示 IP 地址 |
|
|
超时时间 |
|
|
强制继续(即使存在通配符) |
|
实用示例¶
基础子域名扫描:
gobuster dns -d example.com -w subdomains.txt
显示 IP 地址:
gobuster dns -d example.com -w subdomains.txt -i
显示 CNAME 记录:
gobuster dns -d example.com -w subdomains.txt -c
使用自定义 DNS 服务器:
gobuster dns -d example.com -w subdomains.txt -r 8.8.8.8
增加线程数:
gobuster dns -d example.com -w subdomains.txt -t 100
保存结果:
gobuster dns -d example.com -w subdomains.txt -o subdomains-found.txt
绕过通配符检测:
gobuster dns -d example.com -w subdomains.txt --wildcard
3. 虚拟主机发现模式 (vhost)¶
基础命令¶
gobuster vhost -u http://target.com -w /path/to/wordlist.txt
常用参数¶
参数 |
说明 |
示例 |
|---|---|---|
|
目标 URL(必需) |
|
|
字典文件路径(必需) |
|
|
线程数 |
|
|
输出结果到文件 |
|
|
跳过 SSL 验证 |
|
|
自定义 HTTP 头 |
|
|
附加域名 |
|
实用示例¶
基础虚拟主机扫描:
gobuster vhost -u http://example.com -w vhosts.txt
使用特定域名:
gobuster vhost -u http://192.168.1.100 -w vhosts.txt --domain example.com
跳过 SSL 验证:
gobuster vhost -u https://example.com -w vhosts.txt -k
4. S3 存储桶枚举模式 (s3)¶
基础命令¶
gobuster s3 -w /path/to/wordlist.txt
常用参数¶
参数 |
说明 |
示例 |
|---|---|---|
|
字典文件路径(必需) |
|
|
线程数 |
|
|
输出结果到文件 |
|
|
列出的最大文件数 |
|
实用示例¶
基础 S3 扫描:
gobuster s3 -w bucket-names.txt
保存结果:
gobuster s3 -w bucket-names.txt -o s3-found.txt
常用字典文件¶
macOS/Linux 系统自带¶
SecLists(推荐安装):
# 安装 SecLists
git clone https://github.com/danielmiessler/SecLists.git
# 目录扫描字典
SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt
SecLists/Discovery/Web-Content/common.txt
SecLists/Discovery/Web-Content/big.txt
# 子域名字典
SecLists/Discovery/DNS/subdomains-top1million-5000.txt
SecLists/Discovery/DNS/subdomains-top1million-20000.txt
Kali Linux 自带:
/usr/share/wordlists/dirb/common.txt
/usr/share/wordlists/dirb/big.txt
/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
macOS Homebrew 安装 SecLists:
brew install seclists
实战场景示例¶
场景 1:Web 应用目录扫描¶
# 基础扫描
gobuster dir -u http://target.com -w common.txt
# 深度扫描(多扩展名)
gobuster dir -u http://target.com -w medium.txt -x php,html,js,txt,bak
# 使用代理(Burp Suite)
gobuster dir -u http://target.com -w wordlist.txt -p http://127.0.0.1:8080
# 认证后扫描
gobuster dir -u http://target.com -w wordlist.txt -c "session=abc123"
场景 2:子域名枚举¶
# 标准子域名扫描
gobuster dns -d target.com -w subdomains-top1million-5000.txt -i
# 使用多个 DNS 服务器
gobuster dns -d target.com -w subdomains.txt -r 8.8.8.8 -r 1.1.1.1
# 显示详细信息
gobuster dns -d target.com -w subdomains.txt -i -c
场景 3:API 端点发现¶
# 扫描 API 端点
gobuster dir -u http://api.target.com -w api-endpoints.txt -e
# JSON API 扫描
gobuster dir -u http://api.target.com/v1 -w wordlist.txt -x json
场景 4:虚拟主机发现¶
# 基于 IP 的虚拟主机扫描
gobuster vhost -u http://192.168.1.100 -w vhosts.txt --domain target.com
# HTTPS 虚拟主机扫描
gobuster vhost -u https://target.com -w vhosts.txt -k
性能优化建议¶
线程数调整¶
# 低速网络或目标服务器性能较差
gobuster dir -u http://target.com -w wordlist.txt -t 10
# 高速网络和稳定服务器
gobuster dir -u http://target.com -w wordlist.txt -t 50
# 本地测试或性能极好的环境
gobuster dir -u http://target.com -w wordlist.txt -t 100
添加延迟防止被封¶
# 添加延迟
gobuster dir -u http://target.com -w wordlist.txt --delay 100ms
# 减少线程并添加延迟
gobuster dir -u http://target.com -w wordlist.txt -t 5 --delay 500ms
超时设置¶
# 设置较长超时(针对慢速服务器)
gobuster dir -u http://target.com -w wordlist.txt --timeout 30s
# 设置较短超时(快速扫描)
gobuster dir -u http://target.com -w wordlist.txt --timeout 3s
结果分析¶
状态码含义¶
状态码 |
含义 |
|---|---|
200 |
成功访问 |
301 |
永久重定向 |
302 |
临时重定向 |
401 |
需要认证 |
403 |
禁止访问(但路径存在) |
404 |
未找到 |
500 |
服务器错误 |
重点关注¶
200 - 直接访问的资源
301/302 - 可能存在的目录或重定向
401/403 - 存在但需要权限的资源(重点测试)
500 - 可能存在漏洞的端点
常见问题¶
1. 扫描速度慢¶
解决方案:
增加线程数:
-t 50使用更小的字典
检查网络连接
2. 被目标服务器封禁¶
解决方案:
减少线程数:
-t 5添加延迟:
--delay 500ms更换 User-Agent:
-a "Mozilla/5.0"使用代理:
-p http://proxy:port
3. SSL 证书错误¶
解决方案:
gobuster dir -u https://target.com -w wordlist.txt -k
4. 通配符域名干扰¶
解决方案:
gobuster dns -d target.com -w wordlist.txt --wildcard
安全与合规¶
重要提醒¶
⚠️ 警告:仅在授权情况下使用
只对您拥有或获得明确授权的目标进行扫描
未经授权的扫描可能违反法律
遵守道德黑客准则和渗透测试规范
在生产环境使用前先在测试环境验证
合法使用场景¶
✅ 自己的网站或应用 ✅ 获得书面授权的渗透测试项目 ✅ Bug Bounty 项目(遵守规则) ✅ 安全研究和学习(使用合法靶场)
高级技巧¶
1. 递归扫描¶
# 发现目录后手动递归
gobuster dir -u http://target.com -w wordlist.txt -o results.txt
# 然后对发现的目录再次扫描
gobuster dir -u http://target.com/admin -w wordlist.txt
2. 组合使用¶
# 先做子域名枚举
gobuster dns -d target.com -w subdomains.txt -o subdomains-found.txt
# 对发现的子域名做目录扫描
for subdomain in $(cat subdomains-found.txt | awk '{print $1}'); do
gobuster dir -u http://$subdomain -w wordlist.txt -o scan-$subdomain.txt
done
3. 使用正则表达式过滤¶
# 结合 grep 过滤结果
gobuster dir -u http://target.com -w wordlist.txt | grep -E "Status: (200|301|302)"
4. 自动化脚本¶
#!/bin/bash
TARGET="http://example.com"
WORDLIST="wordlist.txt"
OUTPUT_DIR="results"
mkdir -p $OUTPUT_DIR
# 目录扫描
gobuster dir -u $TARGET -w $WORDLIST -o $OUTPUT_DIR/dir-scan.txt
# 常见扩展名扫描
gobuster dir -u $TARGET -w $WORDLIST -x php,html,js,txt -o $OUTPUT_DIR/files-scan.txt
echo "扫描完成,结果保存在 $OUTPUT_DIR 目录"
总结¶
Gobuster 是一个功能强大且高效的目录和子域名暴力破解工具。合理使用各种参数和技巧,可以大大提高渗透测试的效率。
核心要点¶
✅ 选择合适的字典文件
✅ 根据目标调整线程数和延迟
✅ 使用适当的文件扩展名
✅ 关注 403 和 401 状态码
✅ 结合其他工具进行深度测试
⚠️ 始终在授权范围内使用
参考资源¶
文档版本: 1.0
最后更新: 2025年9月
免责声明: 本文档仅供学习和合法安全测试使用。使用者需自行承担所有法律责任。