What is a Proof of Concept?
A Proof of Concept (PoC) in cybersecurity is a demonstration that shows how a vulnerability can be exploited to achieve an impact. It's not about full exploitation, but rather about verifying that the issue is real and can be used under certain conditions. A well-structured PoC is critical for convincing stakeholders and developers to prioritize remediation.
๐จ Why PoCs Matter
- Validate vulnerabilities in a safe and controlled way
- Provide evidence for risk assessment and remediation
- Help developers reproduce the issue for testing fixes
- Strengthen the credibility of a report or bug bounty submission
๐ Key Concepts
Clarity
Explain exactly how the vulnerability was discovered and how it can be replicated. Include URLs, parameters, payloads, headers, etc.
Minimal Impact
Show enough to prove the risk without damaging the system or data.
Repeatability
Anyone following your PoC steps should be able to reproduce the result.
๐งญ How to Write a Good PoC (Step-by-Step)
- Describe the vulnerability: Include what, where, and how it occurs.
- Include context: Mention affected endpoints, roles, parameters, and requirements (auth/no auth).
- Build the request: Use curl, Burp Suite, Postman, or raw HTTP to demonstrate.
- Explain the response: Highlight what confirms the vulnerability (error message, behavior, data, etc.).
- Visuals (optional): Add screenshots or GIFs to make it clearer.
๐ ๏ธ Real-World Example: IDOR PoC
Vulnerability: Insecure Direct Object Reference (IDOR) on /api/user/profile?id=
# Authenticated request with user A's token
GET /api/user/profile?id=102 HTTP/1.1
Host: vulnerable.site
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6Ikp...
# Response reveals user B's data
{
"id": 102,
"email": "b.user@example.com",
"role": "editor"
}
Explanation: By simply changing the id
parameter, an attacker can access data belonging to another user. No access control validation is performed server-side.
๐ก PoC Writing Tips
- Use tools like
curl
orBurp Suite
to capture and replay HTTP requests. - Highlight the exact line or response portion that proves the exploit works.
- Always test in a safe environment or with permission.
- Never include personal or sensitive data from others in public reports.
- Keep your PoC short, impactful, and easy to reproduce.