Penetration Testing Report Template + Real-World Examples

How to structure a pentest report that actually gets vulnerabilities fixed — with sample findings, executive summary tips, and free downloadable templates.

October 16, 2026 14 min read VulnSkill Team

Table of Contents

  1. Why the Report Is the Most Important Deliverable
  2. What a Pentest Report Should Include
  3. Executive Summary
  4. Scope and Methodology
  5. Findings Summary Table
  6. Detailed Technical Findings
  7. Risk Ratings and CVSS Scoring Explained
  8. Remediation Roadmap
  9. Retesting and Verification
  10. Download Our Free Template
  11. Common Report Mistakes to Avoid
  12. Frequently Asked Questions

I've written and reviewed somewhere north of 500 penetration testing reports over the past decade. And here's what I've learned: the report is the product. Not the testing. Not the hours spent poking at firewalls. Not the clever exploit chain you pieced together at 2 AM. The report.

Your client will never watch you test. They'll never see the Burp Suite tabs or the terminal output scrolling by. What they will see — what they'll share with their dev team, their CISO, their board, their auditors — is the report. If the report is unclear, incomplete, or poorly structured, the vulnerabilities don't get fixed. And unfixed vulnerabilities are the same as undiscovered ones.

This guide covers everything that goes into a professional penetration testing report template, with real-world examples of how each section should look. Whether you're a pentester looking to write better reports or a company that wants to know what to expect from your next penetration testing engagement, this is the reference you'll want to bookmark.

Why the Report Is the Most Important Deliverable

Let me put it bluntly: clients pay for findings, not hours. A pentest engagement where you find 15 critical vulnerabilities but deliver a confusing, jargon-heavy PDF is worse than finding 5 issues and presenting them in a way that gets the dev team to actually fix them.

I've seen brilliant testers lose repeat business because their reports read like raw tool output. I've also seen average testers build six-figure client relationships because their reports were clear, actionable, and professionally structured.

Here's why the report matters so much:

Bottom line: A penetration test without a clear, actionable report is an incomplete penetration test. The report is where testing becomes value.

What a Pentest Report Should Include

Every professional penetration testing report sample follows a similar structure. The specifics vary by firm and engagement type, but here are the sections that should appear in every report:

  1. Cover Page — Client name, engagement title, date, classification (Confidential), testing firm details
  2. Document Control — Version history, distribution list, document classification
  3. Executive Summary — Non-technical overview for leadership (1-2 pages)
  4. Scope and Methodology — What was tested, how, when, and against which standards
  5. Findings Summary Table — All vulnerabilities at a glance with severity ratings
  6. Detailed Technical Findings — Full write-up of each vulnerability with evidence
  7. Risk Ratings Explanation — How severity was determined (CVSS methodology)
  8. Remediation Roadmap — Prioritized fix plan with owners and timelines
  9. Retesting Recommendations — What to retest and when
  10. Appendices — Tool output, scan results, supplementary evidence

Let's walk through each section in detail, with examples you can use as templates for your own reports.

Executive Summary

The executive summary is arguably the most important section of the entire penetration testing report — and paradoxically, it's the one most pentesters get wrong. The executive summary is not for the dev team. It's for the CISO, the CTO, the VP of Engineering, the board of directors. People who make budget decisions but may not know what SQL injection is.

What Goes in the Executive Summary

Example Executive Summary Paragraph

Sample: "VulnSkill conducted a grey-box web application penetration test of the Acme Corp customer portal (portal.acme.com) between September 15-22, 2026. Testing identified 18 vulnerabilities: 2 Critical, 4 High, 7 Medium, 3 Low, and 2 Informational. The two critical findings — an SQL injection vulnerability in the login endpoint and an insecure direct object reference allowing access to other customers' invoices — could enable an attacker to extract the entire customer database or access sensitive financial records without authentication. We recommend immediate remediation of all Critical and High findings before the application's planned public launch on November 1."

Tips for Non-Technical Writing

Scope and Methodology

This section documents exactly what was tested, what was not tested, and how testing was performed. It sets expectations, provides context for the findings, and is critical for compliance and audit purposes.

Scope Details to Include

Standards and Methodology

Reference the standards your testing follows. The most commonly cited frameworks in a web application penetration testing report include:

Tools Used

List the primary tools used during testing. This adds transparency and helps the development team understand how findings were discovered:

Findings Summary Table

Before diving into detailed findings, give readers a quick overview of everything you found. The findings summary table lets a reader understand the overall security posture in under 30 seconds.

Severity Breakdown

Severity Count CVSS Range Remediation Timeline
Critical 2 9.0 – 10.0 Immediate (within 48 hours)
High 4 7.0 – 8.9 Within 7 days
Medium 7 4.0 – 6.9 Within 30 days
Low 3 0.1 – 3.9 Within 90 days
Informational 2 0.0 Best effort / next release

Findings Overview

# Finding Severity CVSS Status
1 SQL Injection in Login Endpoint Critical 9.8 Open
2 Insecure Direct Object Reference (IDOR) in Invoice API Critical 9.1 Open
3 Stored XSS in User Profile Fields High 8.1 Open
4 Broken Authentication — No Rate Limiting on Login High 7.5 Open
5 Sensitive Data Exposure in API Responses High 7.4 Open
6 JWT Token Not Expiring After Logout High 7.1 Open
7 Cross-Site Request Forgery (CSRF) on Settings Page Medium 6.5 Open
8 Missing Security Headers Low 3.1 Open

This table gives stakeholders — from the CISO to the dev lead — an instant understanding of risk. In a vulnerability assessment and penetration testing report, this summary is often the most-referenced page.

Detailed Technical Findings

This is the meat of the report. Each finding should follow a consistent structure so developers can quickly understand the issue, reproduce it, and fix it. Here's the format every penetration testing report example should follow:

Let me walk you through two sample findings — one Critical, one Low — so you can see how this looks in practice.

Sample Finding 1: SQL Injection (Critical)

VULN-001: SQL Injection in Authentication Endpoint

Critical
CVSS 3.1 Score
9.8 (Critical) — AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Affected Component
POST /api/v1/auth/login — username parameter
Description
The login endpoint is vulnerable to SQL injection via the username parameter. User-supplied input is concatenated directly into a SQL query without parameterization or input sanitization. This allows an unauthenticated attacker to execute arbitrary SQL commands against the backend database.
Evidence / Proof of Concept
The following HTTP request demonstrates the vulnerability. By injecting a UNION-based SQL payload into the username field, the tester was able to extract database version information:
POST /api/v1/auth/login HTTP/1.1
Host: portal.acme.com
Content-Type: application/json

{
  "username": "admin' UNION SELECT NULL,version(),NULL,NULL-- -",
  "password": "anything"
}

--- Response (200 OK) ---
{
  "error": "Invalid credentials for user: PostgreSQL 15.4"
}
Further exploitation confirmed the ability to extract full table contents, including the users table containing 45,231 records with email addresses, hashed passwords (bcrypt), and personal data.
Impact
An unauthenticated attacker can extract, modify, or delete the entire database. This includes customer PII (names, emails, addresses), hashed passwords, financial records, and internal configuration data. In the worst case, the attacker could escalate to operating system command execution via database functions (e.g., PostgreSQL COPY TO PROGRAM), achieving full server compromise.
Remediation
1. Use parameterized queries (prepared statements) for all database interactions. Replace string concatenation with bound parameters.

2. Implement an ORM or query builder that enforces parameterization by default.

3. Apply input validation — reject usernames containing special characters like single quotes, semicolons, and SQL keywords.

4. Implement a Web Application Firewall (WAF) as an additional defense-in-depth layer.

5. Apply the principle of least privilege to the database user — the application should never connect with a DBA/superuser account.
References
CWE-89: SQL Injection
OWASP: A03:2021 — Injection
OWASP SQL Injection Prevention Cheat Sheet

Sample Finding 2: Missing Security Headers (Low)

VULN-008: Missing HTTP Security Headers

Low
CVSS 3.1 Score
3.1 (Low) — AV:N/AC:H/PR:N/UI:R/S:U/C:L/I:N/A:N
Affected Component
All HTTP responses from portal.acme.com
Description
The application does not set several recommended HTTP security headers. While the absence of these headers does not represent a directly exploitable vulnerability on its own, it reduces the effectiveness of browser-side security controls and increases the attack surface for client-side attacks such as clickjacking and MIME-type sniffing.
Evidence / Proof of Concept
The following headers are missing from all server responses:
HTTP/1.1 200 OK
Server: nginx/1.24.0
Content-Type: text/html; charset=UTF-8

# Missing headers:
# X-Content-Type-Options: nosniff
# X-Frame-Options: DENY
# Strict-Transport-Security: max-age=31536000; includeSubDomains
# Content-Security-Policy: default-src 'self'
# Referrer-Policy: strict-origin-when-cross-origin
# Permissions-Policy: camera=(), microphone=(), geolocation=()
Additionally, the Server header discloses the web server software and version, which aids attacker reconnaissance.
Impact
Without these headers, the application relies entirely on its own code to prevent client-side attacks. If a cross-site scripting (XSS) vulnerability is introduced in the future, the absence of Content-Security-Policy means there is no browser-level mitigation. The missing X-Frame-Options header makes clickjacking attacks possible. The exposed server version helps attackers identify known vulnerabilities in the specific nginx version.
Remediation
Add the following headers to the nginx configuration (or application middleware):

add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "DENY" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header Content-Security-Policy "default-src 'self'; script-src 'self'" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
server_tokens off;
Test each header in staging before deploying to production, as overly restrictive CSP rules can break application functionality.
References
CWE-693: Protection Mechanism Failure
OWASP Secure Headers Project
Mozilla Observatory — HTTP Security Headers

Notice the difference in depth between these two findings. The SQL injection write-up includes a full proof-of-concept with request/response evidence and quantified data exposure. The missing headers finding is shorter but still provides specific, copy-paste-ready remediation. Both formats are essential in a comprehensive penetration testing report template.

Risk Ratings and CVSS Scoring Explained

Every professional VAPT report uses a standardized risk rating system. The industry standard is CVSS — the Common Vulnerability Scoring System. Understanding how CVSS works helps both pentesters assign accurate scores and clients understand what the numbers mean.

CVSS 3.1 Scoring Breakdown

CVSS 3.1 calculates a score from 0.0 to 10.0 based on several factors:

CVSS Score Severity Rating What It Means
9.0 – 10.0 Critical Easily exploitable, no authentication required, full system compromise likely
7.0 – 8.9 High Significant impact, may require some conditions but exploitation is realistic
4.0 – 6.9 Medium Moderate impact, typically requires user interaction or specific conditions
0.1 – 3.9 Low Limited impact, defense-in-depth issues, difficult to exploit in practice
0.0 Informational Best practice recommendations, no direct security impact

CVSS 4.0: What's New

CVSS 4.0 was released in November 2023 and adds more granularity with new metric groups including Supplemental Metrics (Safety, Automatable, Recovery, Value Density) and Environmental/Threat metrics. It also introduces the concept of "Attack Requirements" to replace the sometimes-ambiguous Attack Complexity metric. While CVSS 3.1 remains the most widely used in pentest reports today, adoption of 4.0 is growing — especially in organizations that need to account for safety-critical systems or supply chain risk.

Pro tip for pentesters: Don't just assign CVSS scores mechanically. Consider the client's specific business context. An SQL injection on an internal admin tool used by 3 people has a different real-world risk profile than the same vulnerability on a public-facing payment portal processing millions of transactions. Include contextual risk commentary alongside the CVSS score.

Remediation Roadmap

A findings list without a remediation plan is like a doctor listing symptoms without prescribing treatment. The remediation roadmap transforms your findings into an actionable project plan. This is where a good penetration testing report becomes genuinely valuable to the engineering team.

Quick Wins vs. Long-Term Fixes

Organize remediation into tiers based on effort and impact:

Priority Timeline Example Fixes Owner
P0 — Emergency 24-48 hours SQL injection, authentication bypass, RCE Backend Dev Lead + Security
P1 — Urgent 1 week Stored XSS, IDOR, broken access control Application Dev Team
P2 — Planned 30 days CSRF, session management issues, information disclosure Dev Team (sprint backlog)
P3 — Backlog 90 days Missing headers, cookie flags, version disclosure DevOps / Infrastructure
P4 — Advisory Next release Best practice improvements, hardening recommendations Engineering Manager

Ownership and Accountability

Every finding should have a clear owner. In practice, this means:

If the client doesn't have the internal expertise to fix the issues, this is where you recommend remediation support services — either from your own firm or a trusted partner. A well-scoped remediation engagement is often a natural follow-up to the pentest.

Retesting and Verification

The job isn't done when the report is delivered. A vulnerability only stops being a risk when the fix is verified through retesting. This is a step that too many organizations skip — and it's a step that too many pentest providers don't offer or charge excessively for.

Why Retesting Matters

What a Retest Report Looks Like

A retest report is a focused, shorter document that references the original findings and documents their current status:

# Original Finding Original Severity Retest Status Notes
1 SQL Injection in Login Critical Resolved Parameterized queries implemented. No bypass found.
2 IDOR in Invoice API Critical Resolved Authorization checks added. Tested with 3 user roles.
3 Stored XSS in Profiles High Partially Fixed Input sanitized on name field, but bio field still vulnerable.
4 No Rate Limiting High Not Fixed Rate limiting not yet implemented. Dev team cites Q1 timeline.

VulnSkill includes one retest round in every penetration testing engagement at no additional cost. We believe retesting is essential, not optional, which is why it's built into our pricing.

Download Our Free Penetration Testing Report Template

We've taken everything covered in this guide and packaged it into a professional, ready-to-use penetration testing report template. It includes all the sections described above with placeholder content, formatting guidance, and sample findings you can adapt.

Available in two formats:

The template follows PTES and OWASP reporting guidelines and has been refined through hundreds of real engagements. Whether you're writing a web application penetration testing report, a network pentest deliverable, or a full VAPT report, this template has you covered.

See How VulnSkill Delivers Reports

Our pentest reports are clear, actionable, and built for both executives and developers. Every engagement includes a professional report with all the sections covered in this guide — plus retesting at no extra cost.

See How VulnSkill Delivers Reports

Common Report Mistakes to Avoid

After reviewing hundreds of penetration testing report examples from different firms and freelancers, I keep seeing the same mistakes. Here's what to watch for — whether you're writing reports or evaluating one you received:

1. Writing for Pentesters, Not the Audience

The executive summary should be readable by a non-technical board member. If your executive summary contains CVSS vectors, HTTP request dumps, or references to "UNION SELECT," you've written a technical summary, not an executive one. Save the technical detail for the findings section where it belongs.

2. Findings Without Remediation Guidance

Telling a client they have an SQL injection without explaining how to fix it is like a doctor saying "you're sick" and walking out. Every finding needs specific, actionable remediation steps. "Use parameterized queries" is a minimum. Providing a code snippet in the client's language/framework is even better.

3. Missing Evidence

If you claim a vulnerability exists, prove it. Include the exact HTTP request you sent, the response you received, and annotated screenshots where relevant. A finding without evidence is just an opinion — and opinions don't survive the "but it works fine on my machine" pushback from the dev team.

4. Inconsistent or Inflated Severity Ratings

Rating everything as "High" or "Critical" destroys your credibility. If missing security headers and an unauthenticated RCE both get rated "High," the development team won't know what to fix first. Use CVSS consistently and honestly. A report with accurate ratings — even if the overall picture is less alarming — is far more useful than one with inflated scores.

5. Dumping Scanner Output as Findings

Running Nessus or OWASP ZAP and pasting the output into a Word document is not a penetration test report. Automated scan results should be validated manually, deduplicated, and rewritten with context specific to the client's environment. If a finding reads like it was auto-generated, it probably was — and the client will notice.

6. No Positive Findings

A good report also acknowledges what the client is doing right. "Strong TLS configuration observed across all endpoints" or "Multi-factor authentication correctly enforced for all admin accounts" shows thoroughness and gives the security team credit where it's due. It also provides useful documentation for compliance auditors.

7. Ignoring the Remediation Roadmap

Dumping 25 findings on a development team without prioritization or timeline guidance guarantees that nothing gets fixed promptly. The roadmap section transforms your report from a list of problems into a project plan. Without it, the report sits in someone's inbox, and six months later, the same vulnerabilities are still there.

If you're evaluating a pentest report you received: Check for these red flags. If the report you got is mostly scanner output, lacks remediation guidance, or has no executive summary, you may want to consider whether the testing itself was thorough enough. Compare it against our sample reports to see what a professional deliverable looks like.

Frequently Asked Questions

What should a penetration testing report include?

A penetration testing report should include an executive summary, scope and methodology, a findings summary table with severity ratings, detailed technical findings with evidence and remediation guidance, risk ratings using CVSS scoring, a remediation roadmap, and appendices with tool output and raw data. The report serves both technical and non-technical audiences.

How long should a penetration testing report be?

A typical penetration testing report ranges from 20 to 80+ pages depending on scope and findings count. The executive summary should be 1-2 pages. Each detailed finding typically takes 1-3 pages. A web application pentest with 15-20 findings usually produces a 40-60 page report. Quality matters more than length — every page should add value.

What is a VAPT report?

A VAPT report (Vulnerability Assessment and Penetration Testing report) combines automated vulnerability scanning results with manual penetration testing findings into a single deliverable. It typically includes both the broad coverage of automated tools and the depth of manual exploitation, giving organizations a comprehensive view of their security posture.

How do you write an executive summary for a penetration test?

Write the executive summary in plain business language — no jargon. State what was tested, when, and the overall risk posture. Highlight the most critical findings and their business impact. Include a severity breakdown (e.g., 2 Critical, 5 High, 8 Medium). End with a clear recommendation. Keep it to 1-2 pages so a CISO or board member can read it in under 5 minutes.

Can I get a free penetration testing report template?

Yes. VulnSkill offers a free downloadable penetration testing report template in both Word and PDF formats. The template includes pre-built sections for executive summary, scope, methodology, findings with CVSS scoring, remediation roadmap, and retesting verification. It follows industry standards including PTES and OWASP reporting guidelines.

Related Articles