Week 02 · Recon Mountain ULTIMATE · 7 days × 180 min

Passive → active → rank → spider → secrets.

Ultimate pipeline: subfinder → dnsx → httpx → naabu → katana/gau → LinkFinder/SecretFinder → trufflehog → diff. Every block pins exact flags, THM tasks, YouTube searches, H1 patterns. New hosts outrank old.

ultimate pipelinediff dailyticks bbv2-02
🎉 Week complete — all boxes ticked. Move to Week 03.
Real 180 min · passive-first or ban
  1. 0:00–0:20 Recall: passive sources + ASN + takeover types

    List crt.sh, subfinder passive, amass passive, assetfinder, gau archive. Then read Can-I-Take-Over-XYZ fingerprints.json — Heroku + S3 + GitHub Pages rows ONLY + bgp.he.net + asnlookup.com — 1 ASN lookup demo ONLY. Dangling types: CNAME/NS/MX/A.

    Why this matters ▼

    What it is

    Cert logs + ASN + acquisitions = scope you did not know existed. NXDOMAIN vs 404 decides takeover (Azure needs NXDOMAIN).

    Gap

    ASN + alt-TLD + reverse-WHOIS or log it.

    Search

    YT: subdomain enumeration subfinder amass bug bounty. X: subdomain takeover min_faves:100 lang:en.

    Done-when

    Sources + 4 dangling types + 3 fingerprints cold.

  2. 0:20–1:10 Passive harvest: crt.sh + 3 tools → sort -u (VDP)

    Run subfinder -d target -all -recursive -o subs.txt + amass enum -passive -d target + assetfinder --subs-only target + crt.sh %25.target CSV. sort -u → passive-day1.txt. THM subdomainenumeration T2 (crt.sh/Google site:) + T3 (dnsrecon/sublist3r) READ ONLY. No brute, no resolve yet.

    Why this matters ▼

    Tools

    subfinder -dL scope.txt -o subs.txt, amass intel -asn AS12345 for range expansion.

    H1

    H1 #665398 Starbucks Azure + #953719 Acronis Webflow — both passive finds. Extract CNAME + proof shape.

    Done-when

    Deduped list + count logged.

  3. 1:10–2:00 Fingerprint study + H1 PoCs (read, no claiming)

    Read 0xpatrik subdomain-takeover-basics — CNAME table + claim matrix ONLY + H1 #665398 (dig CNAME → NXDOMAIN → azurewebsites deploy) + #953719 (proxy-ssl.webflow 404 → paid-plan claim, screenshots F940499) ONLY + H1 #2567048 Smule SendGrid (claim to mark busy) thread ONLY.

    Why this matters ▼

    Pattern

    dig CNAME → service 404/NXDOMAIN → fingerprints.json match → benign claim file only. Never destructive.

    Done-when

    3 PoC shapes noted + candidates flagged, nothing claimed.

  4. 2:00–2:35 ASN expand + acquisitions + alt-TLD sweep plan

    Expand via amass intel -asn + bgp.he.net range ONLY. Check Crunchbase/Wikipedia acquisitions. Plan alt-TLD + reverse-WHOIS per HackTricks External Recon § ASN/WHOIS ONLY. THM passiverecon T2–T4 (whois/dig/shodan) ONLY.

    Why this matters ▼

    What it is

    Company recon beats domain recon. Sibling + alt-TLD = Week 11 infra wins preview.

    Done-when

    ASN ranges + 1 acquisition pivot + sweep list.

  5. 2:35–3:00 Passive-before-brute test + gap log

    Explain why brute before passive burns scope + triggers WAF. Log gaps (amass intel? alt-TLD tool?).

    Why this matters ▼

    Done-when

    Recited + passive-day1.txt archived.

Hunter mindset: Map company, not domain.
Real 180 min · brute the remaining namespace only
  1. 0:00–0:15 Wordlist choice: Assetnote vs commonspeak vs namelist

    Compare SecLists Discovery/DNS subdomains-top1million-5000.txt + namelist.txt rows ONLY. Rule: VDP = top-5000 first, never million-scale day 2. Note Assetnote best-dns-wordlist existence.

    Why this matters ▼

    What it is

    Right-sized list beats biggest list. 5000 + passive gaps = 95% hosts.

    Done-when

    List chosen + reason logged.

  2. 0:15–1:05 Brute + dnsx resolve + httpx rank (VDP, in-scope)

    Brute remaining namespace (small list). dnsx -l subs.txt -a -cname -resp -silent -o resolved.txt + wildcard check dnsx -wildcard row ONLY. httpx -l resolved.txt -td -cdn -title -status-code -silent -o live.txt. THM gobusterthebasics T5 DNS + T6 vhost + furthernmap T3 (-sS/-sV) READ ONLY.

    Why this matters ▼

    Tools

    dnsx kills wildcards; httpx -td -cdn -title -tech-detect -status-code ranks. Order: scope → naming (admin/dev/staging) → tech → newness → no-WAF.

    YT

    Search httpx naabu ranking live hosts (@NahamSec/@STOKfm).

    Done-when

    resolved.txt + live.txt with status/title/tech.

  3. 1:05–2:00 Naming-signal top-10 + dev/staging writeup

    Extract top-10 (dev/stage/admin/internal/api/mobile). Read pentester.land 1 dev/staging bug — note the hostname pattern ONLY + X search JS secrets bug bounty skim for naming thread.

    Why this matters ▼

    Pattern

    Staging/dev = missing auth, verbose errors, old code. Naming beats tech for day-2 priority.

    Done-when

    Top-10 + 1 writeup pattern logged.

  4. 2:00–2:35 WAF/CDN column + screenshots narrowed + outliers

    Add WAF/no-WAF via wafw00f single-host + httpx -cdn ONLY. Screenshot top-10 only (not 500 hosts). Flag outliers: odd ports, old titles, huge content-length.

    Why this matters ▼

    What it is

    No-WAF + new + staging = Week 03–05 targets. WAF hosts = filter-evasion tax.

    Done-when

    Ranked table with WAF + outlier flags.

  5. 2:35–3:00 Ranking-order test + gaps

    Recite: scope → naming → tech → newness → no-WAF. Triage gaps.

    Why this matters ▼

    Done-when

    Recited + live.txt archived.

Hunter mindset: Newness beats familiarity.
Real 180 min · naabu for breadth, nmap for depth
  1. 0:00–0:15 naabu vs nmap roles + httpx -td fields

    State: naabu = fast SYN breadth, nmap -sV/-sC = depth on interesting only. Check naabu README top-ports + exclude-cdn rows ONLY + nmap -sSVC pattern (no live run). httpx fields: title/tech/cdn/status.

    Why this matters ▼

    What it is

    Scan breadth fast, fingerprint deep rarely. Full-port nmap on VDP day 3 = noise + rate-limit.

    Done-when

    Roles + command shapes cold.

  2. 0:15–1:05 naabu top-1000 + nmap -sV on interesting + whatweb (VDP)

    Run naabu -l live.txt -top-ports 1000 -exclude-cdn -o ports.txt. nmap -sV -sC -p<open> on ≤3 interesting hosts ONLY per THM furthernmap T3 (-sS/-sV/-O) + T11 NSE ONLY. whatweb -a 3 + wafw00f -i live.txt (gentle).

    Why this matters ▼

    Stacks

    8889 Presto / 8761 Eureka / swagger / :8080 actuator = open-data gold. Odd port + old title = priority.

    Done-when

    ports.txt + 3 service banners + WAF map.

  3. 1:05–2:00 Tech clusters → bug-class expectations + CVE candidates

    Cluster by HackTricks web fingerprint table ONLY (PHP/Node/Python/Java/Ruby/Go/.NET). Log versions → NVD + CISA KEV search (1 candidate, no exploit). Read pentester.land 1 exposed-panel/version→CVE case — note version string ONLY.

    Why this matters ▼

    What it is

    Version today = CVE match tomorrow. Log host|product|version|source.

    Done-when

    Clusters + 1 CVE candidate logged, no exploit.

  4. 2:00–2:35 Shortlist interesting hosts (≤5) + nuclei tech dry-run (safe)

    Pick ≤5 (staging + no-WAF + odd-port + old-stack). nuclei -u host -t http/misconfiguration/ -rate-limit 5 dry-run on 1 host ONLY (no vuln templates on live).

    Why this matters ▼

    Common mistake

    Full nuclei vuln scan on VDP. CUT — misconfig dry-run only.

    Done-when

    Shortlist + 1 dry-run log.

  5. 2:35–3:00 naabu vs nmap test + gaps

    Recite roles + your shortlist rationale. Triage gaps.

    Why this matters ▼

    Done-when

    Recited + ports + map archived.

Hunter mindset: Tech fingerprint → bug-class expectation.
Real 180 min · every input = trust question
  1. 0:00–0:15 katana vs gau vs hakrawler + arjun purpose

    State roles, then check katana -d 5 -js-crawl + gau --subs + Arjun -m GET,POST flag rows ONLY.

    Why this matters ▼

    What it is

    katana = live crawl, gau = archive URLs, Arjun = hidden params. Together = input inventory.

    Done-when

    Roles + flags cold.

  2. 0:15–1:05 katana -jc -xhr + gau + ffuf api/v1/FUZZ + arjun 1 run (shortlist hosts)

    Run katana -u host -d 5 -js-crawl -o katana.txt + gau --subs host | httpx on ≤3 hosts. ffuf -u host/api/v1/FUZZ -w common.txt -mc 200,301 + arjun -u host/api -m GET,POST 1 run. THM contentdiscovery T2–T3 (robots/ffuf) + ffuf T5 (param FUZZ) ONLY.

    Why this matters ▼

    YT

    Search katana gau js secrets trufflehog (@STOKfm/@NahamSec).

    Done-when

    katana.txt + gau URLs + params + api versions.

  3. 1:05–2:00 Hidden vs duplicate vs alternate params + Swagger check

    Classify found params. Probe /swagger/v1, /v3/api-docs, /api-docs, /openapi.json (4 paths, GET only). Read pentester.land 1 param-miner + 1 api-docs exposure — note param name + endpoint ONLY.

    Why this matters ▼

    Pattern

    Swagger = under-tested surface (Week 09–10). Hidden params = Week 03 mass-assignment fuel.

    Done-when

    Param classes + 4-path Swagger result logged.

  4. 2:00–2:35 Param + API-version inventory for target

    Build inventory: param → method → auth → reflection (Day-3 trace link). Note v1 vs v2 gaps for Week 10.

    Why this matters ▼

    Done-when

    Inventory sheet saved.

  5. 2:35–3:00 Param-type test + gaps

    Recite hidden/duplicate/alternate with 1 example each. Triage gaps.

    Why this matters ▼

    Done-when

    Recited + inventory archived.

Hunter mindset: Inputs today = IDOR/SQLi/XSS tomorrow.
Real 180 min · JS is the map thieves leave behind
  1. 0:00–0:15 LinkFinder vs SecretFinder vs manual regex roles

    State roles, then check LinkFinder -i -o cli -d 1 + SecretFinder -i -o cli usage ONLY. Regexes: AKIA[0-9A-Z]{16}, eyJhbGciOi, BEGIN PRIVATE KEY, x-amz-credential.

    Why this matters ▼

    What it is

    LinkFinder = endpoints, SecretFinder = keys, grep = fetch/axios/process.env + internal URLs. Triage, never exfiltrate.

    Done-when

    Roles + 4 regexes cold.

  2. 0:15–1:05 Extract JS → endpoints + secrets triage (3 largest bundles)

    List JS URLs (katana + Sources). Run LinkFinder + grep fetch/axios + SecretFinder on 3 largest. Check source maps (.js.map) + /package.json exposure (GET only). THM walkinganapplication Debugger/Network revisit.

    Why this matters ▼

    YT/X

    YT: katana gau js secrets trufflehog. X: JS secrets bug bounty.

    H1

    JS AWS-key takeover pattern: validate via aws sts get-caller-identity read-only or report redacted — Week 09 deep-dives, today triage only.

    Done-when

    Endpoints + triaged secrets + map/source-map result.

  3. 1:05–2:00 JS-secret + source-map writeups (key → impact)

    Read PATT API Key Leaks 1 AWS-key case — validation steps ONLY + pentester.land 1 source-map/bundle exposure — note exposed path ONLY.

    Why this matters ▼

    Pattern

    Key without impact = info. Key + sts/data read = bounty. Partial redaction always.

    Done-when

    2 triage notes with validation plan (no live validation beyond safe read).

  4. 2:00–2:35 Internal URLs + Swagger-from-JS inventory

    Flag internal/staging URLs + API hosts from JS. Re-probe Swagger paths from Day 4 with JS-found hosts. Log excessive-data candidates for Week 10.

    Why this matters ▼

    Done-when

    Internal-URL list + Swagger delta logged.

  5. 2:35–3:00 3-secret-types test + gaps

    Name 3 secret shapes + where each hides in JS. Triage gaps.

    Why this matters ▼

    Done-when

    Recited + JS triage sheet archived.

Hunter mindset: Triage fast, validate read-only, redact.
Real 180 min · fastest critical = exposed .env, no exploit needed
  1. 0:00–0:15 Dork operators + trufflehog/gitleaks roles

    Memorize filename:.env AKIA "BEGIN PRIVATE KEY" org:target. Check trufflehog filesystem . --only-verified + gitleaks detect --source . -v rows ONLY.

    Why this matters ▼

    What it is

    Org dorks find committed secrets; scanners verify without exfil. Scope-respect mandatory.

    Done-when

    Operators + 2 commands cold.

  2. 0:15–1:05 Org dorks + dry-run on test repo + in-scope buckets

    Run org dorks (read-only). Dry-run trufflehog/gitleaks on a TEST repo ONLY (never чужой full clone). Check buckets in-scope ONLY via cloud_enum -k target -m 50 + S3 URL pattern (BucketRegionalDomainName + ListBucketResult) READ. YT: github dorking bug bounty live, cloud_enum S3 takeover practical.

    Why this matters ▼

    H1

    Open S3/Presto/Eureka: search hacktivity open S3 bucket — pattern ListBucketResult + write-test poc.txt (Week 11 deep-dives, today in-scope check only).

    Common mistake

    Brute-forcing OOS buckets, cloning entire orgs. CUT — in-scope + dry-run only.

    Done-when

    Dork log + dry-run + in-scope bucket result.

  3. 1:05–2:00 S3-misconfig + GitHub-leak→ATO writeups

    Read PATT API Key Leaks 1 S3 case + pentester.land 1 GitHub-leak→ATO — validation + impact ONLY (no secret reuse).

    Why this matters ▼

    Pattern

    Leaked key → read-only validation → impact (data/ATO path). Never use keys to pivot beyond proof.

    Done-when

    2 triage notes with stop-rule.

  4. 2:00–2:35 Exposure notes + partial-redaction rule

    Write notes with ***-1234 redaction. Rule: full secret/PII never stored. Reference WSTG INFO metafiles headings ONLY.

    Why this matters ▼

    Done-when

    Notes redacted + rule card written.

  5. 2:35–3:00 Dork + scope-respect test + gaps

    Recite dork syntax + in-scope rule. Triage gaps.

    Why this matters ▼

    Done-when

    Recited + logs archived.

Hunter mindset: Read-minimal, redact, stop-and-report.
Real 180 min · recon 90%, attacks 10%
  1. 0:00–0:20 Pipeline recall + WSTG INFO tick

    Recite passive→resolve→rank→ports→spider→JS→dorks→diff. Tick WSTG checklist INFO rows + HuntBook Phase 1–2 headings ONLY.

    Why this matters ▼

    Done-when

    Recited + % logged.

  2. 0:20–1:20 Full passive→httpx→katana on VDP + diff vs Day 1

    Run pipeline on VDP (gentle flags only). diff passive-day1.txt passive-day7.txt | tee diff.txt. New hosts = Week 03 priority. No vuln scans, no OOS.

    Why this matters ▼

    YT

    Search github dorking bug bounty live for diff-alert mindset.

    Done-when

    recon/ + diff.txt + ranked Week-03 list.

  3. 1:20–2:20 Compare vs 1 published recon writeup

    Read pentester.land 1 recon-methodology — stages vs yours ONLY. Log 1 missed stage (ASN? JS? alt-TLD?).

    Why this matters ▼

    Done-when

    Gap paragraph logged.

  4. 2:20–2:45 recon/ dir + ranked targets + reusable recon.sh

    Save recon.sh snippet (subfinder→dnsx→httpx→katana→diff) + ranked list for Week 03 (staging/no-WAF/new first).

    Why this matters ▼

    Done-when

    Script + list saved, stranger-readable.

  5. 2:45–3:00 Pipeline recite + submit nothing + gaps

    Recite full pipeline. Confirm no active/OOS violations. Assign gaps to Week 03.

    Why this matters ▼

    Done-when

    Recited + recon/ archived + gaps assigned.

Hunter mindset: Diff daily. New assets = least tested.