300 words
2 minutes
🐛 Bug Hunting Methodology
First post in the Bug Hunting section. This is my repeatable methodology, refined over time. I’ll edit and expand as I learn.
1. Target intake
Before any tool runs:
- Confirm you have explicit permission to test the target (self-owned, authorized engagement, or a public VDP). No permission, no testing.
- Understand what the target actually does. A bug that’s noise in one threat model can be P1 in another.
- Map out what’s in scope and what’s off-limits. Stay inside that boundary the entire time.
2. Recon
- Subdomain enumeration:
amass,subfinder,crt.shfor cert transparency - Tech fingerprinting:
wappalyzer,whatweb,httpxfor response headers - Content discovery:
feroxbuster/ffufwith curated wordlists by tech stack - JS analysis: pull all JS, search for endpoints, secrets, internal API paths
I lean heavily on my own RECOG.py pipeline to chain these.
3. Bug classes I prioritize (web)
In rough order of impact on most targets:
- IDOR / broken access control: still the highest-impact class on most web apps
- Auth bypass / session handling: race conditions, token reuse, OAuth misconfig
- SSRF: especially via image fetchers, webhooks, URL parameter parsing
- Server-side template injection: when frameworks expose user-rendered templates
- Business logic: race conditions, state machine abuse, price/quantity manipulation
- Stored XSS in admin / privileged surfaces: high impact, often overlooked
XSS in user-facing surfaces is fine but lower impact, so go for higher-leverage classes first.
4. Triage and write-up
Before reporting:
- Reproduce on a clean account / browser (no extensions, no logged-in cookies)
- Capture minimal repro steps in 3 to 5 lines
- Describe impact in business terms, not just “I can call X endpoint”
- Provide remediation guidance. Make it easy for the team to fix it.
5. Ethics
- Never test outside what you’re authorized to test. Period.
- No data exfiltration beyond proof of impact. One record beats a full dump.
- Disclose responsibly. Coordinate with the team, don’t publish until they’ve had time to fix and are okay with it.
This is a living document. I’ll update it as my methodology evolves.