Gobuster Tutorial for Beginners: Find Hidden Directories Safely
Gobuster is a directory enumeration tool that brute-forces hidden paths, files, and DNS subdomains on web servers using wordlists.
It does not guess. It does not think. It takes a wordlist, fires requests one after another, and reports back which paths actually exist on a target server. That simplicity is what makes it genuinely useful — and also what makes it genuinely dangerous when pointed at the wrong target. In this gobuster tutorial, I am not going to romanticize the tool or dress it up as something cinematic. I am going to show you what it does, how I use it in my own lab, and what the 7 safe beginner tips are that will stop you from learning hard lessons the expensive way.
Before anything else, here is a clean overview of what directory enumeration with gobuster actually covers — and what each concept gets you:
| Concept | What it means | Why it matters for beginners |
|---|---|---|
| Directory enumeration | Brute-forcing URL paths to find hidden directories and files | Most web vulnerabilities hide in places that are not linked anywhere visible |
| Wordlist | A text file full of path names Gobuster tests one by one | The quality of your wordlist directly determines the quality of your results |
| Status codes | HTTP responses that tell you whether a path exists (200, 301, 403, etc.) | Understanding codes is what separates useful output from noise |
| File enumeration | Scanning for specific file extensions like .php, .txt, .bak | Backup files and forgotten configs are where real secrets get left behind |
| DNS mode | Brute-forcing subdomains of a target domain | Subdomains often expose staging environments, admin panels, and forgotten services |
| Lab environment | An isolated, deliberately vulnerable setup for safe practice | Running Gobuster outside your own lab is how beginners create legal and ethical problems fast |
If that table already raises a question for you — good. That is the right starting energy for a gobuster enumeration session.
Key Takeaways
- Gobuster is a command-line tool built for speed — it is written in Go and designed to enumerate fast without needing a browser or GUI
- Directory enumeration with Gobuster is one of the most practical skills in web app penetration testing — admin panels, backup files, and exposed configs do not link themselves
- The gobuster basic command is simple to learn, but understanding what the output actually means takes deliberate practice
- Gobuster file enumeration adds real depth — scanning for specific extensions like
.bak,.php, and.txtreveals things a default directory scan misses entirely - Using a bad wordlist produces bad results — gobuster directory enumeration wordlist selection is one of the most underestimated parts of the workflow
- Every gobuster enumeration session should happen inside a controlled lab — not on random websites, not on networks you do not own, not on systems without explicit permission
What Is Directory Enumeration and Why Gobuster Does It Well
What is directory enumeration in practice
If you ask me what directory enumeration actually is, I will skip the textbook version. It is the process of systematically testing URL paths on a web server to find directories and files that exist but are not publicly linked. Developers forget to remove old backups. Admin panels get added without any menu link. Config files get left in accessible locations because someone assumed “nobody would guess that path.”
Gobuster exploits that assumption methodically. It takes a wordlist — a text file full of common path names — and sends an HTTP request for each one. When the server responds with something other than a 404, Gobuster flags it. That is the entire mechanism. No magic, no exploit, just structured guessing at scale.
Why Gobuster specifically — and not just a browser
Gobuster is written in Go, which means it is fast. You can run multiple threads simultaneously, which turns a wordlist of thousands of entries into results in seconds rather than hours. That speed matters in a real pentest workflow, but it is also what makes beginners misuse it — they run it fast without thinking about what they are actually running it against.
The tool supports multiple modes: dir for directory and file enumeration, dns for subdomain brute-forcing, and vhost for virtual host discovery. For most beginners, the dir mode is where everything starts — and where this gobuster tutorial will spend most of its time.
“Security through obscurity is not a substitute for good design.”
That quote is the entire reason gobuster directory enumeration works on real targets. Hiding a path does not protect it. Gobuster proves that point efficiently and without ceremony.
How I first used Gobuster in my own lab
My first real gobuster enumeration session happened inside VMware on my HP EliteBook against a deliberately vulnerable web app I had running as a target VM. I ran the most basic command possible, used a default wordlist, and found three hidden admin directories within about thirty seconds. No fancy setup, no advanced flags — just a gobuster basic command pointed at a controlled target. The experience made something click that no article had managed to do before: web servers hold a lot more than what their front page shows you.

Gobuster Basic Command and Gobuster How to Use It
The gobuster basic command structure
The gobuster basic command for directory enumeration looks like this:
gobuster dir -u http://[target] -w /path/to/wordlist.txt
That is it. Three components: the mode (dir), the target URL (-u), and the wordlist (-w). Everything else is optional flags that refine the scan. When you know gobuster how to use it at this level, you already have a working tool — the learning curve from here is about understanding output and choosing flags deliberately.
Some flags I actually use regularly:
-t 20— sets the number of concurrent threads (default is 10; I rarely go above 30 in a lab)-x php,txt,bak,html— enables gobuster file enumeration by appending extensions to every wordlist entry-s 200,301,302,403— filters which HTTP status codes get shown in output-o results.txt— saves output to a file so I can review it without scrolling back through terminal history--timeout 10s— sets a request timeout to prevent hanging on slow servers
A gobuster directory enumeration example from my lab
Here is a realistic gobuster directory enumeration example from a test session on a deliberately vulnerable VM:
gobuster dir -u http://192.168.56.101 -w /usr/share/wordlists/dirb/common.txt -x php,txt,bak -t 20 -o lab_results.txt
That single command scanned for directories and common file extensions simultaneously, ran 20 threads for speed, and saved everything to a file. The output included a /admin directory returning a 301, a config.bak file returning a 200, and several PHP files that were not linked anywhere in the application. That is not a theoretical scenario — that is exactly what a careless developer setup looks like when a real tool hits it.
Understanding what gobuster how to use it properly means is not about memorizing flags. It is about knowing why each flag exists and what the results actually tell you.

Gobuster Tutorial: 7 Safe Beginner Tips
These are the 7 tips I would give anyone starting out with gobuster enumeration. Not theoretical advice — things I learned from actual lab sessions and a few embarrassing early mistakes.
Tip 1: Only run Gobuster against targets you own or have permission to test
This is not a disclaimer I am dropping in to cover myself legally. This is the single most important principle behind any gobuster tutorial that takes the subject seriously. Running gobuster directory enumeration against a web server you do not own — even a small one, even “just to test,” even because the site looks abandoned — is unauthorized access in most jurisdictions. It does not matter that Gobuster does not modify anything. Scanning without permission is still illegal.
I run every Gobuster session either against deliberately vulnerable VMs in my own VMware lab, against platforms explicitly designed for this like Hack The Box or TryHackMe, or as part of an authorized engagement with written scope. That is the complete list. There is no situation where curiosity justifies scanning a random website.
Tip 2: Choose your gobuster directory enumeration wordlist carefully
The gobuster directory enumeration wordlist is the engine behind every scan. Run a bad wordlist and you get bad results — not because the tool failed, but because you never asked the right questions. Most beginners grab the biggest wordlist they can find and assume more entries means better coverage. That logic does not hold.
My approach is to match the wordlist to the technology stack. A PHP application and a Node.js application do not share the same common file paths. Using a PHP-focused wordlist on a Laravel app gives better signal than spraying a generic 500,000-entry list and drowning in false negatives. The SecLists repository on GitHub is the best starting point I have found — it contains curated wordlists organized by purpose, technology, and use case.
For most beginner lab sessions, /usr/share/wordlists/dirb/common.txt or /usr/share/seclists/Discovery/Web-Content/common.txt are solid starting points for a gobuster directory enumeration example without overwhelming noise.
Tip 3: Understand HTTP status codes before interpreting results
This is where most beginners get tripped up in any gobuster tutorial. They run a scan, see a wall of results, and either panic at the volume or assume everything flagged is a vulnerability. Neither response is useful. What you need is a working understanding of what each status code actually means:
- 200 OK — the path exists and is accessible. This is what you are looking for.
- 301 / 302 — the path exists and redirects somewhere else. Follow the redirect manually.
- 403 Forbidden — the path exists but access is denied. Still interesting — it confirms the directory is there.
- 404 Not Found — the path does not exist. Gobuster hides these by default unless you tell it otherwise.
- 500 Internal Server Error — the path triggered something unexpected on the server. Worth noting.
In a real gobuster directory enumeration example, a 403 on /admin tells me the directory exists even though I cannot access it directly. That is not nothing — that is a finding worth documenting and investigating further with other techniques.
Kali Linux Tools Tutorial: 9 Tools Beginners Should Learn First
Tip 4: Use gobuster file enumeration with targeted extensions
Gobuster file enumeration is what separates a surface-level scan from a genuinely useful one. The -x flag appends file extensions to every entry in your wordlist, so instead of testing /backup, Gobuster also tests /backup.php, /backup.txt, /backup.bak, and /backup.html simultaneously.
The extensions I include almost every time in a lab session: .php, .html, .txt, .bak, .old, .zip, .log, and .conf. That last group is where real finds happen. Developers leave backup copies of configuration files, old versions of scripts, forgotten ZIP archives of application code, and log files exposing internal paths and database errors. Gobuster file enumeration catches all of those in the same scan pass.
The tradeoff is that adding extensions multiplies the number of requests. A wordlist of 5,000 entries with five extensions becomes 25,000 requests. Keep threads reasonable and set a timeout so you do not hammer a slow lab target into uselessness.
Tip 5: Control your thread count and do not run aggressive scans in a lab
The -t flag sets how many concurrent threads Gobuster runs. The default is 10. I have seen beginners push this to 100 or higher because “faster is better.” In a controlled lab with a deliberately vulnerable VM, that logic sometimes holds. Against anything resembling a real or semi-real target, it creates noise, triggers rate limiting or IDS alerts, and potentially destabilizes the target server.
In my own VMware lab I rarely go above 30 threads even when the target is isolated. The habit matters. If you learn to run scans at a controlled, thoughtful pace in practice, you carry that discipline into real scenarios where recklessness has consequences. Speed is not the goal in a gobuster command for directory enumeration session — useful, clean results are.
Tip 6: Always save your output and review it manually
Running a gobuster enumeration scan and watching the results scroll by without saving them is a waste of a good scan. Use the -o flag to write output to a file every single time. Then review that file properly — not just skimming for 200s, but looking at every flagged path in context.
A 403 on /api/v1 combined with a 200 on /api/v1/docs tells a different story than either result would alone. A 200 on /uploads is interesting, but a 200 on /uploads/shell.php is something else entirely. Output files let you cross-reference, annotate, and build a proper picture of what a target exposes — which is the actual skill being developed here, not just running the tool.
I keep my scan output organized by target and date in my lab notes. It is one of those habits that sounds boring until you need to reference a scan from two weeks ago during a follow-up session and realize you did not save anything.
Tip 7: Treat Gobuster output as a starting point, not a conclusion
This is the most important mindset shift in this entire gobuster tutorial. Gobuster tells you what exists. It does not tell you what is vulnerable, what is exploitable, what is intentional, or what is actually dangerous. That analysis is your job.
A /admin directory that returns 200 might be a protected panel, an empty folder, a test page, or the login screen for the most poorly secured backend you have ever seen. You do not know until you investigate manually. A .bak file might contain database credentials or it might contain a blank template someone forgot to delete. Directory enumeration with gobuster opens doors. What is behind each door requires you to look, think, and verify — not assume.
That distinction separates someone who runs a tool from someone who understands how to use it in a real gobuster how to use workflow.
“Tools amplify your capabilities, but they do not replace understanding. That applies directly to Gobuster. The tool does not think. You do.”
For a structured testing methodology, I recommend the OWASP Web Security Testing Guide
That applies directly to Gobuster. The tool does not think. You do.

Gobuster Command for Directory Enumeration: My Lab Workflow
How my VMware setup makes gobuster enumeration actually useful
I run all my Gobuster sessions from inside VMware on my HP EliteBook, which has 32 GB RAM after an upgrade — plenty for running both Parrot OS and a target VM simultaneously without things grinding to a halt. Parrot OS is my daily driver in the lab. I use Kali Linux for specific tools and scenarios where it fits better, but gobuster how to use it properly is something I have always done from Parrot because the workflow integrates cleanly with the rest of my testing environment.
My target machines are intentionally vulnerable distros running inside separate VMs — isolated from my main network and from each other. That isolation means I can run gobuster file enumeration without worrying about traffic bleeding into real network infrastructure or causing collateral noise. The segmentation is not optional for me. It is the baseline that makes every scan session clean and controlled.
Why I run ProtonVPN even in a lab context
My main router is a Cudy WR3000 (available on Amazon) running ProtonVPN through a WireGuard Secure Core setup. Even when I am doing internal lab work, keeping traffic isolated and routed through a clean privacy layer is a habit I do not drop. Privacy hygiene does not have an “off switch” in my setup just because the target is inside a VM.
If you use any Proton service for your lab — VPN, Drive for storing scan outputs, Pass for managing test credentials — the Proton Unlimited bundle covers all of it under one subscription. It is almost always the more practical move than subscribing to individual services separately.
Proton Unlimited bundles ProtonVPN, Proton Mail, Proton Drive, and Proton Pass under one subscription. If you already use Proton services in your lab, the bundle is usually the smarter move.
The gobuster command for directory enumeration I run most in my lab
For most beginner lab sessions, this is the gobuster command for directory enumeration I actually reach for first:
gobuster dir -u http://[target-ip] -w /usr/share/seclists/Discovery/Web-Content/common.txt -x php,txt,bak,html -t 25 -o scan_output.txt
That covers gobuster file enumeration across common extensions, runs at a controlled thread count, and saves everything for manual review afterward. It is not the most aggressive scan possible. That is intentional. Aggressive scans in a lab teach you bad habits. Controlled scans build the discipline that transfers to real work.
What Is Aircrack NG? 7 Brutal WiFi Testing Truths Beginners Learn Too Late
What Gobuster Finds That Beginners Do Not Expect
The paths that should not exist but always do
Every time I run a proper gobuster directory enumeration example session on a vulnerable target, something shows up that the developer clearly forgot about. Not always a critical vulnerability — sometimes just a reminder that web servers are messier than they look from the front end. Common finds include:
- /admin or /administrator — login panels with no link in the navigation
- /backup or /backups — directories containing ZIP archives of the entire application
- /config.php.bak or /wp-config.php.old — configuration file copies left accessible in plaintext
- /debug or /test — development pages that expose stack traces, environment variables, or internal paths
- /uploads — file upload directories that may contain user-submitted content, including uploaded shells
- /api/v1 — undocumented API endpoints with no authentication requirement
None of these are exotic. All of them appear regularly in lab environments and in real-world bug bounty reports. The reason gobuster enumeration matters is that none of these paths link themselves — a standard browser crawl or a manual review of the front end would miss all of them.
When gobuster file enumeration changes the entire picture
The jump from plain directory scanning to gobuster file enumeration is where the results go from “interesting” to “actually actionable.” A directory scan might find /backup returning a 403. Adding .zip to the extension list might find /backup.zip returning a 200 with a full download of the application source code. Same base path, completely different security implication.
That is why I always run file enumeration alongside directory enumeration in my lab sessions. The extensions .bak, .old, .zip, and .log consistently surface findings that a directory-only scan leaves completely invisible.
For a structured deep-dive into web application testing beyond just Gobuster, Penetration Testing: A Hands-On Introduction to Hacking is a well-constructed reference that covers the full workflow — available on Amazon.

Common Gobuster Mistakes Beginners Make
Running it without understanding the output
The most common mistake in any gobuster tutorial context is treating the tool like a verdict machine. You run the scan, see a list of paths, and conclude that every flagged entry is a vulnerability. That is not how it works. Gobuster finds paths that exist. What those paths mean, whether they are accessible, whether the content is sensitive, and whether they represent an actual security issue — that requires manual investigation every single time.
A 200 on /admin might be a login page requiring strong authentication with no known bypass. A 403 on /internal might be enforced at the server level and completely unexploitable. Directory enumeration with gobuster is reconnaissance, not exploitation. Treat it accordingly.
Using the wrong wordlist for the wrong target
I already covered wordlist selection in the tips section, but the mistake is common enough to repeat here. A WordPress-focused wordlist on a custom Python backend produces mostly noise. A generic top-1000 wordlist on a large Laravel application misses most of what matters. The gobuster directory enumeration wordlist is not an afterthought — it is half the scan quality right there.
Take five minutes to look at the target stack before choosing a wordlist. Framework, language, server technology — even a rough guess improves your wordlist selection meaningfully.
Ignoring OPSEC even in a lab
Running Gobuster generates a significant amount of HTTP traffic in a short period. In a real engagement, that traffic is logged, analyzed, and potentially alerting a security team. Even in a lab environment, building habits around controlled scanning — managing thread counts, using timeouts, saving and reviewing output properly — creates the discipline that matters when the stakes are real. OPSEC is not a toggle you switch on when things get serious. It is the baseline you maintain from the beginning.

Frequently Asked Questions
What is Gobuster and what is it used for?
Gobuster is an open-source command-line tool used for directory enumeration, file enumeration, and DNS subdomain brute-forcing. It works by taking a wordlist and sending HTTP requests to a target web server for each entry, reporting back which paths actually exist based on server response codes. It is used in web application penetration testing to find hidden directories, forgotten backup files, exposed admin panels, and undocumented endpoints that are not linked anywhere in the visible application.
What is the gobuster basic command for directory enumeration?
The gobuster basic command for directory enumeration is: gobuster dir -u http://[target] -w /path/to/wordlist.txt. The dir mode activates directory and file scanning, -u sets the target URL, and -w specifies the wordlist file. Optional flags like -x for file extensions, -t for thread count, and -o for saving output refine the scan further.
What wordlist should I use for gobuster directory enumeration?
The best starting point for a gobuster directory enumeration wordlist is the SecLists repository, specifically Discovery/Web-Content/common.txt or technology-specific lists depending on the target stack. For Kali Linux and Parrot OS, /usr/share/wordlists/dirb/common.txt is available by default and works well for basic lab sessions. Match the wordlist to the target technology for better results — a generic list on a framework-specific app produces significant noise and misses many relevant paths.
How does gobuster file enumeration work?
Gobuster file enumeration works by using the -x flag to append file extensions to every entry in your wordlist. For example, running -x php,txt,bak means Gobuster tests /backup, /backup.php, /backup.txt, and /backup.bak as separate requests. This surfaces backup files, configuration copies, log files, and forgotten scripts that a directory-only scan completely misses. Extensions like .bak, .old, .zip, and .log are particularly useful for finding sensitive files left on servers unintentionally.
Is Gobuster legal to use?
Gobuster itself is a legal, open-source tool. Whether your use of it is legal depends entirely on what you point it at. Running gobuster enumeration against web servers you own, systems inside your own lab environment, or authorized penetration testing targets with written scope is legal and ethical. Running it against any system without explicit permission — regardless of how harmless the intent seems — constitutes unauthorized access in most jurisdictions. The tool does not create the legal boundary. Your actions and permissions do.
What does directory enumeration with Gobuster actually find?
Directory enumeration with Gobuster finds URL paths on a web server that exist but are not publicly linked. Common findings include hidden admin login panels, backup directories, old configuration files, debug pages left from development, exposed upload directories, undocumented API endpoints, and files with extensions like .bak, .old, or .zip containing sensitive data. None of these constitute vulnerabilities on their own — they are findings that require manual investigation to determine actual security impact.
What is the difference between gobuster dir mode and dns mode?
The dir mode in Gobuster performs directory enumeration by brute-forcing URL paths on a web server — finding hidden directories and files. The dns mode performs subdomain brute-forcing by testing potential subdomain names against a target domain. Both modes use wordlists, but they serve completely different phases of reconnaissance. For most beginners starting a gobuster tutorial, the dir mode is the correct starting point before moving into DNS and virtual host enumeration.
Ethical Hacking Distro Cluster
- Gobuster Tutorial for Beginners: Find Hidden Directories Safely
- What Is Aircrack NG? 7 Brutal WiFi Testing Truths Beginners Learn Too Late 🕳️
- Kali Linux Tools Tutorial: 9 Tools Beginners Should Learn First
- What Are Ethical Hackers? A Beginner’s Guide to Defensive Hackers 🔍
- DAST vs Penetration Testing: 5 Critical Differences Explained 🧪
- Is Kali Linux Safe to Download? 7 Mistakes Beginners Make 🧨
- Best Linux Distro for Hacking: How to Choose the Right One for Your Lab 🧭
- Kali Linux vs Ubuntu for Ethical Hacking: Do You Really Need Kali? 🤔
- Penetration Testing Kali Linux: 7 Beginner Mistakes That Break Lab Discipline 🧠
- Pentesting Linux Distros for Beginners: What No One Warns You About 🧠
- Kali Linux for Beginners vs Parrot OS: Which One Is Safer to Start With? 🧭
- Debian vs Arch for Security Labs: Stability Tradeoffs Explained 🧩
- How to Choose the Right Ethical Hacking Distro for Your Lab 🧭
- BlackArch Linux vs Kali: Which One Should You Choose? 🗡️
- BlackArch vs Parrot OS: Which Ethical Hacking Distro Fits Your Workflow? 🧨
- Kali vs Parrot OS: Which Linux Distro Wins for Ethical Hacking?
- Kali Purple vs Kali Linux vs Parrot OS: What’s the Real Difference? 🧪
- Why Kali Is Not Enough: 10 Ethical Hacking Distros With Very Different Purposes 🧩
- Parrot OS Ethical Hacking Lab Setup: 9 Safe Steps That Actually Work 🧪🦜
- 8 Brutal Ethical Hacking Beginner Mistakes (Parrot OS Lab) 🔓
- Best Browser for Parrot OS: Firefox, LibreWolf or Mullvad? 💥
Some links in this article are affiliate links. If you use them, I may earn a small commission — at no extra cost to you. I only recommend tools I’ve actually tested inside my own cybersecurity lab. Read the full disclaimer.
In many cases, these links unlock better deals than you’ll find on your own.
No paid reviews. No sponsored opinions. Just real testing and real setups.
If you decide to use them, you’re not just getting a discount — you’re helping keep this lab running.

