Introduction
Gobuster is a command-line tool for brute-forcing URIs, DNS subdomains, virtual host names, S3 buckets, and TFTP servers. Written in Go for speed and concurrency, it is a staple in web application penetration testing for discovering attack surfaces that are not linked in the visible application.
What Gobuster Does
- Brute-forces directories and files on web servers using wordlists
- Enumerates DNS subdomains through dictionary-based queries
- Discovers virtual hosts by fuzzing the Host header against a target
- Searches for open Amazon S3 buckets and Google Cloud Storage buckets
- Supports custom status code filtering, authentication headers, and proxy routing
Architecture Overview
Gobuster is written in Go and uses goroutines for massively concurrent requests. Each mode (dir, dns, vhost, s3, tftp, fuzz) implements a shared interface for target generation, request dispatch, and result processing. The wordlist reader streams entries to a worker pool, keeping memory usage constant regardless of wordlist size.
Self-Hosting & Configuration
- Single static binary with no external dependencies
- Install via Go toolchain or download prebuilt binaries from GitHub Releases
- Wordlists are provided externally; SecLists and dirb ship common options
- Configure threads, timeouts, and proxy settings via CLI flags
- Supports output to file in plain text or JSON format
Key Features
- High concurrency with configurable thread count for speed tuning
- Wildcard DNS detection to avoid false positives during subdomain enumeration
- Custom header injection and cookie support for authenticated scanning
- Pattern-based file extension brute-forcing (e.g., .php, .bak, .conf)
- Quiet mode and machine-readable JSON output for pipeline integration
Comparison with Similar Tools
- Feroxbuster — Rust-based recursive content discovery; Gobuster is non-recursive by default and lighter
- ffuf — flexible web fuzzer with more fuzzing modes; Gobuster focuses on brute-force simplicity
- dirb — classic directory scanner; Gobuster is significantly faster due to Go concurrency
- dirsearch — Python-based with smart wordlist features; Gobuster trades features for raw speed
- wfuzz — Python web fuzzer with advanced payload processing; heavier than Gobuster for simple tasks
FAQ
Q: How fast is Gobuster compared to dirb? A: Gobuster is typically 5-10x faster due to Go goroutine-based concurrency, depending on thread count and target response time.
Q: Can Gobuster do recursive scanning? A: The dir mode does not recurse by default. For recursive content discovery, consider pairing Gobuster with a wrapper script or using Feroxbuster.
Q: What wordlists should I use? A: The SecLists project provides comprehensive wordlists. Common starting points are common.txt and raft-medium-directories.txt for directory scanning.
Q: Does it support authenticated endpoints? A: Yes. You can pass cookies, authorization headers, and client certificates via CLI flags to scan authenticated areas.