Web Application Reconnaissance
Overview
Web application reconnaissance goes beyond simple subdomain discovery to map the full attack surface of a web application. This includes discovering hidden endpoints, analyzing client-side code, identifying backend technologies, and understanding the application's architecture.
Core principle: Systematic enumeration combined with intelligent analysis reveals hidden attack surface that automated scanners miss.
When to Use
Use this skill when:
- Starting security assessment of a web application
- Building comprehensive understanding of app structure
- Looking for hidden admin panels, APIs, or debug endpoints
- Analyzing JavaScript for hardcoded secrets or endpoints
- Mapping application functionality before deeper testing
Don't use when:
- Not authorized to test the target
- Application has strict rate limiting (adjust methodology)
- Need to remain completely passive (use only public sources)
The Four-Phase Methodology
Phase 1: Initial Discovery and Fingerprinting
Goal: Understand what you're dealing with - technologies, frameworks, and basic structure.
Techniques:
Technology Detection
# Comprehensive tech stack identification
whatweb -v -a 3 https://target.com
# HTTP headers analysis
curl -I https://target.com
# Wappalyzer or similar
wappalyzer https://target.com
Common Files and Directories
# robots.txt - often reveals hidden directories
curl https://target.com/robots.txt
# sitemap.xml - complete site structure
curl https://target.com/sitemap.xml
# security.txt - contact info, may reveal scope
curl https://target.com/.well-known/security.txt
# Common config/info files
for file in readme.md humans.txt crossdomain.xml; do
curl -s https://target.com/$file
done
SSL/TLS Analysis
# Certificate information may reveal additional domains
echo | openssl s_client -connect target.com:443 2>/dev/null | \
openssl x509 -noout -text | \
grep -A1 "Subject Alternative Name"
Phase 2: Content Discovery
Goal: Find hidden endpoints, forgotten files, backup directories, and undocumented functionality.
Techniques:
Directory and File Fuzzing
# ffuf - fast web fuzzer
ffuf -w /path/to/wordlist.txt \
-u https://target.com/FUZZ \
-mc 200,301,302,403 \
-o directories.json
# gobuster for directory brute-forcing
gobuster dir -u https://target.com \
-w /path/to/wordlist.txt \
-x php,html,js,txt,json \
-o gobuster_results.txt
# feroxbuster - recursive directory discovery
feroxbuster -u https://target.com \
-w /path/to/wordlist.txt \
--depth 3 \
-x php js json
Intelligent Wordlist Selection
# Technology-specific wordlists
# For WordPress:
ffuf -w wordpress_wordlist.txt -u https://target.com/FUZZ
# For APIs:
ffuf -w api_wordlist.txt -u https://target.com/api/FUZZ
# Custom wordlist from discovered technologies
# If tech stack is Python/Django, use Django-specific paths
Backup and Sensitive File Discovery
# Common backup patterns
for ext in .bak .old .backup .swp ~; do
ffuf -w discovered_files.txt -u https://target.com/FUZZ$ext -mc 200
done
# Source code disclosure
ffuf -w discovered_files.txt -u https://target.com/FUZZ.txt -mc 200
# Git exposure
curl -s https://target.com/.git/HEAD
# If found, use git-dumper or similar to extract repository
Phase 3: JavaScript Analysis
Goal: Extract hardcoded secrets, discover API endpoints, and understand client-side logic.
Techniques:
Enumerate All JavaScript Files
# Extract JS URLs from HTML
curl -s https://target.com | \
grep -oP 'src="[^"]+\.js"' | \
sed 's/src="//;s/"$//' > js_files.txt
# Use LinkFinder or similar
python3 linkfinder.py -i https://target.com -o results.html
Search for Sensitive Data in JS
# Download all JS files
while read url; do
curl -s "$url" > "js/$(basename "$url")"
done < js_files.txt
# Search for patterns
grep -r -E "(api_key|apikey|secret|password|token|aws_access)" js/
grep -r -E "(https?://[^\"'\ ]+)" js/ | grep -v "fonts\|cdn"
# Find API endpoints
grep -r -E "(/api/|/v[0-9]+/)" js/
Beautify and Analyze Minified Code
# Beautify JS for easier analysis
for file in js/*.js; do
js-beautify "$file" > "js_beautified/$(basename "$file")"
done
# Look for interesting functions
grep -r "function" js_beautified/ | grep -i "admin\|debug\|test"
Extract Subdomains and Endpoints from JS
# Use tools like JSFinder, relative-url-extractor
python3 relative-url-extractor.py -u https://target.com > endpoints.txt
Phase 4: Architecture Mapping
Goal: Understand application structure, authentication flows, and data flows.
Techniques:
Crawling and Spidering
# Burp Suite spider (manual)
# Or use automated crawlers
gospider -s https://target.com -d 3 -c 10 -o spider_output
# katana - fast crawler
katana -u https://target.com -d 5 -ps -jc -o crawl_results.txt
Parameter Discovery
# Find URL parameters
arjun -u https://target.com/search -m GET
# ParamSpider - discover parameters from wayback
python3 paramspider.py -d target.com
API Endpoint Enumeration
# If API discovered, enumerate versions and endpoints
for version in v1 v2 v3; do
ffuf -w api_endpoints.txt -u https://api.target.com/$version/FUZZ
done
# Swagger/OpenAPI documentation
curl https://api.target.com/swagger.json
curl https://api.target.com/openapi.json
curl https://api.target.com/api-docs
Authentication and Session Analysis
# Analyze authentication mechanisms
# - Cookie attributes (HttpOnly, Secure, SameSite)
# - JWT tokens (decode and analyze claims)
# - OAuth flows
# - Session management
# Check for JWT
# Decode JWT token (use jwt_tool or jwt.io)
echo "eyJhbG..." | base64 -d
Automation Pipeline
Complete reconnaissance pipeline:
#!/bin/bash
# web_app_recon.sh
TARGET=$1
OUTPUT_DIR="${TARGET//[.:\/]/_}_webapp_recon"
mkdir -p "$OUTPUT_DIR"/{js,crawl,endpoints}
echo "[*] Starting web application reconnaissance for $TARGET"
# Phase 1: Fingerprinting
echo "[*] Phase 1: Technology fingerprinting"
whatweb -v -a 3 "$TARGET" > "$OUTPUT_DIR/whatweb.txt"
curl -I "$TARGET" > "$OUTPUT_DIR/headers.txt"
curl -s "$TARGET/robots.txt" > "$OUTPUT_DIR/robots.txt"
curl -s "$TARGET/sitemap.xml" > "$OUTPUT_DIR/sitemap.xml"
# Phase 2: Content Discovery
echo "[*] Phase 2: Content discovery"
feroxbuster -u "$TARGET" \
-w /usr/share/wordlists/seclists/Discovery/Web-Content/common.txt \
-x php,html,js,txt,json \
--depth 2 \
-o "$OUTPUT_DIR/feroxbuster.txt"
# Phase 3: JavaScript Analysis
echo "[*] Phase 3: JavaScript analysis"
katana -u "$TARGET" -jc -o "$OUTPUT_DIR/crawl/katana_js.txt"
# Download and analyze JS files
grep "\.js$" "$OUTPUT_DIR/crawl/katana_js.txt" | while read js_url; do
filename=$(echo "$js_url" | md5sum | cut -d' ' -f1)
curl -s "$js_url" > "$OUTPUT_DIR/js/${filename}.js"
done
# Search for secrets in JS
echo "[*] Searching for sensitive data in JavaScript"
grep -r -E "(api[_-]?key|secret|password|token)" "$OUTPUT_DIR/js/" > "$OUTPUT_DIR/js_secrets.txt"
# Phase 4: Endpoint extraction
echo "[*] Phase 4: Endpoint extraction"
cat "$OUTPUT_DIR/js"/*.js | grep -oP '(/api/[^"'"'"'\s]+)' | sort -u > "$OUTPUT_DIR/endpoints/api_endpoints.txt"
echo "[+] Reconnaissance complete. Results in $OUTPUT_DIR/"
echo "[+] Review the following files:"
echo " - whatweb.txt: Technology stack"
echo " - feroxbuster.txt: Discovered directories/files"
echo " - js_secrets.txt: Potential secrets in JavaScript"
echo " - endpoints/api_endpoints.txt: API endpoints found"
Tool Recommendations
Content Discovery:
- ffuf (fast, flexible, modern)
- feroxbuster (recursive, Rust-based)
- gobuster (reliable, simple)
Crawling:
- katana (fast, modern)
- gospider (feature-rich)
- Burp Suite spider (manual, thorough)
JavaScript Analysis:
- LinkFinder (extract endpoints from JS)
- JSFinder (find subdomains/endpoints)
- relative-url-extractor
- js-beautify (beautify minified code)
General:
- httpx (probing and tech detection)
- nuclei (vulnerability templates)
- waybackurls (historical URLs)
Common Patterns and Findings
High-value targets to look for:
Admin/Debug Panels
/admin, /administrator, /admin.php
/debug, /test, /dev
/phpinfo.php, /info.php
/console, /terminal
Configuration Files
/config.php, /.env, /settings.py
/web.config, /application.yml
/config.json, /.git/config
API Documentation
/api-docs, /swagger, /api/v1/docs
/graphql, /graphiql
/redoc, /openapi.json
Backup Files
/backup, /backups, /old
index.php.bak, database.sql.old
site.tar.gz, backup.zip
Organizing Findings
Create structured documentation:
# Web App Recon: target.com
## Executive Summary
- Application Type: [E-commerce, API, CMS, etc.]
- Primary Technology: [PHP/Laravel, Python/Django, Node.js, etc.]
- Notable Findings: [X hidden endpoints, Y exposed configs]
## Technology Stack
- Frontend: React 18.2, Bootstrap 5
- Backend: Laravel 9.x
- Server: Nginx 1.21
- Database: MySQL (inferred from error messages)
## Discovered Endpoints
### Public
- /api/v1/products - Product listing API
- /api/v1/users - User profiles (requires auth)
### Hidden/Interesting
- /api/v1/admin - Admin API (403, exists!)
- /api/internal/metrics - Internal metrics endpoint
- /debug/routes - Laravel route list (exposed!)
## Sensitive Files Found
- /storage/logs/laravel.log - Application logs exposed
- /.env.backup - Backup of environment config
- /phpinfo.php - Server info disclosure
## JavaScript Findings
- API keys found: 2 (one appears to be test key)
- Hardcoded API endpoints: 15 additional endpoints
- Subdomains discovered: api-staging.target.com
## Priority Items for Further Testing
1. /debug/routes - Full route disclosure
2. /.env.backup - May contain database credentials
3. /api/internal/metrics - Potential IDOR or info disclosure
4. Staging subdomain - May have weaker security
## Next Steps
- Test IDOR on /api/v1/users endpoints
- Attempt to access admin API with discovered tokens
- Manual review of staging environment
- Test for SQL injection in search parameters
Legal and Ethical Considerations
CRITICAL - Always follow these rules:
Authorization Required
- Never test without explicit permission
- Understand scope and boundaries
- Don't access sensitive data unless authorized
Responsible Disclosure
- Report findings through proper channels
- Don't publicly disclose before remediation
- Follow responsible disclosure timelines
Data Handling
- Don't exfiltrate sensitive data
- Don't store credentials or PII
- Delete reconnaissance data after assessment
Avoid DoS Conditions
- Rate limit your requests
- Don't overload servers
- Use appropriate concurrency settings
Common Pitfalls
| Mistake |
Impact |
Solution |
| Relying only on automated tools |
Miss context-specific findings |
Combine automation with manual analysis |
| Skipping JavaScript analysis |
Miss API endpoints and secrets |
Always analyze client-side code |
| Not checking robots.txt first |
Waste time on known paths |
Start with obvious information sources |
| Ignoring error messages |
Miss technology fingerprinting |
Pay attention to verbose errors |
| Too aggressive fuzzing |
Detection, IP blocking |
Start with smaller wordlists, increase gradually |
Integration with Other Skills
This skill works with:
- skills/reconnaissance/automated-subdomain-enum - Feeds discovered subdomains here
- skills/exploitation/* - Use discovered endpoints for exploitation
- skills/analysis/static-vuln-analysis - Analyze discovered source code
- skills/documentation/* - Document findings systematically
Success Metrics
A successful web app reconnaissance should:
- Identify all major technologies used
- Discover hidden or forgotten functionality
- Extract API endpoints and parameters
- Find configuration or sensitive file exposures
- Map authentication and authorization flows
- Prioritize findings for further testing
- Complete without triggering security alerts (if stealth required)
References and Further Reading
- OWASP Web Security Testing Guide
- "The Web Application Hacker's Handbook" by Dafydd Stuttard
- "Bug Bounty Bootcamp" by Vickie Li (Chapters 4-5)
- PortSwigger Web Security Academy
- HackerOne disclosed reports for real-world examples
1---2name: web-application-reconnaissance3description: Systematic methodology for mapping web application attack surface, discovering hidden endpoints, and identifying technologies4---56# Web Application Reconnaissance78## Overview910Web application reconnaissance goes beyond simple subdomain discovery to map the full attack surface of a web application. This includes discovering hidden endpoints, analyzing client-side code, identifying backend technologies, and understanding the application's architecture.1112**Core principle:** Systematic enumeration combined with intelligent analysis reveals hidden attack surface that automated scanners miss.1314## When to Use1516Use this skill when:17- Starting security assessment of a web application18- Building comprehensive understanding of app structure19- Looking for hidden admin panels, APIs, or debug endpoints20- Analyzing JavaScript for hardcoded secrets or endpoints21- Mapping application functionality before deeper testing2223**Don't use when:**24- Not authorized to test the target25- Application has strict rate limiting (adjust methodology)26- Need to remain completely passive (use only public sources)2728## The Four-Phase Methodology2930### Phase 1: Initial Discovery and Fingerprinting3132**Goal:** Understand what you're dealing with - technologies, frameworks, and basic structure.3334**Techniques:**35361. **Technology Detection**37 ```bash38 # Comprehensive tech stack identification39 whatweb -v -a 3 https://target.com40 41 # HTTP headers analysis42 curl -I https://target.com43 44 # Wappalyzer or similar45 wappalyzer https://target.com46 ```47482. **Common Files and Directories**49 ```bash50 # robots.txt - often reveals hidden directories51 curl https://target.com/robots.txt52 53 # sitemap.xml - complete site structure54 curl https://target.com/sitemap.xml55 56 # security.txt - contact info, may reveal scope57 curl https://target.com/.well-known/security.txt58 59 # Common config/info files60 for file in readme.md humans.txt crossdomain.xml; do61 curl -s https://target.com/$file62 done63 ```64653. **SSL/TLS Analysis**66 ```bash67 # Certificate information may reveal additional domains68 echo | openssl s_client -connect target.com:443 2>/dev/null | \69 openssl x509 -noout -text | \70 grep -A1 "Subject Alternative Name"71 ```7273### Phase 2: Content Discovery7475**Goal:** Find hidden endpoints, forgotten files, backup directories, and undocumented functionality.7677**Techniques:**78791. **Directory and File Fuzzing**80 ```bash81 # ffuf - fast web fuzzer82 ffuf -w /path/to/wordlist.txt \83 -u https://target.com/FUZZ \84 -mc 200,301,302,403 \85 -o directories.json86 87 # gobuster for directory brute-forcing88 gobuster dir -u https://target.com \89 -w /path/to/wordlist.txt \90 -x php,html,js,txt,json \91 -o gobuster_results.txt92 93 # feroxbuster - recursive directory discovery94 feroxbuster -u https://target.com \95 -w /path/to/wordlist.txt \96 --depth 3 \97 -x php js json98 ```991002. **Intelligent Wordlist Selection**101 ```bash102 # Technology-specific wordlists103 # For WordPress:104 ffuf -w wordpress_wordlist.txt -u https://target.com/FUZZ105 106 # For APIs:107 ffuf -w api_wordlist.txt -u https://target.com/api/FUZZ108 109 # Custom wordlist from discovered technologies110 # If tech stack is Python/Django, use Django-specific paths111 ```1121133. **Backup and Sensitive File Discovery**114 ```bash115 # Common backup patterns116 for ext in .bak .old .backup .swp ~; do117 ffuf -w discovered_files.txt -u https://target.com/FUZZ$ext -mc 200118 done119 120 # Source code disclosure121 ffuf -w discovered_files.txt -u https://target.com/FUZZ.txt -mc 200122 123 # Git exposure124 curl -s https://target.com/.git/HEAD125 # If found, use git-dumper or similar to extract repository126 ```127128### Phase 3: JavaScript Analysis129130**Goal:** Extract hardcoded secrets, discover API endpoints, and understand client-side logic.131132**Techniques:**1331341. **Enumerate All JavaScript Files**135 ```bash136 # Extract JS URLs from HTML137 curl -s https://target.com | \138 grep -oP 'src="[^"]+\.js"' | \139 sed 's/src="//;s/"$//' > js_files.txt140 141 # Use LinkFinder or similar142 python3 linkfinder.py -i https://target.com -o results.html143 ```1441452. **Search for Sensitive Data in JS**146 ```bash147 # Download all JS files148 while read url; do149 curl -s "$url" > "js/$(basename "$url")"150 done < js_files.txt151 152 # Search for patterns153 grep -r -E "(api_key|apikey|secret|password|token|aws_access)" js/154 grep -r -E "(https?://[^\"'\ ]+)" js/ | grep -v "fonts\|cdn"155 156 # Find API endpoints157 grep -r -E "(/api/|/v[0-9]+/)" js/158 ```1591603. **Beautify and Analyze Minified Code**161 ```bash162 # Beautify JS for easier analysis163 for file in js/*.js; do164 js-beautify "$file" > "js_beautified/$(basename "$file")"165 done166 167 # Look for interesting functions168 grep -r "function" js_beautified/ | grep -i "admin\|debug\|test"169 ```1701714. **Extract Subdomains and Endpoints from JS**172 ```bash173 # Use tools like JSFinder, relative-url-extractor174 python3 relative-url-extractor.py -u https://target.com > endpoints.txt175 ```176177### Phase 4: Architecture Mapping178179**Goal:** Understand application structure, authentication flows, and data flows.180181**Techniques:**1821831. **Crawling and Spidering**184 ```bash185 # Burp Suite spider (manual)186 # Or use automated crawlers187 gospider -s https://target.com -d 3 -c 10 -o spider_output188 189 # katana - fast crawler190 katana -u https://target.com -d 5 -ps -jc -o crawl_results.txt191 ```1921932. **Parameter Discovery**194 ```bash195 # Find URL parameters196 arjun -u https://target.com/search -m GET197 198 # ParamSpider - discover parameters from wayback199 python3 paramspider.py -d target.com200 ```2012023. **API Endpoint Enumeration**203 ```bash204 # If API discovered, enumerate versions and endpoints205 for version in v1 v2 v3; do206 ffuf -w api_endpoints.txt -u https://api.target.com/$version/FUZZ207 done208 209 # Swagger/OpenAPI documentation210 curl https://api.target.com/swagger.json211 curl https://api.target.com/openapi.json212 curl https://api.target.com/api-docs213 ```2142154. **Authentication and Session Analysis**216 ```bash217 # Analyze authentication mechanisms218 # - Cookie attributes (HttpOnly, Secure, SameSite)219 # - JWT tokens (decode and analyze claims)220 # - OAuth flows221 # - Session management222 223 # Check for JWT224 # Decode JWT token (use jwt_tool or jwt.io)225 echo "eyJhbG..." | base64 -d226 ```227228## Automation Pipeline229230**Complete reconnaissance pipeline:**231232```bash233#!/bin/bash234# web_app_recon.sh235236TARGET=$1237OUTPUT_DIR="${TARGET//[.:\/]/_}_webapp_recon"238mkdir -p "$OUTPUT_DIR"/{js,crawl,endpoints}239240echo "[*] Starting web application reconnaissance for $TARGET"241242# Phase 1: Fingerprinting243echo "[*] Phase 1: Technology fingerprinting"244whatweb -v -a 3 "$TARGET" > "$OUTPUT_DIR/whatweb.txt"245curl -I "$TARGET" > "$OUTPUT_DIR/headers.txt"246curl -s "$TARGET/robots.txt" > "$OUTPUT_DIR/robots.txt"247curl -s "$TARGET/sitemap.xml" > "$OUTPUT_DIR/sitemap.xml"248249# Phase 2: Content Discovery250echo "[*] Phase 2: Content discovery"251feroxbuster -u "$TARGET" \252 -w /usr/share/wordlists/seclists/Discovery/Web-Content/common.txt \253 -x php,html,js,txt,json \254 --depth 2 \255 -o "$OUTPUT_DIR/feroxbuster.txt"256257# Phase 3: JavaScript Analysis258echo "[*] Phase 3: JavaScript analysis"259katana -u "$TARGET" -jc -o "$OUTPUT_DIR/crawl/katana_js.txt"260# Download and analyze JS files261grep "\.js$" "$OUTPUT_DIR/crawl/katana_js.txt" | while read js_url; do262 filename=$(echo "$js_url" | md5sum | cut -d' ' -f1)263 curl -s "$js_url" > "$OUTPUT_DIR/js/${filename}.js"264done265266# Search for secrets in JS267echo "[*] Searching for sensitive data in JavaScript"268grep -r -E "(api[_-]?key|secret|password|token)" "$OUTPUT_DIR/js/" > "$OUTPUT_DIR/js_secrets.txt"269270# Phase 4: Endpoint extraction271echo "[*] Phase 4: Endpoint extraction"272cat "$OUTPUT_DIR/js"/*.js | grep -oP '(/api/[^"'"'"'\s]+)' | sort -u > "$OUTPUT_DIR/endpoints/api_endpoints.txt"273274echo "[+] Reconnaissance complete. Results in $OUTPUT_DIR/"275echo "[+] Review the following files:"276echo " - whatweb.txt: Technology stack"277echo " - feroxbuster.txt: Discovered directories/files"278echo " - js_secrets.txt: Potential secrets in JavaScript"279echo " - endpoints/api_endpoints.txt: API endpoints found"280```281282## Tool Recommendations283284**Content Discovery:**285- ffuf (fast, flexible, modern)286- feroxbuster (recursive, Rust-based)287- gobuster (reliable, simple)288289**Crawling:**290- katana (fast, modern)291- gospider (feature-rich)292- Burp Suite spider (manual, thorough)293294**JavaScript Analysis:**295- LinkFinder (extract endpoints from JS)296- JSFinder (find subdomains/endpoints)297- relative-url-extractor298- js-beautify (beautify minified code)299300**General:**301- httpx (probing and tech detection)302- nuclei (vulnerability templates)303- waybackurls (historical URLs)304305## Common Patterns and Findings306307**High-value targets to look for:**3083091. **Admin/Debug Panels**310 ```311 /admin, /administrator, /admin.php312 /debug, /test, /dev313 /phpinfo.php, /info.php314 /console, /terminal315 ```3163172. **Configuration Files**318 ```319 /config.php, /.env, /settings.py320 /web.config, /application.yml321 /config.json, /.git/config322 ```3233243. **API Documentation**325 ```326 /api-docs, /swagger, /api/v1/docs327 /graphql, /graphiql328 /redoc, /openapi.json329 ```3303314. **Backup Files**332 ```333 /backup, /backups, /old334 index.php.bak, database.sql.old335 site.tar.gz, backup.zip336 ```337338## Organizing Findings339340**Create structured documentation:**341342```markdown343# Web App Recon: target.com344345## Executive Summary346- Application Type: [E-commerce, API, CMS, etc.]347- Primary Technology: [PHP/Laravel, Python/Django, Node.js, etc.]348- Notable Findings: [X hidden endpoints, Y exposed configs]349350## Technology Stack351- Frontend: React 18.2, Bootstrap 5352- Backend: Laravel 9.x353- Server: Nginx 1.21354- Database: MySQL (inferred from error messages)355356## Discovered Endpoints357### Public358- /api/v1/products - Product listing API359- /api/v1/users - User profiles (requires auth)360361### Hidden/Interesting362- /api/v1/admin - Admin API (403, exists!)363- /api/internal/metrics - Internal metrics endpoint364- /debug/routes - Laravel route list (exposed!)365366## Sensitive Files Found367- /storage/logs/laravel.log - Application logs exposed368- /.env.backup - Backup of environment config369- /phpinfo.php - Server info disclosure370371## JavaScript Findings372- API keys found: 2 (one appears to be test key)373- Hardcoded API endpoints: 15 additional endpoints374- Subdomains discovered: api-staging.target.com375376## Priority Items for Further Testing3771. /debug/routes - Full route disclosure3782. /.env.backup - May contain database credentials3793. /api/internal/metrics - Potential IDOR or info disclosure3804. Staging subdomain - May have weaker security381382## Next Steps383- Test IDOR on /api/v1/users endpoints384- Attempt to access admin API with discovered tokens385- Manual review of staging environment386- Test for SQL injection in search parameters387```388389## Legal and Ethical Considerations390391**CRITICAL - Always follow these rules:**3923931. **Authorization Required**394 - Never test without explicit permission395 - Understand scope and boundaries396 - Don't access sensitive data unless authorized3973982. **Responsible Disclosure**399 - Report findings through proper channels400 - Don't publicly disclose before remediation401 - Follow responsible disclosure timelines4024033. **Data Handling**404 - Don't exfiltrate sensitive data405 - Don't store credentials or PII406 - Delete reconnaissance data after assessment4074084. **Avoid DoS Conditions**409 - Rate limit your requests410 - Don't overload servers411 - Use appropriate concurrency settings412413## Common Pitfalls414415| Mistake | Impact | Solution |416|---------|--------|----------|417| Relying only on automated tools | Miss context-specific findings | Combine automation with manual analysis |418| Skipping JavaScript analysis | Miss API endpoints and secrets | Always analyze client-side code |419| Not checking robots.txt first | Waste time on known paths | Start with obvious information sources |420| Ignoring error messages | Miss technology fingerprinting | Pay attention to verbose errors |421| Too aggressive fuzzing | Detection, IP blocking | Start with smaller wordlists, increase gradually |422423## Integration with Other Skills424425This skill works with:426- skills/reconnaissance/automated-subdomain-enum - Feeds discovered subdomains here427- skills/exploitation/* - Use discovered endpoints for exploitation428- skills/analysis/static-vuln-analysis - Analyze discovered source code429- skills/documentation/* - Document findings systematically430431## Success Metrics432433A successful web app reconnaissance should:434- Identify all major technologies used435- Discover hidden or forgotten functionality436- Extract API endpoints and parameters437- Find configuration or sensitive file exposures438- Map authentication and authorization flows439- Prioritize findings for further testing440- Complete without triggering security alerts (if stealth required)441442## References and Further Reading443444- OWASP Web Security Testing Guide445- "The Web Application Hacker's Handbook" by Dafydd Stuttard446- "Bug Bounty Bootcamp" by Vickie Li (Chapters 4-5)447- PortSwigger Web Security Academy448- HackerOne disclosed reports for real-world examples