
Authorization-first web recon: passive OSINT, disciplined scope, light active mapping, and hypothesis handoff.
Basic networking and command line familiarity
Reconnaissance is the first phase of a web security assessment. Done well, it tells you what exists, what is in scope, and which hypotheses deserve active testing. Done poorly, it burns hours on out-of-scope assets or noisy scans that teach you nothing.
This tutorial covers a beginner-friendly, authorization-first workflow: passive OSINT → disciplined scope → light active mapping → handoff to vulnerability testing. Commands are illustrative for lab targets you own (DVWA, local apps, intentionally vulnerable VMs) or engagements with written permission.
Prerequisites: basic networking (DNS, HTTP, ports), comfort with a Linux shell.
Suggested tools: curl, browser + proxy (Burp/ZAP), nmap, dig/drill, ffuf (or similar fuzzer), whois/OSINT sources as allowed by scope.
Passive recon gathers information without sending packets to the target’s application stack (or with negligible, normal-looking requests such as public DNS). Goals:
Example passive habits:
# Public DNS (usually acceptable; still respect engagement rules)
dig +short example.com A
dig +short www.example.com CNAME
dig +short example.com MX
dig +short example.com TXT
# Certificate transparency / subdomain datasets — use sources allowed by your program
# (Do not scrape locked APIs or violate ToS; prefer official program scope lists.)
Record findings in a simple table: asset, source, confidence, in-scope? (Y/N/Ask).
Ethics: Some “OSINT” techniques cross into unauthorized access (open cloud buckets with private data, scraped employee PII dumps). Stay on public marketing/DNS/CT data unless the program explicitly allows more.
If a name pattern points at cloud storage, the next authorized check is identity, not object access: what to audit and how to detect IAM privilege escalation.
Before any port scan or content discovery:
*.lab.example.com ≠ *.example.com).Active mapping ladder for a single in-scope host:
# 1) Reachability & TLS
curl -sI https://target.lab.example
# 2) Focused Nmap (see also the Nmap cheat sheet)
nmap -Pn -sS -F -sV -oA recon/fast target.lab.example
# 3) Only then deepen ports on confirmed VIP hosts
nmap -Pn -sS -p- --min-rate 200 -oA recon/alltcp target.lab.example
Avoid starting with -A -p- -T5 against entire CIDRs. You want a map, not a denial-of-service ticket.
curl -sI https://target.lab.example | sed -n '1,20p'
curl -sk https://target.lab.example/robots.txt
curl -sk https://target.lab.example/sitemap.xml | head
Note:
In the browser proxy, browse as a normal user would. Manual click-paths often beat blind fuzzing for understanding business logic.
Directory and virtual-host discovery can find forgotten panels — and can also trigger WAF bans or break fragile staging boxes.
# Low-and-slow wordlist example (lab only)
ffuf -u https://target.lab.example/FUZZ -w wordlist-small.txt -mc 200,204,301,302,401,403 -t 10 -o recon/ffuf.json
Rules of thumb:
403 on /admin is a lead, not a root shell.Virtual host fuzzing (when scope includes it):
ffuf -u https://<ip>/ -H "Host: FUZZ.lab.example" -w vhosts.txt -mc 200,301,302 -t 5
Good recon ends as a hypothesis list, not a folder of XML:
| Observation | Hypothesis | Next test (authorized) |
|---|---|---|
/api/v2 in JS bundles | Undocumented API | Map endpoints; check authz |
| Staging subdomain in CT logs | Weaker auth / debug | Confirm scope; soft fingerprint |
| Old jQuery on marketing site | XSS library era | Only if HTML sinks exist — don’t assume |
PUT allowed on upload path (OPTIONS) | Upload / overwrite risk | Controlled file tests in lab |
Hand this table to the exploitation phase. If you cannot state a hypothesis, keep reconciling — do not random-payload the login form yet.
Minimum artifacts:
-oA outputs per wave.Screenshots without context waste space; pair them with URLs and timestamps.
Only assess systems you own or are explicitly authorized to test. When unsure whether an asset is in scope, ask — do not probe first. Recon is still interaction; treat it with the same professionalism as exploitation.
Share this tutorial
Sign in to leave a comment.