learn/phase-2/p2-w8/lesson 10
Milestone 8 · lesson 10

Directory & Content Discovery

Hands-on: brute-force hidden web paths with gobuster and ffuf using a SecLists wordlist.
Lab: The Forgotten Path

Brute-force web content to find an unlinked page, then read it.

What you'll learn

  • Explain content discovery: finding hidden paths and files a site never links to.
  • Brute-force directories and files with gobuster and ffuf using a wordlist.
  • Read status codes (200/301/403/404) and filter the noise.
  • Know the alternative tools (feroxbuster, dirb, dirsearch, wfuzz).

Directory & Content Discovery

Web servers host paths that are never linked from the homepage: /admin, /backup, /.git, /api, old config files. Content discovery (or 'dirbusting') brute-forces these with a wordlist, each hidden path is more attack surface, and the exposed ones are classic easy wins.

Read the status codes

Every guess returns an HTTP status. Learn to read them:

CodeMeaning
200Exists and readable
301/302Redirect , usually a real directory
403Forbidden , it exists, you just can't read it (very interesting)
401Needs authentication
404Not found , ignore

A 403 is not a dead end: the path is there. Never discard non-200 results.

gobuster , fast and simple

gobuster dir -u http://10.10.10.20 \
  -w /usr/share/seclists/Discovery/Web-Content/common.txt \
  -x php,txt,html          # also try these file extensions

dir mode = content discovery (the same tool does dns mode for subdomains).

ffuf , the flexible fuzzer

ffuf replaces the keyword FUZZ with each word from the list. Put FUZZ wherever you want to fuzz , path, parameter, header, or vhost.

ffuf -u http://10.10.10.20/FUZZ -w common.txt -mc 200,301,403
ffuf -u http://10.10.10.20/FUZZ -w common.txt -fs 279   # filter out the 279-byte 404 page

Key filters: -mc match codes, -fc filter codes, -fs filter by response size (to kill a soft-404 that returns 200 for everything).

Alternatives

  • feroxbuster , Rust, fast, recurses automatically into directories it finds.
  • dirb / dirsearch , classic, simple.
  • wfuzz , the flexible ancestor of ffuf.

Wordlists to use

From SecLists Discovery/Web-Content/: common.txt (quick), raft-* lists, and directory-list-2.3-medium.txt (thorough). Bigger list = more found, but slower and noisier.

Try it (terminal)

  1. gobuster dir -u http://10.10.10.20 -w /usr/share/seclists/Discovery/Web-Content/common.txt.
  2. ffuf -u http://10.10.10.20/FUZZ -w common.txt , same idea, FUZZ marks the spot.
  3. Note the finds: /admin (301), /login (200), /backup (403), /.git (301).

Why this matters

An exposed /.git leaks source code, a /backup folder leaks a database dump, and a hidden /admin is a login to attack. Content discovery is where a plain website turns into a target.

Check your understanding

5 questions

Type an answer and press Check. Grading is keyword-based and forgiving, so short answers are fine.

  1. 1

    Write a gobuster command to brute-force directories on http://10.10.10.20 using the SecLists common.txt wordlist.

  2. 2

    In ffuf, which keyword marks where each word from the wordlist is inserted into the URL?

  3. 3

    A discovered path returns 403 Forbidden. Does that path exist on the server?

  4. 4

    Name one alternative directory brute-forcing tool to gobuster and ffuf.

  5. 5

    Write an ffuf command that fuzzes the URL path of http://10.10.10.20 using common.txt.