Web Reconnaissance
HTTP Headers Reference
Request Headers (Useful for Recon)
Host
Target hostname - useful for vhost discovery
User-Agent
Client identifier - spoofable to bypass restrictions
Cookie
Session tokens, auth data
Authorization
Basic/Bearer tokens
Referer
Previous page - spoofable for access bypasses
X-Forwarded-For
Client IP (via proxy) - spoofable for IP bypasses
Response Headers (Look For)
Server
Web server software & version
X-Powered-By
Backend technology (PHP, ASP.NET, Express)
X-Redirect-By
CMS identification (WordPress, Drupal)
Set-Cookie
Session handling, flags (Secure, HttpOnly)
Content-Type
Response type and encoding
WWW-Authenticate
Auth mechanism required
Security Headers (Missing = Potential Issue)
Content-Security-Policy
XSS prevention - script sources
X-Frame-Options
Clickjacking protection
Strict-Transport-Security
HTTPS enforcement (HSTS)
X-Content-Type-Options
Prevent MIME sniffing
Referrer-Policy
Control referrer information
Permissions-Policy
Feature restrictions
Web Fingerprinting
Identify Server & Tech Stack (curl)
Look for:
Server:header (e.g., Apache/2.4.41, nginx/1.18.0)X-Powered-By:header (e.g., PHP/7.4, Express)X-Redirect-By:header (e.g., WordPress)
whatweb (tech stack)
Reports server, CMS, frameworks, PHP/version, cookies, redirects. Useful to confirm tech and redirect chains (e.g. to installer or login).
Rails Debug/Error Pages
Rails apps in development/debug mode may expose detailed exception pages. Force errors with missing records, unexpected IDs, or bad routes and review the response for routes, controller names, source snippets, framework paths, and usernames in app paths.
Useful clues include:
If an app exposes /404 or /500, check those too. They may confirm the framework and whether verbose exception pages are enabled.
WAF Detection (wafw00f)
Nikto Fingerprinting
robots.txt Analysis
Key Directives
Disallow:
Paths the bot shouldn't crawl (interesting for recon!)
Allow:
Explicitly permitted paths
Sitemap:
URL to sitemap.xml
Crawl-delay:
Seconds between requests
Recon Value: Disallowed paths often reveal admin panels, backup directories, or sensitive endpoints.
Exposed Backup Directories
Directory listings can expose user or application backups even when the main site is empty or returns a fake 404.
Useful indicators:
Download and inspect the files:
High-value backup contents:
If authorized_keys forces a wrapper with options such as no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="/home/USER/scp_wrapper.sh", check whether the wrapper still allows scp operations.
Exposed .git Directory
If a .git directory is accessible, dump and extract for source code, credentials, and history.
Detection
Dumping with git-dumper
Alternative: arthaud/git-dumper (Python) — Dumps and extracts in one step; often works when GitTools fails (e.g. incomplete packs):
Manual Enumeration
Common Findings
settings.php
Database credentials
.env
Environment variables, API keys
config/*.json
Application configuration
wp-config.php
WordPress DB creds
.htpasswd
HTTP basic auth hashes
Example: Backdrop/Drupal settings.php
.well-known URIs
Useful .well-known URIs
security.txt
Security contact info
openid-configuration
OAuth2/OIDC endpoints, supported scopes
assetlinks.json
Android app asset links
mta-sts.txt
Email MTA-STS policy
Full list: https://www.iana.org/assignments/well-known-uris/well-known-uris.xhtml
Google Dorking
Operators
site:
Limit to domain
site:example.com
inurl:
Term in URL
inurl:admin
intitle:
Term in page title
intitle:"index of"
filetype:
Specific file type
filetype:pdf
ext:
File extension
ext:conf
intext:
Term in page body
intext:password
cache:
Cached version
cache:example.com
link:
Pages linking to URL
link:example.com
Common Dorks
Google Hacking Database
https://www.exploit-db.com/google-hacking-database
Wayback Machine
Web Interface
https://web.archive.org/
Enter URL to view historical snapshots.
Command Line
Recon Value
Find old pages, endpoints, files no longer linked
Discover removed sensitive content
Track tech stack changes over time
Passive (no direct target interaction)
VHost / subdomain fuzzing
When the main site uses a single vhost or redirects, enumerate subdomains by fuzzing the Host header. Filter by word count (-fw) or size (-fs) to drop the default response.
Use -fs 230 (or similar) to filter by response size if that better separates valid vhosts. Combine with nuclei as needed: nuclei -u http://vhost.TARGET -rl 13 -c 12 -as.
Parameter Discovery & Fuzzing
GET Parameter Fuzzing
POST Parameter Fuzzing
Parameter Value Fuzzing
Using Burp Intruder
Capture request in Proxy
Send to Intruder (Ctrl+I)
Add § markers around parameter name or value
Load wordlist in Payloads tab
Look for different response lengths/status codes
Source Code Analysis
When you obtain source code (via LFI/SSRF), look for:
Useful Wordlists for Parameter Discovery
Web Crawling
Burp Suite Spider
Set scope to target domain
Right-click target in Site Map → Spider this host
Review discovered endpoints in Site Map
OWASP ZAP Spider
Set target URL
Right-click → Attack → Spider
Review Sites tree for discovered content
ReconSpider (Custom Tool)
Output in results.json:
Emails, links, external files
JavaScript files
Form fields
Images, videos, audio
HTML comments
Scrapy (Python)
Custom spider for large-scale crawling.
Automation Frameworks
Python-based, modular (SSL, WHOIS, headers, crawl)
Framework with modules for DNS, subdomains, ports, etc.
Email, subdomain, host gathering from multiple sources
Comprehensive subdomain enumeration
Fast crawler extracting URLs, emails, files, endpoints
FinalRecon
EyeWitness
Screenshot web applications at scale to quickly identify what's running on discovered hosts/ports:
Useful for quickly triaging a large number of web services during internal network assessments to identify login portals, default installs, and interesting applications.
Recon-ng
Last updated