Pentest Report Template
A complete section by section template for a penetration test report, with fill-in fields marked in square brackets. Thirteen sections, a repeatable finding block, one worked finding filled in so you can see the standard each field is asking for, and a checklist to run before the document leaves your hands. The same structure serves a VAPT report, which is the same deliverable under a different name.
No email required to view. No download gate, no tracking pixel. Copy it, or use browser Save as PDF for a PDF copy.
Template or sample? A template is the empty structure. A sample is a finished report you read to judge the standard. If you wanted the second one, the real redacted penetration test report is published in full with 13 findings, evidence, and a retest section. If you are choosing a vendor rather than writing a report, start with the pentest vendor comparison checklist.
Every Section a Penetration Test Report Needs
A fill-in structure for a web application, API, mobile, cloud, or network penetration test report. Works unchanged as a VAPT report template. Written from the report format we deliver to clients and publish in full.
Fields in square brackets [LIKE THIS] are yours to fill. Section 9 is one finding filled in end to end so you can see what each field is actually asking for. Nothing on this page is a client artefact: the worked example uses the same fictional target as our published sample report.
Document Details
| Title | Pentest Report Template (also usable as a VAPT report template) |
|---|---|
| Version | v1.0 (September 2026) |
| Who it is for | Testers writing a report, buyers checking the one they received, founders assembling evidence for an audit or an enterprise security review |
| Scope types covered | Web application, API, mobile application, cloud configuration, external and internal network. The structure does not change by scope type; the methodology citation in Section 5 does |
| Sections | 13 template sections, 1 worked finding, a pre-send checklist, and a note on what a template cannot do for you |
| Fill markers | Square brackets [LIKE THIS] indicate a field you replace before the report is issued |
| License | Free to copy, adapt, redistribute. Attribution appreciated but not required. |
| Maintained by | Cybersecify (Cyber Secify Consulting (OPC) Private Limited, Bengaluru, India) |
Table of Contents
- Cover page and document control
- Distribution and confidentiality
- Executive summary
- Scope, targets, and rules of engagement
- Methodology and standards
- Severity model
- Findings summary table
- Finding detail block (repeat once per finding)
- Worked example: one finding filled in
- Compliance control mapping (optional section)
- Retest and status tracking
- Appendices
- Limitations and disclaimer
After the template: using it as a VAPT report, getting it as a PDF, a checklist to run before you send it, and what a template cannot give you.
How to Use This Template
Three readers arrive at a report template, and they use it differently.
- You are writing the report. Work top to bottom. Section 8 is the block you repeat once per finding, and Section 9 shows one of those blocks filled in so the fields stop being abstract. Do the executive summary last, once you know what the findings add up to.
- You received a report and want to judge it. Read Section 8 first, then open the report you were sent and check it field by field. A missing severity, a missing reproduction path, or a finding with no named affected endpoint is the fastest signal that the document came out of a scanner rather than out of a test.
- You need the report as audit or customer evidence. Sections 1, 4, 5, 10, and 11 are the ones an auditor or an enterprise security reviewer reads first: version and date, scope boundary, named methodology, control mapping, and proof that fixes were re-checked.
The structure is deliberately conventional. A report that invents its own shape makes the reader work, and the reader is usually deciding whether to trust you.
1. Cover Page and Document Control
Everything a reader needs to know they are holding the current document.
| Report title | [Web and API Penetration Test Report] or [VAPT Report] |
|---|---|
| Client | [CLIENT LEGAL ENTITY NAME] |
| Assessment type | [Black box / Grey box / White box] |
| Report version | [v1.0 for the report issued at end of testing. v2.0 for the report reissued after retest.] |
| Report date | [DD MMM YYYY. This is the clock every remediation and SLA figure in the report is measured from.] |
| Testing window | [DD MMM YYYY to DD MMM YYYY] |
| Prepared by | [VENDOR LEGAL ENTITY NAME], [registered address] |
| Lead assessor | [FULL NAME], [certifications], [contact] |
| Reviewed and approved by | [FULL NAME, ROLE] |
| Classification | [Confidential] |
| Revision history | [Version, date, author, what changed. One row per issued version.] |
Why the version number matters: the retest document is a replacement, not an amendment, so it takes a major version bump to v2.0. A reader holding v2.0 should not need v1.0 to act on it.
2. Distribution and Confidentiality
- Named recipients: [Names and roles of everyone authorised to receive this document.]
- Onward sharing: [State whether the client may share the report with auditors, investors, or enterprise customers, and on what terms.]
- Handling: [How the report and its evidence are stored, for how long, and how they are destroyed.]
- Contents warning: This report contains working reproduction steps for unremediated issues. Treat it as sensitive until the findings are closed.
3. Executive Summary
One to two pages, written for a reader with no security background. Write it last.
- What was tested and when: [One sentence naming the systems and the window.]
- Overall outcome in plain words: [What a person deciding whether to launch, sign, or fund should take away.]
- Severity distribution: [Critical N, High N, Medium N, Low N, Informational N. This must equal the findings actually listed later in the document.]
- The three issues that matter most: [Name them, say what an attacker gets from each, and what it would cost the business.]
- Themes rather than a list: [If four findings all come from one missing authorisation check, say so. A theme is fixable; a list is a backlog.]
- What was not covered: [State it here, not only in the appendix. A reader who assumes full coverage will make a wrong decision.]
- Recommended next step and timeline: [What to fix first, and by when.]
Test for this section: hand it to someone who was not on the engagement and who does not work in security. If they can say what the risk is and what happens next, it is written.
4. Scope, Targets, and Rules of Engagement
This section is what an auditor compares against their own boundary, so it has to be exact.
- In scope: [Every hostname, base URL, API endpoint set, mobile package name, cloud account, or IP range tested. Name them individually.]
- Environment: [Production / staging / dedicated test instance, and whether the data was real or synthetic.]
- Roles and access provided: [Anonymous, standard user, admin, tenant A and tenant B. Each role catches a different class of finding, so list which roles were actually exercised.]
- Explicitly out of scope: [Third party services, denial of service and load testing, social engineering, physical access, and anything the client excluded. Say why.]
- Rules of engagement: [Permitted testing hours, source addresses the traffic came from, rate limits observed, escalation contact, and what happens if testing disrupts a service.]
- Authorisation: [Who signed the written authorisation, and when. Authorisation here means the client's own written permission in the engagement contract.]
- Constraints encountered: [WAF in path, credentials issued late, an environment reset mid test. These change what the coverage claim means, so record them.]
If you are writing the plan side of this rather than the report side, the agreed version of these fields belongs in a penetration test plan. A worked plan is published at the penetration test plan example.
5. Methodology and Standards
Name the standard and the version. A framework logo on a cover is not a methodology statement.
- Primary methodology: [OWASP Web Security Testing Guide v4.2 / OWASP Application Security Verification Standard 5.0.0 / OWASP API Security Top 10 2023 / OWASP Mobile Application Security Testing Guide / PTES / NIST SP 800-115.]
- Classification standards used: [OWASP Top 10:2025 for category, CWE for weakness class, CVSS v3.1 and v4.0 for severity.]
- Phases performed: [Reconnaissance, mapping, authentication and session testing, authorisation and tenancy testing, input validation, business logic, configuration, and post exploitation where authorised.]
- Manual versus automated split: [State which findings came from automated tooling and which from manual testing. A reader is entitled to know.]
- Tooling: [Name the tools. Keep the detail in Appendix A.]
- Coverage claim: [What the methodology covered against the scope, in a sentence a reader can check. Avoid claiming coverage the testing window did not allow.]
Our own phase by phase methodology, including where each standard is applied, is published at the Cybersecify methodology page.
6. Severity Model
State the scale before you use it, so no reader has to guess what High means in your document.
| Severity | CVSS base score | What it should mean in your report |
|---|---|---|
| Critical | 9.0 to 10.0 | [Direct, unauthenticated path to data or control. Fix before anything else.] |
| High | 7.0 to 8.9 | [Serious impact, usually needs one precondition such as a low privilege account.] |
| Medium | 4.0 to 6.9 | [Real but constrained, or requires chaining with another issue.] |
| Low | 0.1 to 3.9 | [Limited impact on its own. Still worth recording.] |
| Informational | 0.0 | [No direct security impact. Hardening or hygiene observation.] |
- Which version you scored under: [CVSS v3.1, CVSS v4.0, or both. Say so. A score without its version is not reproducible.]
- Publish the vector, not just the number: [The vector string is what lets the client disagree with your score on the merits rather than on faith.]
- Contextual adjustment: [If you raised or lowered a base score for this client's environment, say which findings and why.]
Two notes worth knowing. The severity label on a row has to be the band of the score it was derived from; a row labelled Critical against a 7.2 is the single most common internal contradiction in these documents. And a finding can legitimately change band between CVSS v3.1 and v4.0, so do not promise that it never will.
7. Findings Summary Table
One row per finding, so a reader can triage the whole engagement on one page.
| ID | Title | Severity | CVSS | Affected component | Status |
|---|---|---|---|---|---|
| [F-01] | [Short, specific, and readable without the detail section] | [Critical] | [9.1] | [api.example.com /v1/orders] | [Open] |
| [F-02] | [...] | [High] | [8.1] | [...] | [Open] |
| [F-03] | [...] | [Medium] | [5.3] | [...] | [Open] |
- Sort by severity, not by discovery order. The reader is triaging, not following your day.
- Keep the IDs stable across versions. F-02 in v1.0 must still be F-02 in the retest report, or the remediation conversation loses its thread.
- Make the counts agree. The distribution quoted in the executive summary and the rows in this table are the same set of findings counted twice, and they are the two numbers most likely to disagree after a late edit.
8. Finding Detail Block (repeat once per finding)
This is the part of the report that gets read by the people who have to fix things, and it is the part that distinguishes a test from a scan. Repeat the whole block for every finding.
| Finding ID | [F-NN] |
|---|---|
| Title | [What the issue is, in the shape a developer would search for it.] |
| Severity | [Critical / High / Medium / Low / Informational] |
| CVSS score and vector | [Score, version, and the full vector string.] |
| CWE | [CWE-NNN, with the CWE's own title. The weakness class, which carries no score.] |
| OWASP category | [A0N:2025 category name, or the API Security Top 10 2023 entry for an API finding.] |
| Methodology reference | [The test case this came from, for example a WSTG identifier. This is what lets a reader look up what was actually tested.] |
| Affected component | [Exact host, path, parameter, endpoint, or screen. Not "the application".] |
| Description | [What the flaw is and why it exists, in this codebase, not in general.] |
| Steps to reproduce | [Numbered. A competent engineer with the same access should be able to follow them and see the same result.] |
| Evidence | [The raw request and response that demonstrate it, plus annotated screenshots. Redact sensitive values and mark them as redacted.] |
| Business impact | [What an attacker gets, whose data or money is exposed, and at what scale. Written in this client's terms.] |
| Remediation | [The specific change, at the specific layer. A link to a general hardening article is not remediation guidance.] |
| References | [Vendor advisory, CVE, standard section, or documentation supporting the fix.] |
| Status | [Open / Fixed / Partially fixed / Risk accepted, with the date and the verification method.] |
The two fields most often missing, and the two that matter most: a reproduction path specific to this application, and a business impact statement in this client's terms. A finding without both is an observation, and the client cannot prioritise it.
9. Worked Example: One Finding Filled In
The same block from Section 8, completed, so the fields stop being abstract. The target is fictional and matches the one used in our published sample report.
| Finding ID | F-02 |
|---|---|
| Title | Order records of other tenants readable by changing a numeric identifier |
| Severity | High |
| CVSS score and vector | 8.1 (CVSS v3.1: AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N) |
| CWE | CWE-639 Authorization Bypass Through User-Controlled Key |
| OWASP category | A01:2025 Broken Access Control |
| Methodology reference | WSTG-ATHZ-04 |
| Affected component | api.acmesaas.io, GET /v1/orders/{id} |
| Description | The order endpoint authenticates the caller but does not check that the requested order belongs to the caller's tenant. The identifier is a sequential integer, so an authenticated user of any tenant can read every order in the platform by incrementing it. |
| Steps to reproduce | 1. Sign in as a standard user of tenant A. 2. Open an order and note its identifier in the response. 3. Reissue the same request with the identifier decremented by one. 4. Observe a full order record belonging to tenant B returned with HTTP 200. |
| Evidence | Request and response pair captured at [TIME], with the customer name, email, and billing address in the tenant B response marked [REDACTED]. Screenshot annotated to show the tenant identifier in the session token and the differing tenant identifier in the body. |
| Business impact | Any customer with a trial account can read every order in the platform, including customer names, contact details, and order values belonging to other customers. This is a confidentiality breach across the whole tenant base rather than a single account, and it is reachable from an account anyone can self serve. |
| Remediation | Enforce the tenant boundary in the data access layer so the order lookup is scoped by the tenant identifier taken from the session rather than from the request. Apply the same scoping to every endpoint that accepts a record identifier, then replace sequential identifiers with non guessable ones as a defence in depth measure, not as the fix. |
| Status | Open at v1.0. Retested and closed at v2.0 on [DD MMM YYYY], verified by re-running the reproduction steps as a tenant A user and receiving HTTP 403. |
Notice what the remediation field does: it names the layer, it generalises to the class rather than the instance, and it says explicitly which part is the fix and which part is hardening. That distinction is the difference between a report a team can act on and a report a team argues with.
10. Compliance Control Mapping (optional section)
Include this when the report is going to an auditor, an enterprise customer, or an investor. Skip it when it is not, rather than padding the document.
Mapping happens at two levels: the engagement evidences the controls that require testing to happen at all, and each individual finding maps to the control it affects.
| Framework | Control | What evidences it |
|---|---|---|
| ISO/IEC 27001:2022 | A.8.29 Security testing in development and acceptance | The test itself, performed against a defined scope with a documented methodology |
| ISO/IEC 27001:2022 | A.8.8 Management of technical vulnerabilities | The findings register, the severity ratings, and the dated remediation trail |
| SOC 2 | CC4.1 Ongoing and/or Separate Evaluations | An independent assessment performed inside the observation period |
| SOC 2 | CC7.1 Vulnerability Detection | The findings themselves, and the cadence the testing sits in |
| SOC 2 | CC6.1 Logical Access, CC6.3 Authorization Rights | Individual authentication, authorisation, and tenancy findings |
| SOC 2 | CC8.1 Change Management | Findings arising from configuration or release process gaps |
One control to leave alone. ISO/IEC 27001:2022 A.8.25 secure development life cycle is evidenced by process, not by a test report. Claiming a penetration test report evidences it is an overclaim, and an auditor will read it as one.
State who issues what. A testing vendor supplies the testing evidence. An ISO 27001 certificate is issued by a separate accredited certification body, and a SOC 2 report is issued by a licensed CPA firm. Cybersecify is neither, and a report that blurs the two creates an audit question rather than answering one. The filled-in version of both mapping tables, covering all 13 findings, is in Section 6 of our sample penetration test report.
11. Retest and Status Tracking
A report that only records what was broken cannot evidence that anything was fixed. The retest section is what turns the document into audit evidence.
| ID | Original severity | Fix applied | Retest date | Result | Verification method |
|---|---|---|---|---|---|
| [F-01] | [Critical] | [What the team changed] | [DD MMM YYYY] | [Closed] | [Reproduction steps re-run, outcome observed] |
| [F-02] | [High] | [...] | [DD MMM YYYY] | [Partially closed] | [...] |
| [F-03] | [Medium] | [Not remediated] | [DD MMM YYYY] | [Risk accepted] | [Accepted by NAME, ROLE, on DD MMM YYYY] |
- Reissue as v2.0, not v1.1. The retest report supersedes the original rather than amending it, and the version number should say so.
- Keep the closed findings in the document. Deleting them leaves the reader unable to see that anything was fixed, which is the one thing the retest exists to prove.
- Closed means verified. A status of Closed on the client's assurance rather than on a re-run reproduction is the field an auditor is most likely to challenge.
- Record accepted risk properly. Who accepted it, in what role, and on what date.
For reference on how the two documents relate, the version 1.0 and version 2.0 distinction is explained in more depth in the penetration test report walkthrough.
12. Appendices
- Appendix A, tooling: [Tools and versions used, and what each was used for.]
- Appendix B, full scope inventory: [The complete target list, where Section 4 gave the summary.]
- Appendix C, out of scope and untested: [What was excluded and what the window did not reach. This is the honest half of a coverage claim.]
- Appendix D, evidence index: [Where the raw captures live, how long they are retained, and how they are destroyed.]
- Appendix E, glossary: [CVSS, CWE, IDOR, and anything else a non specialist recipient will meet in the document.]
- Appendix F, contact and escalation: [Who to reach during remediation, and how.]
13. Limitations and Disclaimer
Every honest report states its own limits. Adapt the language to your own terms; the substance below is ordinary industry practice.
- Point in time: [The findings describe the environment as it was during the testing window. Code, configuration, and dependencies change after it.]
- Best effort: [Testing is bounded by the scope, the window, and the access provided. No assessment can establish that an application has no remaining issues.]
- Environment specific: [Findings apply to the environment tested. A staging result is not automatically a production result.]
- Evolving threats: [Recommendations reflect known techniques as at the report date.]
- Ongoing assurance: [Periodic reassessment is what keeps the picture current.]
Cybersecify's own engagement disclaimer, including jurisdiction and the liability position, is published in full on the pentest vendor comparison checklist so a buyer can read our terms before talking to us.
Using This as a VAPT Report Template
VAPT stands for vulnerability assessment and penetration testing. In India and much of Asia it is simply what this document is called, and a buyer asking for a VAPT report sample and a buyer asking for a pentest report sample are asking for the same thing. Nothing in the 13 sections above changes.
Two conventions are worth knowing if you are producing one for an Indian or Asian buyer.
- Some VAPT reports separate the two halves. Vulnerability assessment output, which is largely tool derived and broad, is presented separately from penetration testing findings, which are manually verified and exploited. If you do that, keep one findings summary table covering both and mark the source of each finding, so the reader is not left reconciling two lists. Section 5 of this template is where you state the split.
- Volume is not quality, and the split is where that shows. An unfiltered scanner export dropped in as the vulnerability assessment half is the most common way a VAPT report gets long without getting more useful. Validate before you publish, and say what you validated.
If what you actually wanted was a finished VAPT report to read rather than a structure to fill in, the sample report is a real redacted engagement published in full, and how to read a VAPT report walks a buyer through what to look at first.
Getting This Template as a PDF
Two routes, neither of which asks for an email address.
- Save or Print as PDF. The button at the top of this page opens your browser's print dialogue with the site navigation, footer, and buttons stripped out, so the PDF contains the document and nothing else. Choose Save as PDF as the destination.
- Copy Full Template. The copy button puts the whole document on your clipboard, formatting included, ready to paste into your own word processor where you can fill the bracketed fields in place.
If you are looking for a finished penetration test report as a PDF rather than a blank template, that is a different document and it exists: our sample penetration test report is readable in full on the page with no form, and a PDF copy is emailed on request from the form on that page.
Twelve Checks Before the Report Leaves Your Hands
Run these on the finished document. Most of what goes wrong in a report is internal contradiction introduced by a late edit, not a missing section.
- The version number and date on the cover match the revision history.
- The severity distribution in the executive summary equals the findings actually listed.
- Every severity label matches the band of the score it was derived from.
- Every CVSS score states its version and carries its full vector.
- Every finding has a named affected component, not a product name.
- Every finding has numbered reproduction steps a stranger could follow.
- Every finding has a business impact written in the client's terms.
- Every finding ID referenced anywhere in the document exists in the findings table.
- Every remediation names a specific change at a specific layer.
- Every date in the document is consistent with the report date on the cover.
- Anything marked closed says how it was verified and on what date.
- Every sensitive value in the evidence is redacted and marked as redacted.
What a Template Cannot Give You
Worth saying plainly, because the gap between a well structured report and a good one is where buyers get misled.
- Structure is not evidence. A complete set of section headings with generic content underneath reads as thorough and proves nothing. The proof is the reproduction path and the request and response capture.
- A template cannot supply independence. An auditor and an enterprise reviewer both care who tested and whether they were independent of the team that built the system.
- A template cannot make findings real. Scanner output poured into a good structure is still scanner output. The tell is generic titles, boilerplate remediation, no named tester, and a finding count larger than a human would report.
- A template cannot close the loop. Without a retest, the document records what was broken and never records that it was fixed.
If you are on the receiving end of a report and want the buyer side questions rather than the writer side structure, the pentest vendor comparison checklist is the companion document to this one.
Next Step
Three paths from here.
- Fill the template in. Copy it or Save as PDF using the buttons at the top of the page. It is free to adapt and redistribute.
- Read the filled-in version, a real redacted engagement report with 13 findings, evidence, control mapping, and a retest section, published in full with no email gate.
- Book a 30-minute call if you want the report as a deliverable rather than a document to write. Our pentest plans are published: Startup Pentest at INR 74,999 covers 1 scope over 5 business days, Growth Pentest at INR 1,79,999 covers 2 scopes over 10 business days, and both include one free retest reissued as a v2.0 report.
Frequently Asked Questions
What is a pentest report template?
A pentest report template is the section structure of a penetration test report with the content left blank for you to fill in. It fixes what the document contains and in what order: document control, executive summary, scope and rules of engagement, methodology, severity model, a findings summary table, a repeatable finding detail block, retest status, appendices, and limitations. It is not a report. The evidence, the findings, and the judgement are the work. The template only makes sure none of it goes missing on the way to the reader.
What sections must a penetration test report include?
Nine sections carry the weight. Document control with a version number and a date, distribution and confidentiality, an executive summary written for a reader with no security background, scope and rules of engagement, methodology cited to a named standard with its version, a severity model, a findings summary table, one detail block per finding with evidence and remediation, and a retest section recording the status of every original finding. Appendices and a limitations statement close the document.
Is a VAPT report template different from a pentest report template?
No. VAPT stands for vulnerability assessment and penetration testing, and across India and much of Asia it is the ordinary name for the same deliverable. The structure is identical: the same executive summary, the same scope statement, the same per finding block carrying severity, evidence, and remediation, the same retest section. The one convention worth knowing is that some VAPT reports separate scanner derived vulnerability assessment output from manually verified penetration testing findings, so a reader can tell which is which. This template supports that split without requiring it.
Can I download this pentest report template as a PDF?
Yes. The Save or Print as PDF button at the top of this page renders the whole template to a PDF through your browser, and the copy button puts the text on your clipboard for pasting into a document of your own. There is no email gate and no download form on this template. A finished example of the same document, a real redacted engagement report, is published in full on our sample report page, and a PDF copy of that one is emailed on request.
What is the difference between a pentest report template and a sample pentest report?
A template is an empty structure you fill in. A sample is a finished report you read to see what good looks like. Most people who search for one turn out to want both, because the template tells you which sections you owe and the sample shows you the standard of evidence, severity reasoning, and remediation writing those sections are expected to reach. Cybersecify publishes both. This page is the template. The sample report page carries a real redacted engagement with 13 findings, readable in full with no form in the way.
Does using a pentest report template make a report acceptable for SOC 2 or ISO 27001?
No. Structure is necessary and it is not sufficient. An auditor reads the report as evidence, so they check that it is dated and version controlled, that the scope named in it matches the system inside the audit boundary, that the methodology cites a recognised standard such as OWASP WSTG v4.2 or OWASP ASVS 5.0.0, that every finding carries a severity and a current status, and that anything marked closed was verified by a retest rather than accepted on the word of the engineering team. A well structured report from an assessor with no independence, or with no retest trail, still fails those checks.