OJ/gobuster

GitHub: OJ/gobuster

Gobuster 是一个用 Go 编写的高性能暴力破解工具,用于目录枚举、DNS 子域名发现和虚拟主机检测。

Stars: 13481 | Forks: 1560

# Gobuster [![Go Report Card](https://goreportcard.com/badge/github.com/OJ/gobuster/v3)](https://goreportcard.com/report/github.com/OJ/gobuster/v3) [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://github.com/OJ/gobuster/blob/master/LICENSE) [![Backers on Open Collective](https://opencollective.com/gobuster/backers/badge.svg)](https://opencollective.com/gobuster) [![Sponsors on Open Collective](https://opencollective.com/gobuster/sponsors/badge.svg)](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 - 修复了扩展模式以再次显示完整 URL
3.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,404
3.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安全, 云存储扫描, 子域名挖掘, 密码管理, 日志审计, 暴力破解, 目录枚举, 移动安全, 程序破解, 网络安全, 网络安全审计, 蓝队分析, 虚拟主机探测, 请求拦截, 足迹分析, 隐私保护