Writeup Cash
Overview
Cybersecurity skill for writeup cash. Follows industry best practices and security standards. Turn your bug bounty findings, vulnerability research, and security tooling into multiple income streams: paid writeups on platforms like PentesterLand and Infosec Writeups, commercial security tools sold on GitHub Marketplace or Gumroad, and consulting upsells to organizations that read your published research.
Money-Making Overview
Buyer personas: Bug bounty hunters with validated findings but no monetization pipeline; penetration testers who want to build a public brand; security researchers sitting on unpublished tooling.
Three revenue tiers:
| Tier | Product | Price Range | Time to First Dollar |
|---|---|---|---|
| Writeups | Published technical writeups on paid platforms (PentesterLand, InfoSec Writeups, personal blog with ad/affiliate revenue) | $100-$1,000 / writeup | 2-7 days |
| Tools | CLI tools, PoC scripts, BurpSuite extensions, automation frameworks | $500-$5,000 / tool | 7-30 days |
| Consulting | Brand-driven security consulting, code review, pentest subcontracting | $2,000-$10,000 / engagement | 30-90 days |
Stacking path: Publish 1 writeup/week on paid platforms → bundle 3-5 related PoCs into a $497 tool → use published work as portfolio to land $5K retainer clients.
When to Use
Trigger phrases:
"writeup cash"
"Have accepted bug bounty reports to share"
"Want to build passive income from security research"
"Building a personal brand in security"
Have accepted bug bounty reports to share
Want to build passive income from security research
Building a personal brand in security
Creating content for paid platforms
Developing and selling security tools
When NOT to Use
- When you lack proper authorization for testing
- For production systems without change management
- When the task requires legal or compliance expertise beyond technical scope
- When the finding is already publicly documented by someone else (commoditized)
- When the vulnerability disclosure agreement prohibits publication (always verify NDAs/VDP terms first)
Prerequisites
- Access to relevant log sources and security tools
- Understanding of cash fundamentals
- Appropriate permissions for data access and tool operation
- A validated, non-disclosed vulnerability finding (CVE, bug bounty report, or pentest finding)
- A publisher account on at least one paid platform (Medium Partner Program, PentesterLand, or self-hosted blog with Stripe)
First Action in 60 Minutes
Run this script to convert a raw finding into a publishable writeup:
#!/usr/bin/env python3
"""writeupify.py — Turn a bug bounty finding into a publication-ready writeup."""
import sys, json, datetime, re
TEMPLATE = """---
title: "{title}"
published: {published}
date: {date}
tags: [{tags_str}]
canonical_url: ""
seo_keywords: [{seo_str}]
---
# {title}
**Vulnerability Type:** {vuln_type}
**Target:** {target}
**Severity:** {severity} (CVSS: {cvss})
**Reported:** {reported_date}
**Bounty:** ${bounty}
## TL;DR
{tldr}
## Background
{background}
## Reproduction Steps
1. {step1}
2. {step2}
3. {step3}
## Impact
{impact}
## Remediation
{remediation}
## Timeline
- **Discovery:** {disc_date}
- **Reported:** {rep_date}
- **Triaged:** {tri_date}
- **Bounty Paid:** {pay_date}
- **Disclosure:** {disc_date}
## References
- {ref1}
- {ref2}
"""
def prompt_finding():
print("=== Writeupify — Interactive Finding to Writeup ===", file=sys.stderr)
fields = {}
prompts = [
("title", "Title"),
("vuln_type", "Vulnerability Type (e.g. SQLi, XSS, IDOR)"),
("target", "Target Application / Program"),
("severity", "Severity (Critical/High/Medium/Low)"),
("cvss", "CVSS Score (e.g. 7.5)"),
("bounty", "Bounty Amount (USD)"),
("tldr", "TL;DR (one-sentence summary)"),
("background", "Background (2-3 sentences on the component)"),
("step1", "Step 1 of reproduction"),
("step2", "Step 2 of reproduction"),
("step3", "Step 3 of reproduction"),
("impact", "Impact description"),
("remediation", "Remediation recommendation"),
("disc_date", "Discovery date (YYYY-MM-DD)"),
("rep_date", "Report date (YYYY-MM-DD)"),
("tri_date", "Triage date (YYYY-MM-DD)"),
("pay_date", "Bounty paid date (YYYY-MM-DD)"),
("pub_date", "Publication date (YYYY-MM-DD)"),
("ref1", "Reference URL 1"),
("ref2", "Reference URL 2"),
]
for key, prompt_text in prompts:
val = input(f" {prompt_text}: ").strip() if sys.stdin.isatty() else ""
fields[key] = val or "TBD"
fields["tags_str"] = ", ".join([fields["vuln_type"], fields["severity"], "bug-bounty", "writeup", "infosec"])
fields["seo_str"] = ", ".join([
f"{fields['vuln_type']} writeup",
f"bug bounty {fields['vuln_type']}",
fields["target"],
"how to find " + fields["vuln_type"],
f"{fields['severity']} vulnerability example",
])
fields["date"] = fields.get("pub_date", datetime.date.today().isoformat())
fields["published"] = "false"
return fields
if __name__ == "__main__":
page = prompt_finding()
t = TEMPLATE.format(**page)
slug = re.sub(r"[^a-z0-9]+", "-", page["title"].lower()).strip("-")
path = f"writeups/{slug}.md"
with open(path, "w") as f:
f.write(t)
print(f"[+] Wrote {path} ({len(t)} bytes)")
print(f"[+] SEO keywords: {page['seo_str']}")
print(f"[+] Tags: {page['tags_str']}")
print(f"[+] Next: edit {path}, set published: true, and post to Medium/PentesterLand")
Usage:
python3 writeupify.py
# fills interactively, outputs writeups/<title-slug>.md
Deliverable Format
Use this writeup template as your invoice-ready deliverable for paid platforms. Publish on Medium (Partner Program), PentesterLand, or your own blog with Substack/Stripe:
File: writeups/TEMPLATE_WRITEUP.md
---
title: "Vulnerability Title — {VulnType} in {Target}"
published: false
date: YYYY-MM-DD
tags: [vuln-type, bug-bounty, writeup, infosec, poc]
canonical_url: ""
seo_keywords: ["vuln type writeup", "bug bounty vuln type", "target", "how to find vuln type", "severity vulnerability example"]
---
# Vulnerability Title — {VulnType} in {Target}
**Vulnerability Type:** SQL Injection / XSS / IDOR / SSRF / etc.
**Target:** program.tld / app-name
**Severity:** Critical / High / Medium / Low (CVSS: X.X)
**Bounty:** $500
## TL;DR
One sentence capturing the root cause and business impact.
## Background
- What is the target? What does it do?
- Where is the vulnerable component located?
- Why is it interesting from a security perspective?
## Discovery Methodology
1. **Recon phase:** what endpoints/scopes were enumerated
2. **Testing approach:** tools used, payloads crafted, manual vs automated
3. **Trigger:** exact request/parameter that exposed the bug
## Reproduction Steps (with Evidence)
**Step 1:** Authenticate / navigate to the vulnerable page.
REQUEST: GET /api/users?id=1 HTTP/1.1 Host: target.com Cookie: session=...
**Step 2:** Inject the attack payload.
REQUEST: GET /api/users?id=1' UNION SELECT ... --
**Step 3:** Observe the response.
RESPONSE 200: {"id":1,"email":"admin@target.com","password_hash":"..."}
**Screenshot:** [POC.png](link-to-evidence)
## Impact
- Data exposed / accounts compromised / RCE achieved
- CVSS vector string and score
- Real-world damage scenario
## Remediation
- Specific fix: parameterized queries / input validation / access control check
- Code snippet showing the patch
- Defense-in-depth recommendations
## Timeline
| Date | Event |
|------|-------|
| YYYY-MM-DD | Discovery |
| YYYY-MM-DD | Reported to vendor |
| YYYY-MM-DD | Triaged / acknowledged |
| YYYY-MM-DD | Fix confirmed |
| YYYY-MM-DD | Bounty paid ($X) |
| YYYY-MM-DD | Public disclosure |
## References
- CVE-YYYY-NNNN (if applicable)
- OWASP page for this vulnerability class
- Related H1/Intigriti reports
## Tools Used
- Burp Suite / Caido / ZAP
- Custom script (link to GitHub)
- Nuclei template (link)
---
**Want this finding checked by a professional?** I offer code review and pentest services.
Email: researcher@example.com / Twitter: @handle
SEO checklist for each publish:
-
titlecontains primary keyword + target name -
seo_keywordshas 5 terms matching actual search queries - First 200 characters include the vulnerability type and target
-
canonical_urlpoints to your primary domain - Post includes at least 3 internal links to other writeups
- Social preview image (screenshot of POC) attached
Monetization checklist:
- Posted on Medium with Partner Program enabled
- Cross-posted to PentesterLand (paid per view)
- Shared on Twitter with "writeup" and "bug bounty" hashtags
- PoC script extracted and listed on Gumroad / GitHub Marketplace ($29-$97)
- CTA at bottom: "Need a deep-dive audit? DM me for consulting rates"
Process
- Prepare — Verify finding is publishable (non-confidential, novel or well-demonstrated)
- Write — Run
writeupify.py, fill template, add screenshots and request/response pairs - SEO — Optimize title, keywords, description, canonical URL for search discovery
- Publish — Post to paid platform (Medium Partner Program, PentesterLand, self-hosted with ads)
- Promote — Tweet the writeup, post on Reddit r/netsec, cross-post on dev.to
- Monetize — Offer consulting, bundle PoC into a tool, create a video walkthrough for YouTube
Verification
- Written finding is non-confidential and legally publishable
- Writeup includes reproduction steps with request/response evidence
- SEO metadata populated; canonical URL set
- PoC script ready for standalone sale
- Cross-published on at least 2 platforms
- CTA for consulting / tool sales included in footer
Anti-Rationalization Table
| Rationalization | Reality |
|---|---|
| "My finding is too small for a paid writeup." | Every writeup builds your portfolio. A $100 writeup today leads to a $5K client tomorrow. Publish anyway. |
| "Someone else already wrote about this bug class." | Your specific target, methodology, and payload variations are unique. Nobody has your exact writeup. |
| "I don't have time to write polished content." | The writeupify script generates a publishable draft in 10 minutes. Polish adds 30 min. That's <1 hour for $100-500. |
| "I'll give away my competitive edge by publishing PoCs." | Public PoCs establish expertise, attract clients, and signal to programs that you understand disclosure. The edge is your brain, not one payload. |
| "Tool sales are passive income — just build it once." | Tools require documentation, support, updates for new versions, and marketing. Budget 5h/week per tool for maintenance and sales. |
| "Consulting clients will find me through my writeups automatically." | Passive discoverability is low. You must add a CTA, tweet every writeup, and DM program managers. No CTA = no leads. |