Gobuster 使用手册¶
简介¶
Gobuster 是一个用 Go 语言编写的高性能目录/文件、DNS和虚拟主机枚举工具。它通过暴力破解的方式发现隐藏的目录、文件、子域名等资源。
主要特点:
速度快:Go语言编写,多线程并发
多种扫描模式:支持目录、DNS、虚拟主机、S3等
灵活配置:支持自定义字典、代理、认证等
输出友好:支持多种输出格式
安装¶
macOS¶
brew install gobuster
Linux (Debian/Ubuntu)¶
sudo apt update
sudo apt install gobuster
Linux (通用 - 使用 Go)¶
go install github.com/OJ/gobuster/v3@latest
Kali Linux¶
# Kali 预装 gobuster
gobuster version
验证安装¶
gobuster version
# 输出: Gobuster v3.x.x
基本用法¶
gobuster [模式] [选项]
可用模式:
dir- 目录/文件枚举dns- DNS子域名枚举vhost- 虚拟主机枚举s3- AWS S3存储桶枚举gcs- Google Cloud存储枚举tftp- TFTP服务器枚举
模式详解¶
dir 模式 - 目录/文件枚举¶
最常用的模式,用于发现Web应用中的隐藏目录和文件。
基本语法¶
gobuster dir -u <URL> -w <字典文件>
常用参数¶
参数 |
说明 |
示例 |
|---|---|---|
|
目标URL(必需) |
|
|
字典文件路径(必需) |
|
|
并发线程数(默认10) |
|
|
文件扩展名(逗号分隔) |
|
|
显示的状态码(默认200,204,301,302,307,401,403) |
|
|
排除的状态码 |
|
|
跳过SSL证书验证 |
|
|
自定义User-Agent |
|
|
自定义请求头 |
|
|
自定义Cookie |
|
|
HTTP基本认证用户名 |
|
|
HTTP基本认证密码 |
|
|
代理服务器 |
|
|
跟随重定向 |
|
|
显示完整URL |
|
|
不显示状态码 |
|
|
安静模式(只显示结果) |
|
|
输出到文件 |
|
|
请求超时时间 |
|
|
请求延迟 |
|
|
不显示错误信息 |
|
示例¶
1. 基本目录扫描
gobuster dir -u https://example.com -w /usr/share/wordlists/dirb/common.txt
2. 扫描指定扩展名文件
gobuster dir -u https://example.com -w wordlist.txt -x php,html,txt,js
3. 跳过SSL证书验证
gobuster dir -u https://example.com -w wordlist.txt -k
4. 排除特定状态码
gobuster dir -u https://example.com -w wordlist.txt -b 404,403
5. 增加线程数加快扫描
gobuster dir -u https://example.com -w wordlist.txt -t 50
6. 使用代理
gobuster dir -u https://example.com -w wordlist.txt -p http://127.0.0.1:8080
7. 自定义请求头
gobuster dir -u https://example.com -w wordlist.txt -H "Authorization: Bearer token123"
8. 完整扫描示例(跳过SSL + 排除404 + 多线程 + 指定扩展名)
gobuster dir -u https://example.com \
-w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt \
-x php,html,txt,js,zip,bak \
-t 50 \
-k \
-b 404 \
-e \
-o scan_results.txt
dns 模式 - DNS子域名枚举¶
用于发现目标域名的子域名。
基本语法¶
gobuster dns -d <域名> -w <字典文件>
常用参数¶
参数 |
说明 |
示例 |
|---|---|---|
|
目标域名(必需) |
|
|
字典文件(必需) |
|
|
自定义DNS服务器 |
|
|
显示IP地址 |
|
|
显示CNAME记录 |
|
|
并发线程数 |
|
示例¶
1. 基本子域名扫描
gobuster dns -d example.com -w /usr/share/wordlists/subdomains.txt
2. 显示IP和CNAME
gobuster dns -d example.com -w subdomains.txt -i -c
3. 使用自定义DNS服务器
gobuster dns -d example.com -w subdomains.txt -r 8.8.8.8
4. 多线程扫描
gobuster dns -d example.com -w subdomains.txt -t 50 -i
vhost 模式 - 虚拟主机枚举¶
用于发现同一IP上托管的不同虚拟主机。
基本语法¶
gobuster vhost -u <URL> -w <字典文件>
常用参数¶
参数 |
说明 |
示例 |
|---|---|---|
|
目标URL(必需) |
|
|
字典文件(必需) |
|
|
并发线程数 |
|
|
跳过SSL验证 |
|
示例¶
1. 基本虚拟主机扫描
gobuster vhost -u https://example.com -w vhosts.txt
2. 跳过SSL验证
gobuster vhost -u https://example.com -w vhosts.txt -k
s3 模式 - AWS S3存储桶枚举¶
用于发现公开的AWS S3存储桶。
基本语法¶
gobuster s3 -w <字典文件>
示例¶
gobuster s3 -w bucket-names.txt
gcs 模式 - Google Cloud存储枚举¶
用于发现Google Cloud存储桶。
基本语法¶
gobuster gcs -w <字典文件>
tftp 模式 - TFTP服务器枚举¶
用于枚举TFTP服务器上的文件。
基本语法¶
gobuster tftp -s <服务器IP> -w <字典文件>
常用参数¶
全局参数(适用所有模式)¶
参数 |
说明 |
|---|---|
|
并发线程数(默认10) |
|
字典文件路径 |
|
输出结果到文件 |
|
安静模式 |
|
详细输出 |
|
请求之间的延迟 |
|
不显示错误 |
|
显示帮助 |
实战示例¶
场景1:Web渗透测试 - 目录扫描¶
# 1. 快速扫描常见目录
gobuster dir -u https://target.com -w /usr/share/wordlists/dirb/common.txt -t 30 -k
# 2. 深度扫描(包含文件扩展名)
gobuster dir -u https://target.com \
-w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt \
-x php,html,txt,js,zip,bak,old,sql \
-t 50 \
-k \
-b 404,403 \
-e \
-o deep_scan.txt
# 3. 扫描特定目录下的子目录
gobuster dir -u https://target.com/admin -w wordlist.txt -t 30 -k
# 4. 扫描时添加认证头
gobuster dir -u https://target.com \
-w wordlist.txt \
-H "Authorization: Bearer YOUR_TOKEN" \
-t 30 -k
场景2:子域名枚举¶
# 1. 基本子域名扫描
gobuster dns -d target.com -w /usr/share/wordlists/subdomains-top1million-5000.txt -i
# 2. 使用多个DNS服务器
gobuster dns -d target.com \
-w subdomains.txt \
-r 8.8.8.8 \
-i -c \
-t 50 \
-o subdomains.txt
# 3. 扫描并显示详细信息
gobuster dns -d target.com -w subdomains.txt -i -c --wildcard -v
场景3:CTF比赛扫描¶
# 1. 快速发现隐藏页面
gobuster dir -u http://ctf.challenge.com \
-w /usr/share/wordlists/dirb/common.txt \
-x php,txt,html \
-t 50 \
-b 404
# 2. 查找备份文件
gobuster dir -u http://ctf.challenge.com \
-w wordlist.txt \
-x bak,old,backup,zip,tar.gz,sql \
-t 50
# 3. 扫描robots.txt和sitemap.xml中提到的路径
# 先查看这些文件,然后针对性扫描
curl http://ctf.challenge.com/robots.txt
curl http://ctf.challenge.com/sitemap.xml
场景4:API端点发现¶
# 扫描API端点
gobuster dir -u https://api.target.com \
-w /usr/share/wordlists/api-endpoints.txt \
-x json \
-t 50 \
-k \
-H "Content-Type: application/json"
字典文件推荐¶
常见字典位置(Kali/ParrotOS)¶
# 目录枚举
/usr/share/wordlists/dirb/common.txt # 小型,快速扫描
/usr/share/wordlists/dirb/big.txt # 中型
/usr/share/wordlists/dirbuster/directory-list-2.3-small.txt # 小型
/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt # 中型(推荐)
/usr/share/wordlists/dirbuster/directory-list-2.3-big.txt # 大型
# 子域名枚举
/usr/share/wordlists/subdomains-top1million-5000.txt
/usr/share/wordlists/subdomains-top1million-20000.txt
# SecLists(推荐下载)
https://github.com/danielmiessler/SecLists
下载SecLists¶
# Kali Linux
sudo apt install seclists
# 手动下载
git clone https://github.com/danielmiessler/SecLists.git /opt/SecLists
创建自定义字典¶
# 创建常见目录字典
cat > custom_dirs.txt << EOF
admin
login
dashboard
api
upload
backup
config
.git
.env
robots.txt
sitemap.xml
EOF
技巧和最佳实践¶
1. 性能优化¶
# 增加线程数(但不要太高,避免被Ban)
gobuster dir -u https://target.com -w wordlist.txt -t 50
# 设置超时时间
gobuster dir -u https://target.com -w wordlist.txt --timeout 10s
# 减少请求延迟(小心被WAF拦截)
gobuster dir -u https://target.com -w wordlist.txt --delay 0
2. 绕过WAF¶
# 使用随机User-Agent
gobuster dir -u https://target.com -w wordlist.txt \
-a "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
# 添加延迟避免触发速率限制
gobuster dir -u https://target.com -w wordlist.txt --delay 200ms
# 减少并发线程
gobuster dir -u https://target.com -w wordlist.txt -t 5
3. 组合使用¶
# 第一步:快速扫描
gobuster dir -u https://target.com -w /usr/share/wordlists/dirb/common.txt -t 30 -k -o quick.txt
# 第二步:深度扫描发现的目录
cat quick.txt | grep "Status: 200" | awk '{print $1}' | while read dir; do
gobuster dir -u "https://target.com/$dir" -w wordlist.txt -t 30 -k
done
4. 过滤和排序结果¶
# 只显示200状态码
gobuster dir -u https://target.com -w wordlist.txt -s 200
# 排除常见错误码
gobuster dir -u https://target.com -w wordlist.txt -b 404,403,500
# 保存结果并排序
gobuster dir -u https://target.com -w wordlist.txt -o results.txt
cat results.txt | sort | uniq
5. 递归扫描¶
# Gobuster本身不支持递归,但可以用脚本实现
#!/bin/bash
URL="https://target.com"
WORDLIST="wordlist.txt"
function scan_dir() {
local base_url=$1
echo "[*] Scanning: $base_url"
gobuster dir -u "$base_url" -w "$WORDLIST" -t 30 -k -q | while read line; do
if [[ $line == *"Status: 200"* ]] || [[ $line == *"Status: 301"* ]]; then
found_path=$(echo $line | awk '{print $1}')
echo "[+] Found: $found_path"
# 递归扫描新发现的目录
if [[ $line == *"Status: 301"* ]]; then
scan_dir "$base_url$found_path"
fi
fi
done
}
scan_dir "$URL"
6. 日志记录¶
# 保存详细日志
gobuster dir -u https://target.com -w wordlist.txt -o results.txt -v 2>&1 | tee scan.log
# 保存不同格式
gobuster dir -u https://target.com -w wordlist.txt -o results.json --output-format json
7. 与其他工具配合¶
# 先用nmap发现Web服务
nmap -p- -A target.com -oN nmap.txt
# 然后用gobuster扫描发现的端口
gobuster dir -u https://target.com:8443 -w wordlist.txt
# 结合ffuf进行参数模糊测试
ffuf -u https://target.com/api/FUZZ -w wordlist.txt
故障排除¶
问题1:请求过快被Ban¶
# 解决:降低并发数和增加延迟
gobuster dir -u https://target.com -w wordlist.txt -t 5 --delay 500ms
问题2:SSL证书错误¶
# 解决:跳过SSL验证
gobuster dir -u https://target.com -w wordlist.txt -k
问题3:403 Forbidden¶
# 解决:修改User-Agent和Headers
gobuster dir -u https://target.com -w wordlist.txt \
-a "Mozilla/5.0..." \
-H "X-Forwarded-For: 127.0.0.1"
问题4:扫描速度慢¶
# 解决:增加线程数(注意不要触发WAF)
gobuster dir -u https://target.com -w wordlist.txt -t 100 --timeout 5s
总结¶
Gobuster是渗透测试和CTF比赛中不可或缺的工具,掌握其各种模式和参数可以大大提高信息收集的效率。
核心要点:
选择合适的字典文件
根据目标调整线程数和延迟
注意绕过WAF和速率限制
结合其他工具进行深度挖掘
保存和分析扫描结果
学习资源:
官方文档:https://github.com/OJ/gobuster
SecLists字典:https://github.com/danielmiessler/SecLists
HackTricks:https://book.hacktricks.xyz/
示例脚本¶
gobuster dir --url http://10.201.12.107/ -w /Volumes/D/ctf/wordlist/SecLists/Discovery/Web-Content/common.txt
最后更新: 2025-10-03 版本: Gobuster v3.6+