gobuster
Directory/file brute force and DNS/vhost enumeration tool.
Quickstart
gobuster dir -u https://target.com -w wordlist.txt
gobuster dns -d target.com -w wordlist.txt
gobuster vhost -u https://target.com -w wordlist.txt
Core Concepts
| Concept |
Description |
| Modes |
dir, dns, vhost, fuzz, s3, gcs, tftp |
| Wordlist |
Dictionary for brute forcing |
| Extensions |
Append extensions to words |
Syntax
gobuster <mode> [options]
Options
Global
| Option |
Description |
-w <file> |
Wordlist |
-t <n> |
Threads (default 10) |
-o <file> |
Output file |
-q |
Quiet mode |
-v |
Verbose |
--no-color |
Disable colors |
--delay <ms> |
Delay between requests |
Dir Mode
| Option |
Description |
-u <url> |
Target URL |
-x <ext> |
Extensions (.php,.txt,.bak) |
-s <codes> |
Show status codes |
-b <codes> |
Hide status codes |
-r |
Follow redirects |
-k |
Skip TLS verify |
-c <cookie> |
Cookie string |
-H <header> |
Custom header |
-a <ua> |
User agent |
-P <proxy> |
Proxy URL |
-n |
No status codes |
-e |
Print full URLs |
-f |
Append / to dirs |
--exclude-length <n> |
Exclude by length |
DNS Mode
| Option |
Description |
-d <domain> |
Target domain |
-r <resolver> |
DNS resolver |
-c |
Show CNAME |
-i |
Show IPs |
VHost Mode
| Option |
Description |
-u <url> |
Target URL |
--append-domain |
Append domain to words |
--exclude-length <n> |
Exclude by length |
Recipes
Directory Brute Force
gobuster dir -u https://target.com -w /usr/share/wordlists/dirb/common.txt
gobuster dir -u https://target.com -w wordlist.txt -x php,txt,html,bak
gobuster dir -u https://target.com -w wordlist.txt -x php,asp,aspx,jsp,txt,bak,old,zip
gobuster dir -u https://target.com -w wordlist.txt -t 50
gobuster dir -u https://target.com -w wordlist.txt -r
gobuster dir -u https://target.com -w wordlist.txt -b 404,403
gobuster dir -u https://target.com -w wordlist.txt -P http://127.0.0.1:8080
DNS Enumeration
gobuster dns -d target.com -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt
gobuster dns -d target.com -w wordlist.txt -i
gobuster dns -d target.com -w wordlist.txt -c
gobuster dns -d target.com -w wordlist.txt -r 8.8.8.8
gobuster dns -d target.com -w wordlist.txt -i -c -o subs.txt
Virtual Host Discovery
gobuster vhost -u https://10.10.10.10 -w wordlist.txt
gobuster vhost -u https://10.10.10.10 -w wordlist.txt --append-domain -d target.com
gobuster vhost -u https://10.10.10.10 -w wordlist.txt --exclude-length 301
With Authentication
gobuster dir -u https://target.com -w wordlist.txt -U admin -P password
gobuster dir -u https://target.com -w wordlist.txt -c "session=abc123"
gobuster dir -u https://target.com -w wordlist.txt -H "Authorization: Bearer token"
Filtering Results
gobuster dir -u https://target.com -w wordlist.txt -s 200
gobuster dir -u https://target.com -w wordlist.txt -b 404,403
gobuster dir -u https://target.com -w wordlist.txt --exclude-length 1234
gobuster dir -u https://target.com -w wordlist.txt -b 404,403,500
Pattern Matching
echo '{GOBUSTER}/admin' > patterns.txt
gobuster dir -u https://target.com -w wordlist.txt -p patterns.txt
Output & Parsing
gobuster dir -u https://target.com -w wordlist.txt -o results.txt
gobuster dir -u https://target.com -w wordlist.txt -e -o full_urls.txt
cat results.txt | grep "Status: 200" | awk '{print $1}'
gobuster dir -u https://target.com -w wordlist.txt | \
grep "Status:" | while read line; do
echo "{\"path\":\"$(echo $line | awk '{print $1}')\",\"status\":\"$(echo $line | awk '{print $3}')\"}"
done
Troubleshooting
| Issue |
Solution |
| Too slow |
Increase -t threads |
| Rate limited |
Add --delay, reduce -t |
| SSL errors |
Add -k flag |
| Wildcard DNS |
Use --wildcard for dns mode |
References