Pentest Web Enumeration
Purpose
Own the active web-enumeration phase from scoped targets to a deduplicated application inventory and prioritized foothold hypotheses. Use Nuclei as the primary scanner, but do not substitute scanner output for direct validation.
Boundaries And Handoffs
- Require explicit authorization and record the target, allowed ports, identities, exclusions, and rate limits before active enumeration.
- Remain the owner while the blocker is discovering or fingerprinting web surfaces.
- Hand off to
pentest-web-application-logic-mapperwhen multi-step workflows, authenticated routes, or application state need mapping. - Hand off to the matching auth, access-control, input/protocol, XSS, business-logic, OOB, or CVE skill when a concrete vulnerability class becomes the blocker.
- Hand off to
pentest-exploit-execution-payload-controlonly after a primitive is confirmed. - Use
pentest-evidence-structuring-report-synthesisfor a full client deliverable; produce the phase report here regardless.
Required Inputs
Normalize what is known into:
scope: URLs, hosts, domains, IPs, ports, exclusions, and redirect policyaccess: unauthenticated or authorized credentials, headers, cookies, proxy, and client certificatelimits: per-host rate, concurrency, time window, request budget, and prohibited actionsgoal: broad surface inventory, a named application, or initial-access prioritization
If scope is ambiguous, do not infer permission for sibling domains, third-party hosts, destructive methods, credential attacks, uploads, or DAST fuzzing.
Operating Rules
- Label claims
confirmed,hypothesis, orrejected. - Preserve raw output before filtering; derive normalized files from raw artifacts.
- Use structured output such as JSONL whenever available and timestamp each run in UTC.
- Deduplicate by canonical URL while retaining scheme, port, SNI/Host header, redirect chain, and authentication context.
- Treat technology detection as corroborated only when at least two independent signals agree, or one high-specificity artifact exposes a version directly.
- Treat status, length, title, favicon, or scanner matches as leads until a direct request confirms the relevant behavior.
- Use positive and negative controls for wildcard DNS, wildcard vhosts, soft 404s, uniform redirects, and CDN/WAF responses.
- Prefer bounded phases with stop conditions over a large unattended pipeline.
- Do not install or update tools during the run. Record missing or stale tools and use the safest available fallback.
- Never run Nuclei DAST, intrusive, fuzz, brute-force, default-login, headless, code, or unsigned templates unless scope explicitly permits that class.
Workspace
Run scripts/init-web-enum-workspace.sh <run-directory> to create the artifact layout. Keep secrets out of command history and reports. Store reusable authenticated scan material in access-controlled files and reference it with tool-supported options.
Required artifact classes:
scope/ original and normalized targets, exclusions, auth context notes
raw/ immutable tool output and stderr logs
normalized/ canonical live URLs, applications, routes, scripts, APIs, parameters
evidence/ minimal requests/responses for validated claims
reports/ phase report and machine-readable finding summaries
Workflow
1. Preflight And Scope Controls
- Read local
README.mdorREADME.txt,to-do.txt, andcreds.txtif present. - Check required binaries with
command -v; inspect local-hand-versionoutput before relying on flags. - Use
pdtm -hto inspect manager semantics. Do not usepdtm -iaas an inventory command because it means install all. - Resolve DNS with
dnsxwhen hostnames need normalization. Preserve CNAMEs and all in-scope addresses. - Establish random-host and random-path controls before vhost or directory enumeration.
Gate: Continue only with a scope file, exclusions, and a defensible request rate.
2. Normalize Live Web Services
- Probe supplied hosts and ports with HTTPx; retain failed probes separately instead of deleting them.
- Capture URL, status, title, length, server, technology, IP, CNAME, CDN/WAF, favicon, JARM, TLS, HTTP/2, pipeline support, and redirect chain when useful.
- Re-probe ambiguous services with curl using explicit scheme, SNI/Host, method, headers, and redirect behavior.
- Compare
GET,HEAD, andOPTIONSonly as low-impact semantic checks. Do not infer that an advertised method is exploitable.
Gate: Produce normalized/live-urls.txt and an application inventory keyed by scheme, host, port, and Host header.
3. Fingerprint Applications And Infrastructure
- Combine HTTPx/Wappalyzer signals, WhatWeb, headers, cookies, HTML markers, favicon hashes, TLS metadata, error pages, asset paths, and source maps.
- Distinguish origin evidence from CDN, reverse proxy, WAF, load balancer, and framework evidence.
- Record OS only when protocol banners, error pages, path semantics, or a versioned server artifact support it; otherwise label it unknown.
- Use curl to inspect
/, redirects, headers, robots, sitemap, security policy, common API descriptions, and high-value discovered paths. - When a product and version are credible, hand the exact evidence to the CVE research skill before exploit construction.
Gate: Record corroborated technologies, conflicting signals, version confidence, and technology-conditioned next checks.
4. Discover Virtual Hosts
- Derive candidate names from certificates, DNS, redirects, CSP, links, JavaScript, error messages, and target naming conventions before wordlist fuzzing.
- Use FFUF against the Host header with the correct IP/SNI routing. Establish a random-host baseline and filter by multiple response properties, not status alone.
- Revalidate every candidate with DNS override or explicit Host header and compare body, title, redirect location, and fingerprint to controls.
- Do not add out-of-scope sibling domains merely because a certificate or page references them.
Gate: Add only directly reproducible vhosts to the live inventory; retain noisy candidates as hypotheses.
5. Crawl Routes, JavaScript, And APIs
- Run Katana in standard mode first with explicit scope, bounded depth and duration, known-file discovery, JavaScript parsing, and form extraction.
- Use headless mode only for SPA/DOM surfaces missed by standard crawling, with a separate artifact set and tighter concurrency.
- Enumerate robots, sitemaps, manifests, service workers, source maps, OpenAPI/Swagger, GraphQL, WSDL, and client-side configuration references.
- Extract and normalize scripts, route paths, absolute URLs, API bases, methods, parameters, WebSocket endpoints, upload/download paths, and auth boundaries.
- Fetch important first-party JavaScript directly and inspect strings or source maps; validate extracted routes before marking them reachable.
Gate: Produce deduplicated files for routes, scripts, API candidates, parameters, forms, and third-party references.
6. Run Focused Content Discovery
- Select the Feroxbuster wordlist dynamically from observed language, framework, server, naming style, and application purpose.
- Start fast but bounded: common directories, non-recursive, moderate threads, explicit time limit, and soft-404 controls.
- Expand only on signal. Add extensions based on observed files, then test high-value configuration, backup, source, archive, log, document, script, map, and environment-file suffixes where allowed.
- Use targeted per-directory recursion only on high-value branches. Avoid recursive scans of generated calendars, search spaces, IDs, or wildcard routes.
- Revalidate sensitive-looking files with curl. Distinguish an exposed secret from a login page, denial page, placeholder, or empty response.
Gate: Stop a branch when results remain uniform after one materially different control, the time budget expires, or no new trust boundary appears.
7. Run Nuclei-Led Early Checks
- Use Nuclei on the normalized live URL set, not the unfiltered seed list.
- Always persist the reporting database with
-rdb, machine-readable JSONL, timestamps, error logs, and a project path for the run. - Begin with the baseline in
references/command-playbook.md. Preserve the requested default of excludingssl,tlsonly when those checks are intentionally out of scope; otherwise run a separate bounded TLS pass. - Use
-asor selected tags/templates after fingerprinting. Query available tags/templates with-tgland-tlrather than assuming names. - Scale
-c,-bs,-rl, timeouts, and per-host limits to target count, latency, WAF behavior, and authorization constraints. Reduce concurrency for one complex app; use host-aware limits for many URLs. - Run technology-specific passes only for corroborated products. For WordPress, run WPScan plus selected
wordpressNuclei templates; apply analogous focused checks to other confirmed stacks. - Validate every high-impact Nuclei match with stored request/response evidence and a direct control request. Scanner metadata alone is not confirmation.
Gate: Separate confirmed findings, plausible scanner leads, false positives, informational fingerprints, and untested template classes.
8. Consolidate And Prioritize
- Deduplicate URLs by canonical route while retaining distinct methods, ports, vhosts, roles, and content types.
- Truncate noisy scanner lists by grouping on root cause, application, and template ID. Keep counts and artifact paths for omitted repetitions.
- Rank initial-access candidates by reachability, authentication requirement, privilege gained, version confidence, exploit preconditions, validation confidence, and test cost.
- Propose exactly three foothold paths when evidence permits. Build them only from confirmed primitives and clearly marked hypotheses; do not present speculative chains as established paths.
- Write
reports/web-enum-report.mdusingassets/web-enum-report.md.
Minimum Output Contract
- Confirmed findings with confidence, impact, and evidence IDs.
- Strong hypotheses with the next minimal deterministic test.
- Evidence index with command/request, response artifact, timestamp UTC, and control.
- Deduplicated applications, vhosts, routes, scripts, APIs, forms, and technology inventory.
- Three prioritized initial-access paths or an explicit statement that evidence supports fewer than three.
- Reproduction steps and tool/evidence gaps.
Resources
- Read
references/command-playbook.mdwhen selecting or adapting commands. - Use
assets/web-enum-report.mdfor phase reporting. - Run
scripts/init-web-enum-workspace.shbefore a substantial enumeration run.