Bug-bounty workflow
TL;DR. Bug bounty is a pipeline, not a search. This playbook takes you from program-list to paid report, with the decision points where most hunters lose hours.
End-to-end flow
flowchart TD
A[Open program list — HackerOne / Bugcrowd / Intigriti / YesWeHack / private] --> B{Picking the right target}
B --> C[Read scope carefully — open program-scope-reading]
C --> D{Mature or fresh?}
D -- "mature, high payout" --> E[Need novel angle — recon or new feature]
D -- "fresh / recently launched" --> F[Standard methodology works]
E --> G[Step 2 — recon]
F --> G
G --> H[Step 3 — hunt]
H --> I{Found bug?}
I -- yes --> J[Step 4 — confirm + impact]
I -- no --> K[Rotate target, document partials]
J --> L[Step 5 — report]
L --> M{Triaged?}
M -- accepted --> N[Patch + bounty]
M -- duplicate --> O[Take lesson — start over earlier in graph]
M -- N/A --> P[Argue impact once; if rejected, accept]
Step 1 — picking the right program
flowchart TD
A[Available programs] --> B{What matches your skills?}
B -- "Web app / API" --> C[Open web-application-security or api-security]
B -- "Mobile" --> D[Open mobile-security]
B -- "Smart contract" --> E[Open blockchain-security]
B -- "Cloud / SaaS" --> F[Open cloud-red-team]
C --> G{Payout vs. competition?}
D --> G
E --> G
F --> G
G -- "high payout, lots of hunters" --> H[Need recon or novel-tech angle]
G -- "lower payout, less competition" --> I[Standard methodology pays]
G -- "private invite" --> J[Less competition, often better signal-to-noise]
Step 2 — recon
flowchart TD
A[Scope confirmed] --> B{Scope shape?}
B -- "*.target.com (vertical)" --> C[Open subdomain-enumeration + certificate-transparency]
B -- "Multiple apex domains (horizontal)" --> D[Open acquisitions-recon + asn-enumeration + reverse-whois]
B -- "Single host" --> E[Skip horizontal, go direct to content-discovery]
C --> F[Run tools: subfinder + amass + httpx + nuclei + katana]
D --> F
E --> F
F --> G[Diff against last scan; alert on new — see continuous-recon-automation]
G --> H[For each new asset: fingerprint + JS-recon + content-discovery]
H --> I{High-value asset?}
I -- yes --> J[Step 3]
I -- no --> K[Park for later, focus elsewhere]
Step 3 — hunt
flowchart TD
A[Picked asset] --> B[Walk the app as a real user — open getting-feel-for-target]
B --> C[Map auth boundaries: anon vs user vs admin vs tenant]
C --> D{Choose attack angle}
D -- "Auth / AuthZ" --> E[Open broken-access-control / idor / bola / bfla]
D -- "Input handling" --> F[Open web-triage playbook]
D -- "Recon-found tech CVE" --> G[Open known-vuln-workflow]
D -- "Logic / business flow" --> H[Open application-logic-flaws]
D -- "Auth tokens (JWT / SAML / OAuth)" --> I[Open jwt / saml-attacks / oauth-token-theft]
E --> J{Found anomaly?}
F --> J
G --> J
H --> J
I --> J
J -- yes --> K[Confirm — Step 4]
J -- no --> L[Expand attack surface — open expanding-attack-surface]
Step 4 — confirm and demonstrate impact
flowchart TD
A[Anomaly found] --> B[Reproduce in clean session]
B --> C{Reproducible?}
C -- "yes, consistent" --> D[Step 5 — write up]
C -- "intermittent" --> E[Try to identify the variable — race, cache, region, account state]
E --> F{Repro nailed?}
F -- yes --> D
F -- no --> G[Submit with caveats; mention non-determinism]
D --> H{Impact obvious?}
H -- yes --> I[Move to report]
H -- "no — bug exists but impact is unclear" --> J[Open demonstrating-impact — chain or escalate]
J --> K{Chained?}
K -- yes --> I
K -- no --> L[Decide: report as-is for info, or shelve]
Step 5 — report
flowchart TD
A[Ready to write] --> B[Open report-writing-step-by-step]
B --> C[Title — descriptive, not 'XSS in app']
C --> D[Summary — what + where + why bad in three sentences]
D --> E[Severity — CVSS only if it adds clarity]
E --> F[Reproduction — numbered, copy-pasteable, environment-stated]
F --> G[Impact — concrete worst-case for the program]
G --> H[Recommendation — short, non-prescriptive]
H --> I[Validate — re-read as triager; cut anything that bloats]
I --> J[Submit]
After submission
flowchart TD
A[Report submitted] --> B{Triage response}
B -- "Triaged + valid" --> C[Wait for fix; respond to questions promptly]
B -- "Duplicate" --> D[Open dupe-mental-model — note what got it dup'd, adjust]
B -- "N/A — not applicable" --> E{Disagree?}
E -- yes --> F[One polite, evidence-heavy argument]
F --> G{Reversed?}
G -- yes --> C
G -- no --> H[Accept, move on]
E -- no --> H
B -- "Asking for more info" --> I[Provide cleanly — open disclosure-and-comms]
I --> B
Burnout / pipeline management
flowchart TD
A[Three+ consecutive dry sessions] --> B[Rotate target]
B --> C{Still dry across 2-3 targets?}
C -- yes --> D[Step back — read disclosed reports, study a new bug class]
C -- no --> E[Back to the hunt]
D --> F[Pick a fresh program after 1-2 weeks]
Anti-patterns
- Skipping scope reading and submitting an out-of-scope finding.
- Spamming low-impact reports for volume; reputation tanks fast.
- Chasing 0-days when basic auth-z testing pays better.
- Re-reading the same WAHH chapter instead of testing.
- Not keeping recon delta — you re-discover yesterday’s subdomains every time.
Where to go next
- Methodology depth → bug-bounty-methodology.
- Specific bug class → web-triage picks the lane.
- Engagement-level mental model → [[bug-bounty-index|bug bounty topics]].