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

Deeper Web Recon: Crawling, Params & Screenshots

Hands-on: crawl with katana, pull archives with gau, find params with arjun, screenshot with gowitness.
Lab: Ghost of an Endpoint

Pull historical URLs to find a dead-looking endpoint that still responds.

What you'll learn

  • Crawl a site and pull historical URLs to find endpoints you'd never see by hand.
  • Extract endpoints and secrets from JavaScript files.
  • Discover hidden HTTP parameters to fuzz.
  • Fingerprint the stack and WAF, and triage many hosts fast with screenshots.

Deeper Web Recon: Crawling, Params & Screenshots

Directory brute-forcing (last lesson) finds paths from a wordlist. But the juiciest endpoints are rarely in a wordlist , they are buried in JavaScript, remembered by web archives, or hidden behind parameters no form shows. This lesson is the modern web-recon toolkit that surfaces them.

Crawl the app , katana

A crawler follows every link, form and script to map real endpoints. katana understands modern JavaScript apps (SPAs):

katana -u http://10.10.10.20            # crawl and print endpoints
katana -u http://10.10.10.20 -jc        # also parse linked JavaScript

Alternatives: hakrawler, gospider, Burp Suite's crawler.

Mine the archives , gau & waybackurls

The Wayback Machine and other archives remember URLs a site used years ago , old endpoints and parameters that are often still live and unpatched.

gau example.com | sort -u                # get all archived URLs, de-duplicated
waybackurls example.com                  # same idea, Wayback-only

Look for ?id=, ?file=, ?url=, /api/, .bak, admin paths , classic bug entry points.

Read the JavaScript , LinkFinder

Modern front-ends hard-code API paths (and sometimes tokens) into their JS bundles. LinkFinder extracts them:

linkfinder -i http://10.10.10.20/js/app.min.js -o cli

Also grep JS for secrets: API keys, tokens, internal hostnames. What the site calls in the background is often not linked anywhere visible.

Find hidden parameters , arjun

An endpoint may accept parameters that appear in no form or doc, ?debug=true, ?admin=1, ?user_id=. arjun brute-forces them, and hidden params are a top source of IDOR, SQLi and access-control bugs.

arjun -u http://10.10.10.20/api/v1/user

Fingerprint the target , whatweb & wafw00f

Know what you are attacking, and what defends it:

whatweb http://10.10.10.20     # tech stack: server, language, CMS, frameworks
wafw00f http://10.10.10.20     # is there a WAF (Cloudflare, Akamai) in front?
wpscan --url http://10.10.10.20   # if it's WordPress: version, plugins, users

A WAF changes your approach (slower, evasive); a known CMS points to CMS-specific tools.

Triage at scale , gowitness

With hundreds of live hosts, you can't visit each. gowitness (or aquatone/eyewitness) screenshots them all so you can eyeball the gallery for logins, dashboards and default pages.

gowitness scan --file live-hosts.txt

Putting it together

Crawl + archives + JS give you a big pile of URLs. Filter to live ones with httpx, pull parameters with arjun, then feed the interesting endpoints into your fuzzers and nuclei.

Try it (terminal)

  1. katana -u http://10.10.10.20 , crawl the app.
  2. gau example.com , historical URLs with old params.
  3. arjun -u http://10.10.10.20/api/v1/user , hidden parameters.
  4. wafw00f http://10.10.10.20 and whatweb http://10.10.10.20 , fingerprint.
  5. gowitness scan , screenshot the live hosts.

Why this matters

The bug is usually on the endpoint nobody browses to, the archived one, the JavaScript-referenced API, the undocumented parameter. Deeper web recon is how you find those before anyone else does.

Check your understanding

5 questions

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

  1. 1

    Which tool crawls a modern web app (parsing JavaScript and following forms) to map its endpoints?

  2. 2

    Which tool pulls a site's historical URLs from the Wayback Machine / web archives?

  3. 3

    Which tool brute-forces hidden HTTP parameters (like ?debug=1) that aren't shown in forms?

  4. 4

    You have 500 live hosts. Which tool screenshots them all so you can eyeball the interesting ones?

  5. 5

    Which tool detects whether a site sits behind a WAF such as Cloudflare?