-
-
Notifications
You must be signed in to change notification settings - Fork 10
Getting Started Guide for Bug Hunters
A step-by-step setup guide for new users. By the end of this guide, you'll have the repository installed, tools configured, API keys set up, and your first automated reconnaissance workflow running.
Before you begin, ensure you have:
| Requirement | Minimum Version | How to Check |
|---|---|---|
| Operating System | Linux (recommended) or macOS | uname -a |
| Git | 2.30+ | git --version |
| Python | 3.6+ | python3 --version |
| Bash | 4.0+ | bash --version |
| pip3 | Latest | pip3 --version |
| curl | Any recent version | curl --version |
| Disk Space | ~500 MB free | df -h |
Windows Users: Use Windows Subsystem for Linux (WSL2) for full compatibility. Install WSL2 with Ubuntu, then follow this guide within your WSL terminal.
# Navigate to your preferred directory
cd ~/Documents
# Clone the repository
git clone https://github.com/aw-junaid/bug-bounty.git
# Enter the project directory
cd bug-bountyTake 5 minutes to familiarize yourself with the layout:
# View the top-level structure
ls -la
# You should see:
# course/ - Structured learning curriculum
# methodologies/ - In-depth exploitation guides
# resources/ - Cheatsheets, templates, wordlists
# tools/ - Automation, recon, exploitation scripts
# write-ups/ - Real-world bug bounty reports
# LICENSE - MIT License
# README.md - Main repository documentationQuick Tour:
| Directory | Purpose | Example Content |
|---|---|---|
methodologies/web penetration/ |
How to find and exploit vulnerabilities |
SQL Injection.md, XSS.md
|
methodologies/web technologies/ |
Platform-specific exploitation | WordPress Penetration Testing.md |
resources/cheatsheets/ |
Quick-reference commands | SQL-Injection.md |
resources/templates/ |
Bug report format | bug-report-template.md |
resources/wordlists/ |
Fuzzing and discovery lists | xss-payloads.txt |
tools/automation/ |
Workflow scripts | bug-bounty-workflow.sh |
tools/exploitation/ |
Vulnerability testers | sqli-tester.py |
tools/reconnaissance/ |
Enumeration scripts | subdomain-enum.py |
tools/utilities/ |
Helper tools | payload-generator.py |
Read: Want a deeper dive? See Understanding the Repository Structure.
# Update package lists (Ubuntu/Debian)
sudo apt update
# Install essential system packages
sudo apt install -y \
git \
python3 \
python3-pip \
curl \
wget \
jq \
dnsutils \
whois
# For macOS (using Homebrew)
brew install \
git \
python3 \
curl \
wget \
jq \
bind \
whoisThe repository's Python tools have minimal dependencies. Install them all at once:
# Enter the bug-bounty directory
cd ~/Documents/bug-bounty
# Install core Python packages used by multiple tools
pip3 install --user \
requests \
beautifulsoup4 \
dnspython \
colorama \
argparse
# Verify installation
pip3 list | grep -E "requests|beautifulsoup4|dnspython"The bug-bounty-workflow.sh script integrates with popular open-source tools. Install the ones you want:
# ---- Subdomain Enumeration ----
# Subfinder (ProjectDiscovery)
go install -v github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest
# Amass (OWASP)
go install -v github.com/owasp-amass/amass/v4/...@master
# ---- HTTP Probing ----
# httpx (ProjectDiscovery)
go install -v github.com/projectdiscovery/httpx/cmd/httpx@latest
# ---- Vulnerability Scanning ----
# Nuclei (ProjectDiscovery)
go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
# ---- Directory Fuzzing ----
# ffuf
go install -v github.com/ffuf/ffuf/v2@latest
# ---- Ensure Go binaries are in PATH ----
export PATH=$PATH:$HOME/go/bin
echo 'export PATH=$PATH:$HOME/go/bin' >> ~/.bashrc
source ~/.bashrcNote: If you don't have Go installed, download it from go.dev/dl or use
sudo apt install golang-go(Ubuntu). Minimum Go version: 1.19+.
Some users prefer these additional tools:
# Shodan CLI for service enumeration
pip3 install --user shodan
# Waybackurls for historical URL discovery
go install -v github.com/tomnomnom/waybackurls@latest
# GF pattern-based URL filtering
go install -v github.com/tomnomnom/gf@latestMany reconnaissance tools require API keys for services like Shodan, SecurityTrails, and Censys. Here's how to set them up:
# Create config directory for tools
mkdir -p ~/.config/{subfinder,amass,nuclei}
# Create a secure directory for API keys
mkdir -p ~/.bugbounty
chmod 700 ~/.bugbounty| Service | Purpose | Free Tier | Registration Link |
|---|---|---|---|
| SecurityTrails | DNS history, subdomains | 50 req/month | securitytrails.com |
| Shodan | Service discovery | Limited queries | shodan.io |
| Censys | Certificate transparency | 250 req/month | censys.io |
| GitHub Token | GitHub dorking, code search | 5000 req/hr | github.com/settings/tokens |
| Chaos (ProjectDiscovery) | Subdomain dataset | Free | chaos.projectdiscovery.io |
Method 1: Environment Variables (Recommended)
Create a secure credentials file:
# Create credentials file
cat > ~/.bugbounty/credentials.sh << 'EOF'
#!/bin/bash
# SecurityTrails
export SECURITYTRAILS_API_KEY="your-key-here"
# Shodan
export SHODAN_API_KEY="your-key-here"
# Censys
export CENSYS_API_ID="your-id-here"
export CENSYS_API_SECRET="your-secret-here"
# GitHub Token (for dorking, no special scopes needed)
export GITHUB_TOKEN="ghp_yourtokenhere"
# Chaos (ProjectDiscovery)
export CHAOS_KEY="your-chaos-key-here"
EOF
# Set proper permissions
chmod 600 ~/.bugbounty/credentials.sh
# Load credentials for current session
source ~/.bugbounty/credentials.sh
# Auto-load on shell startup
echo 'source ~/.bugbounty/credentials.sh 2>/dev/null' >> ~/.bashrcMethod 2: Tool-Specific Configuration
# Configure Subfinder
cat > ~/.config/subfinder/provider-config.yaml << 'EOF'
securitytrails:
- your-securitytrails-api-key
censys:
- your-censys-api-id:your-censys-api-secret
chaos:
- your-chaos-api-key
github:
- your-github-token
EOF
chmod 600 ~/.config/subfinder/provider-config.yaml# Test Subfinder with API keys
subfinder -d example.com -s securitytrails -silent
# Test Shodan CLI
shodan info
# Test your credentials file
source ~/.bugbounty/credentials.sh
echo "SecurityTrails Key: ${SECURITYTRAILS_API_KEY:0:5}..." # Should show first 5 chars# Navigate to the tools directory
cd ~/Documents/bug-bounty/tools
# Make the main workflow script executable
chmod +x automation/bug-bounty-workflow.sh
# Make all script files executable
chmod +x reconnaissance/subdomain-enum.py
chmod +x reconnaissance/url-collector.sh
chmod +x exploitation/sqli-tester.py
chmod +x exploitation/xss-scanner.py
chmod +x utilities/payload-generator.py
chmod +x utilities/wordlist-merger.sh
# Return to repository root
cd ~/Documents/bug-bountyThe bug-bounty-workflow.sh script chains together multiple reconnaissance and scanning steps:
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β BUG BOUNTY AUTOMATION WORKFLOW β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββ
β 1. Create Output β
β Directory β
βββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββ
β 2. Subdomain β
β Enumeration β
βββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββ
β 3. DNS Resolution β
β & Validation β
βββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββ
β 4. HTTP Probing β
β (httpx) β
βββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββ
β 5. Technology β
β Detection β
βββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββ
β 6. URL Collection β
β (wayback, GAU) β
βββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββ
β 7. Vulnerability β
β Scanning (Nuclei) β
βββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββ
β 8. Generate Report β
βββββββββββββββββββββββββ
| Safe Practice Targets | Purpose |
|---|---|
testasp.vulnweb.com |
Acunetix test PHP site (intentionally vulnerable) |
testphp.vulnweb.com |
Acunetix test ASP site |
| Your own VPS/domain | Full control, no legal risk |
| Local lab (Docker) | docker run -d -p 80:80 vulnerables/web-dvwa |
Option A: Basic Run (Minimal Tools)
cd ~/Documents/bug-bounty
# Run against a safe test target
./tools/automation/bug-bounty-workflow.sh testphp.vulnweb.com
# With a custom output directory
./tools/automation/bug-bounty-workflow.sh testphp.vulnweb.com -o ./recon-results/acunetix-phpOption B: Full Run (All Tools Available)
# Source your API credentials first
source ~/.bugbounty/credentials.sh
# Run the full workflow
./tools/automation/bug-bounty-workflow.sh example.com \
--output ./recon-results/example-com \
--full-scan \
--nuclei-templates ~/nuclei-templatesAfter the workflow completes, examine your results:
recon-results/
βββ example-com/
βββ subdomains/
β βββ subdomains.txt # All discovered subdomains
β βββ live-subdomains.txt # HTTP/HTTPS responsive subdomains
β βββ subdomains-resolved.txt # DNS-resolved subdomains
βββ urls/
β βββ all-urls.txt # Collected URLs from all sources
β βββ wayback-urls.txt # Wayback Machine URLs
β βββ js-files.txt # JavaScript file URLs
βββ scans/
β βββ nuclei-results.txt # Nuclei vulnerability findings
β βββ technology-stack.txt # Detected technologies per host
βββ endpoints/
β βββ interesting-paths.txt # Discovered interesting endpoints
βββ report/
βββ recon-report.txt # Summary report of findings
# Quick summary of findings
cat recon-results/example-com/report/recon-report.txt
# Check for vulnerabilities
grep -E "critical|high|medium" recon-results/example-com/scans/nuclei-results.txt
# List all live subdomains
cat recon-results/example-com/subdomains/live-subdomains.txt
# Count total discovered assets
echo "Subdomains: $(wc -l < recon-results/example-com/subdomains/subdomains.txt)"
echo "Live hosts: $(wc -l < recon-results/example-com/subdomains/live-subdomains.txt)"
echo "URLs found: $(wc -l < recon-results/example-com/urls/all-urls.txt)"Automation is great, but real bug hunting requires manual testing. Here's a quick exercise:
# Use the XSS scanner against collected URLs
python3 tools/exploitation/xss-scanner.py \
--input recon-results/example-com/urls/all-urls.txt \
--output xss-findings.txt
# Review findings
cat xss-findings.txt# Grab a URL with parameters from your recon
head -5 recon-results/example-com/urls/all-urls.txt
# Example output: https://example.com/search.php?q=test
# Test for XSS manually
curl -s "https://example.com/search.php?q=<script>alert(1)</script>"
# Test for SQL injection
python3 tools/exploitation/sqli-tester.py --url "https://example.com/search.php?q=test"# Generate context-specific XSS payloads
python3 tools/utilities/payload-generator.py \
--type xss \
--context "search box with character limit" \
--output custom-xss.txt
# Generate SQLi payloads with WAF bypass attempts
python3 tools/utilities/payload-generator.py \
--type sqli \
--waf cloudflare \
--output custom-sqli.txtRun this verification checklist to confirm everything works:
#!/bin/bash
# Save as verify-setup.sh and run: bash verify-setup.sh
echo "======================================="
echo " Bug Bounty Setup Verification Test "
echo "======================================="
echo ""
# Check 1: Repository structure
echo "[1/7] Checking repository structure..."
[ -f "README.md" ] && echo " β README.md found" || echo " β README.md missing"
[ -d "methodologies" ] && echo " β methodologies/ found" || echo " β methodologies/ missing"
[ -d "tools" ] && echo " β tools/ found" || echo " β tools/ missing"
[ -d "resources" ] && echo " β resources/ found" || echo " β resources/ missing"
# Check 2: Python version
echo ""
echo "[2/7] Checking Python..."
python3 --version && echo " β Python OK" || echo " β Python not found"
# Check 3: Python dependencies
echo ""
echo "[3/7] Checking Python dependencies..."
python3 -c "import requests" 2>/dev/null && echo " β requests installed" || echo " β requests missing"
python3 -c "import bs4" 2>/dev/null && echo " β beautifulsoup4 installed" || echo " β beautifulsoup4 missing"
python3 -c "import dns" 2>/dev/null && echo " β dnspython installed" || echo " β dnspython missing"
# Check 4: Tool executability
echo ""
echo "[4/7] Checking tool permissions..."
[ -x "tools/automation/bug-bounty-workflow.sh" ] && echo " β Workflow script executable" || echo " β Workflow script not executable"
[ -x "tools/exploitation/sqli-tester.py" ] && echo " β SQLi tester executable" || echo " β SQLi tester not executable"
[ -x "tools/exploitation/xss-scanner.py" ] && echo " β XSS scanner executable" || echo " β XSS scanner not executable"
# Check 5: External tools (optional)
echo ""
echo "[5/7] Checking external tools (optional)..."
command -v subfinder &>/dev/null && echo " β subfinder installed" || echo " - subfinder not installed (optional)"
command -v nuclei &>/dev/null && echo " β nuclei installed" || echo " - nuclei not installed (optional)"
command -v ffuf &>/dev/null && echo " β ffuf installed" || echo " - ffuf not installed (optional)"
command -v httpx &>/dev/null && echo " β httpx installed" || echo " - httpx not installed (optional)"
# Check 6: API credentials (optional)
echo ""
echo "[6/7] Checking API credentials (optional)..."
[ -n "$SECURITYTRAILS_API_KEY" ] && echo " β SecurityTrails API key set" || echo " - SecurityTrails API key not set (optional)"
[ -n "$SHODAN_API_KEY" ] && echo " β Shodan API key set" || echo " - Shodan API key not set (optional)"
# Check 7: Quick tool test
echo ""
echo "[7/7] Running quick functionality test..."
python3 tools/utilities/payload-generator.py --type xss --context test 2>/dev/null | head -3
[ $? -eq 0 ] && echo " β Payload generator works" || echo " β Payload generator failed"
echo ""
echo "======================================="
echo " Setup Verification Complete! "
echo "======================================="
echo ""
echo "Next Steps:"
echo " 1. Read the FAQ: wiki/FAQ"
echo " 2. Start the course: course/README.md"
echo " 3. Join Discord: https://discord.gg/Neddn8gPqY"Run the verification:
bash verify-setup.sh| Problem | Likely Cause | Solution |
|---|---|---|
python3: command not found |
Python 3 not installed | sudo apt install python3 |
ModuleNotFoundError: No module named 'requests' |
Missing pip package | pip3 install requests |
Permission denied: bug-bounty-workflow.sh |
Script not executable | chmod +x tools/automation/bug-bounty-workflow.sh |
subfinder: command not found |
Go binary path not in PATH | export PATH=$PATH:$HOME/go/bin |
| API keys not working | Keys not exported or malformed | Run source ~/.bugbounty/credentials.sh
|
fatal: destination path already exists |
Already cloned the repo | Navigate to existing directory or remove it |
| Workflow script exits immediately | No target specified | Always provide a target: ./script.sh example.com
|
| Git clone permission denied | SSH key issue or repo access | Use HTTPS: git clone https://github.com/aw-junaid/bug-bounty.git
|
| WSL: Scripts fail with Windows line endings | CRLF vs LF issue | Run sed -i 's/\r$//' tools/automation/bug-bounty-workflow.sh
|
Now that your environment is set up, here's where to go based on your goals:
| Your Goal | Next Resource |
|---|---|
| Learn web vulnerabilities systematically | Course Materials |
| Start hunting on real programs | FAQ#i-found-a-bug-where-do-i-report-it |
| Master a specific vulnerability | Complete Vulnerability Index |
| Understand the repo deeply | Understanding the Repository Structure |
| Automate everything | Recon Automation Pipeline: A Deep Dive |
| Read real-world examples | Write-ups Index |
| Meet the community | Join Discord |
Save this as a reference for your daily workflow:
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# β DAILY BUG BOUNTY COMMANDS β
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# Source API credentials
source ~/.bugbounty/credentials.sh
# Full automated recon
./tools/automation/bug-bounty-workflow.sh TARGET.COM
# Manual subdomain discovery
subfinder -d TARGET.COM -o subs.txt
# Check live hosts
httpx -l subs.txt -o live.txt
# Collect URLs
cat live.txt | waybackurls > urls.txt
# Scan for vulnerabilities
nuclei -l live.txt -t ~/nuclei-templates/
# Fuzz directories
ffuf -u https://TARGET.COM/FUZZ -w resources/wordlists/directories-small.txt
# Test SQL injection
python3 tools/exploitation/sqli-tester.py --url "TARGET"
# Scan for XSS
python3 tools/exploitation/xss-scanner.py --input urls.txt
# Generate payloads
python3 tools/utilities/payload-generator.py --type xss| Knowledge Base | Tools | Project |
|---|---|---|
| Methodologies Β· Cheatsheets Β· Write-ups Β· Course | Automation Β· Exploitation Β· Recon | Security Policy Β· Code of Conduct Β· License |
β οΈ This repository contains real exploitation techniques. Unauthorized use is a criminal offense under the CFAA, Computer Misuse Act, and equivalent laws worldwide. Use only on systems you own or have explicit written permission to test.
Β© 2026 aw-junaid Β· MIT License
For Security Researchers
Methodologies β’ Cheatsheets β’ Tools β’ Write-ups
- π Wiki Home
- β FAQ
- π Project Overview & Philosophy
- π Getting Started Guide
- π€ How to Contribute
- π Course Materials
- πΊοΈ Repository Structure
- π Glossary of Terms
- βοΈ The Master Attack Flow
Core vulnerability exploitation guides
- API Security Testing
- Brute Force Attacks
- CORS Exploitation
- CRLF Injection
- CSRF
- Clickjacking
- Crawling & Fuzzing
- DNS Rebinding
- Deserialization
- Email Attacks
- Exploit Broken Links
- Race Conditions
- File Upload Vulnerabilities
- GraphQL Security Testing
- HTTP Parameter Pollution
- HTTP Request Smuggling
- Hashes
- IDOR
- Injection Exploitation
- LFI & RFI
- OAuth
- Open Redirect
- Prototype Pollution
- SQL Injection
- SSRF
- SSTI
- Session Fixation
- Supply Chain Attack
- Tabnabbing
- VHost
- Web Cache Deception
- WebSocket Exploitation
- Webshell
- XXE Vulnerabilities
- Cookies Padding
- CSP
- Header Injection
- Cross-Site Scripting (XSS)
Platform-specific exploitation guides
- ASP.NET
- Apache Tomcat
- CI/CD Security
- ELK Stack
- Exploitation Methodologies
- Buffer Overflows
- C2 Frameworks
- File Transfer Exploitation
- Firebase
- Firebird Database
- Flask Application
- From Recon to Root
- GitHub Security
- GitLab
- JWT
- Jenkins
- Joomla
- Linux Kernel Exploitation
- MFA/2FA Exploitation
- NoSQL Injection
- OAuth Exploitation
- OpenID Connect
- Privilege Escalation
- Remote Code Execution
- Reverse Shells
- SaaS Security Testing
- WAF
- WebDAV
- WordPress Penetration Testing
Quick-reference payloads & commands
- API Security
- ASP.NET
- Broken Links
- Bruteforcing
- Buffer Overflow
- CRLF Injection
- CSRF
- Clickjacking
- Command Injection
- Cookie Padding
- Crawling
- CORS
- CSP
- DNS Rebinding
- DavTest
- Deserialization
- Elasticsearch
- Email Attacks
- File Transfer
- File Upload
- Firebase
- Firebird
- Flask
- GitHub Security
- GitLab
- GraphQL
- HTTP Parameter Pollution
- HTTP Request Smuggling
- Hashes
- Header Injection
- IDOR
- JWT
- Jenkins
- Joomla
- Linux Kernel Exploits
- LFI & RFI
- MFA/2FA
- Modern C2 Frameworks
- NoSQL Injection
- OAuth
- OAuth 1.0
- OpenID Connect
- Open Redirects
- Payloads
- Ports
- Privilege Escalation
- Prototype Pollution
- Race Conditions
- Recon & Exploitation Reference
- Reverse Shells
- SQL Injection
- SaaS Security Testing
- SSRF
- SSTI
- Session Fixation
- Supply Chain Attacks
- Tabnabbing
- Tomcat Security Testing
- VHosts
- WAFs
- Web Cache Deception
- Web Exploits & C2
- Web Sockets
- Webshells
- WordPress
- XXE
- XSS Cheatsheet
- Web Penetration Commands
π View All 68 Cheatsheets
All cheatsheets are interlinked with their corresponding methodologies. Use the search function (press
t on GitHub) to find a specific one quickly.
- π Bug Report Template
- π Custom Subdomains Wordlist
- π Directory Brute Force Wordlist
- π XSS Payloads Wordlist
βοΈ Automation
π₯ Exploitation
π Reconnaissance
π§ Utilities
| Link | Destination |
|---|---|
| π Wiki Home | Home |
| π Repository | GitHub |
| β FAQ | FAQ |
| π Report a Bug | Security Policy |
| π License | MIT License |
| π¬ Discord | Join Server |
β‘ Stay curious. Hack ethically. Report responsibly.
Β© 2026 @aw-junaid β’ Built with π¬ for the security community