跳转至

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

常用参数

参数 说明 示例
-u, --url 目标 URL(必需) -u http://example.com
-w, --wordlist 字典文件路径(必需) -w wordlist.txt
-t, --threads 线程数(默认 10) -t 50
-x, --extensions 文件扩展名 -x php,html,txt
-o, --output 输出结果到文件 -o results.txt
-s, --status-codes 指定状态码 -s 200,204,301,302,307,401,403
-b, --status-codes-blacklist 排除的状态码 -b 404,403
-k, --no-tls-validation 跳过 SSL 证书验证 -k
-a, --useragent 自定义 User-Agent -a "Mozilla/5.0"
-c, --cookies 添加 Cookie -c "session=abc123"
-H, --headers 自定义 HTTP 头 -H "Authorization: Bearer token"
-r, --follow-redirect 跟随重定向 -r
-e, --expanded 显示完整 URL -e
-n, --no-status 不显示状态码 -n
-q, --quiet 安静模式 -q
-z, --no-progress 不显示进度 -z
-d, --debug 调试模式 -d
--timeout HTTP 超时时间 --timeout 10s
--delay 请求延迟 --delay 1s
-p, --proxy 代理设置 -p http://127.0.0.1:8080

实用示例

基础目录扫描:

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

常用参数

参数 说明 示例
-d, --domain 目标域名(必需) -d example.com
-w, --wordlist 字典文件路径(必需) -w subdomains.txt
-t, --threads 线程数 -t 50
-o, --output 输出结果到文件 -o dns-results.txt
-r, --resolver 自定义 DNS 服务器 -r 8.8.8.8
-c, --show-cname 显示 CNAME 记录 -c
-i, --show-ips 显示 IP 地址 -i
--timeout 超时时间 --timeout 5s
--wildcard 强制继续(即使存在通配符) --wildcard

实用示例

基础子域名扫描:

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

常用参数

参数 说明 示例
-u, --url 目标 URL(必需) -u http://example.com
-w, --wordlist 字典文件路径(必需) -w vhosts.txt
-t, --threads 线程数 -t 50
-o, --output 输出结果到文件 -o vhosts.txt
-k, --no-tls-validation 跳过 SSL 验证 -k
-H, --headers 自定义 HTTP 头 -H "Authorization: Bearer token"
--domain 附加域名 --domain example.com

实用示例

基础虚拟主机扫描:

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

常用参数

参数 说明 示例
-w, --wordlist 字典文件路径(必需) -w buckets.txt
-t, --threads 线程数 -t 50
-o, --output 输出结果到文件 -o s3-results.txt
--max-files 列出的最大文件数 --max-files 100

实用示例

基础 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月

免责声明: 本文档仅供学习和合法安全测试使用。使用者需自行承担所有法律责任。