How to Write a Penetration Test Report

Scope Report structure, executive summary and technical finding examples, CVSS severity versus business risk, attack narrative, remediation and retest fields, QC, and a copyable penetration test report template. Does not replace legal review or a firm-specific branded template.
Related guides Pentest lab requirements
Short on time?Beta Get the gist of this 19-minute read in seconds, then ask follow-up questions

A penetration test report is the deliverable that turns authorized testing into decisions. Scope and penetration testing rules of engagement define what you may do; the report shows what you found, what it means to the business, and what to fix first.

Below you get section-by-section writing guidance, a finished executive summary example, a before-and-after wording table, one complete fictional finding example, and a copyable penetration test report template you can paste into Word or your report platform.

IMPORTANT
Report only assets and techniques the client authorized. Redact credentials, personal data, and third-party secrets before delivery. Distribution should follow the secure channel named in the RoE, not an open email thread.

What a penetration test report should accomplish

Organizations commission penetration tests to understand whether weaknesses can be exploited and what those weaknesses could mean to the business. The report answers that question with evidence.

A useful report does three jobs at once:

  • Gives executives a short, plain-language view of risk and priority fixes
  • Gives engineers reproduction steps, impact, and remediation they can ticket
  • Gives security leadership an audit trail: scope, methodology, dates, and who tested

PTES reporting and NIST SP 800-115 both treat the written report as a core assessment output, not an optional appendix. This guide also aligns with CompTIA PenTest+ reporting objectives if you are studying for the exam.

How reporting fits the engagement lifecycle

Reporting starts during the test, not the night before the deadline.

Phase Reporting work
Pre-engagement Agree deliverable format, severity scale, and interim alert thresholds in the SoW and RoE
During testing Log timestamps, hosts, and evidence paths in your tracker
Post-exploitation Draft finding titles and severity while memory is fresh
Delivery Executive summary, technical body, attack narrative (when applicable), remediation roadmap
Closeout Retest or verification window if the contract includes it

Tools such as Cervantes help store findings and export report sections. They do not remove the need for consistent wording, peer review, and client-specific scope language from penetration testing pre-engagement scoping.


Penetration test report structure

One PDF usually serves executives, engineers, and security operations. Each audience reads a different layer of the same facts.

Audience Reads first Needs
Executives and board members Executive summary Business impact, overall posture, top risks, budget-level recommendations
Engineering and IT Technical findings Steps to reproduce, configs, patches, owners
Security operations Methodology, scope, appendices What was tested, what was not, raw evidence for tuning detections

Templates differ by firm, but the section order below appears in most client-ready reports.

Section Purpose
Title page and document control Client name, assessment type, report version, classification label, tester contacts
Executive summary Scope snapshot, overall risk, key themes, strategic recommendations
Engagement overview Dates, testers, limitations, assumptions
Scope and rules of engagement In-scope and out-of-scope assets, constraints, reference to signed authorization
Methodology Frameworks followed, tool classes used, testing approach (black-box, gray-box, credentialed)
Summary of findings Count by severity, optional heat map or table
Technical findings One section per issue, ordered by severity
Attack narrative / attack path (when applicable) Chronological path from initial access to objective when findings chain together
Remediation roadmap Phased fixes with owners, target dates, and retest scope
Conclusion and positive observations Balanced close, strengths worth preserving
Appendices Raw scan output, glossary, detailed request/response pairs
NOTE
Looking for the template? Jump to the penetration test report template, or continue below to learn how to write each section.

Put scope and RoE near the front so a reader who joins six months later still knows what the numbers mean.


Write the executive summary

The executive summary is the most forwarded page. Many stakeholders never read past it.

Draft this section last, after findings are scored and reviewed. Keep it to roughly one or two pages.

Include:

  • One paragraph on what was tested, when, and the assessment goal
  • Overall risk posture in plain language (for example, "An external attacker could obtain customer records without authentication")
  • A small table of finding counts by severity
  • Two to four bullet points on the highest-impact risks, written as business outcomes, not CVE IDs
  • Three to five strategic recommendations (themes such as "centralize secrets management," not "change line 42 in config.php")
  • Optional note on strengths observed (MFA on VPN, timely patching on DMZ hosts)

Avoid in the executive summary:

  • CVSS vector strings and tool output
  • Long lists of every medium finding
  • Jargon without translation ("Kerberoasting" alone means little to a CFO)

Penetration test report example: before and after

Weak wording states the vulnerability. Strong wording states what an attacker can do.

Weak report wording Better report wording
SQL injection on /login (CVSS 9.8) An unauthenticated attacker on the Internet could read customer account data from the production database behind the login page
Vulnerable SSL found api.example.com accepts TLS 1.0, leaving encrypted connections dependent on an obsolete protocol that the organization should disable
SQL injection exists Unauthenticated users can manipulate database queries through the customer portal login form
Update software Upgrade Apache Tomcat to a supported release that patches the remote code execution flaw in the manager application
Default credentials on Tomcat Default manager credentials allow remote code execution on the Internet-facing application server

Example penetration test executive summary

The sample below uses the fictional Example Corp context from this guide (app.example.com, external gray-box web assessment). Adapt names, counts, and themes to your engagement.

text
Executive Summary — Example Corp External Web Assessment
Test dates: 2026-09-01 through 2026-09-15 | Report version 1.0 (Final)

Objective and scope
  Example Corp commissioned a gray-box external assessment of customer-facing
  web properties and the 198.51.100.0/24 perimeter per approved scope dated
  2026-08-28. The goal was to determine whether an Internet attacker could
  gain unauthorized access to customer data or production systems.

Overall posture
  Testing identified material weaknesses in the customer portal authentication
  layer. An unauthenticated attacker could access customer account data without
  valid credentials. Perimeter hardening on VPN and API endpoints was stronger;
  MFA on the corporate VPN prevented successful account access using
  password-only authentication during testing.

Findings summary: Critical 0 | High 1 | Medium 2 | Low 1 | Informational 1

Key business risks
  • Unauthenticated access to customer names and email addresses on the
    production portal (PT-001)
  • Outdated TLS configuration on a legacy API host that still accepts weak
    cipher suites (PT-003)
  • Missing security headers on the marketing site; standalone issue with
    limited direct data exposure (PT-004)

Strategic recommendations
  1. Remediate the portal SQL injection flaw immediately and retest
     authentication before the next release window
  2. Centralize TLS configuration review for all Internet-facing APIs
  3. Strengthen automated security testing for authentication and other
     high-risk application paths before deployment

Positive observations
  MFA enforcement on the corporate VPN prevented password-only authentication
  from resulting in remote access. Patch levels on DMZ Linux hosts were current
  for the September maintenance cycle.

If you practice on Metasploitable 2, draft one finding and one executive bullet from a real weakness you exploited. That habit transfers directly to client work.


Document scope, methodology, limitations, and assumptions

The methodology section defends your process. Auditors compare it to what the SoW promised.

State:

  • Frameworks or standards you followed (PTES phases, OWASP WSTG categories, internal QA checklist)
  • Assessment type from pre-engagement (external black-box, internal credentialed, web application only)
  • Classes of tools (network scanner, web proxy, password audit, exploit framework) without turning the section into a vendor brochure
  • CVSS version used for scoring, and whether report risk ratings derive from CVSS qualitative severity bands or use a separate client/firm methodology
  • How you validated scanner output before reporting confirmed vulnerabilities

The scope section repeats or summarizes the approved asset list from the SoW, scope appendix, RoE, or other governing engagement document. It should match the language in those signed documents. If you discovered a host outside the listed range, note that you did not test it without written approval.

Limitations and assumptions

Record what constrained the assessment. Do not bury this only in a single methodology bullet.

Common limitations:

  • Credentials for an admin portal or VPN were not provided
  • One or more in-scope hosts were unreachable during the test window
  • The engagement window was shortened after kickoff
  • Destructive testing, denial-of-service, or social engineering was prohibited by the RoE
  • A third-party SaaS platform was excluded even though the client uses it

Common assumptions:

  • Staging configuration mirrors production for the components you tested
  • Patches listed in the client's change window were applied before testing began
  • Provided account roles match how staff actually use the application

Write technical findings

Each finding is a mini-report. Consistent field names make client ticketing easier.

Technical finding template

Field Content
Finding ID Stable reference (PT-001) used in the attack narrative and remediation tracker
Title Short, specific (Unauthenticated SQL injection in customer portal login)
Risk rating Critical / High / Medium / Low / Informational per your report methodology
CVSS Version, CVSS-B (or CVSS-BT/BE/BTE) score, full vector string (technical severity, not business priority)
CWE or OWASP category Weakness class for trending
Affected assets Hostnames, URLs, versions
Description What is wrong and where
Evidence Screenshot, request/response, command output (redacted)
Steps to reproduce Numbered, copy-paste friendly
Impact What an attacker gains
Remediation Specific fix and optional hardening
References Vendor advisory, CWE, configuration guide
Status Open / Remediated / Risk Accepted / Partially Remediated
Retest date Date verification was performed, or N/A if not yet scheduled
Retest result Remediated / Not Remediated / Partially Remediated / Pending, with brief evidence

If your risk rating is derived directly from CVSS base score bands, say so in the methodology section. Otherwise keep risk rating (client or firm priority) separate from the CVSS base score.

Order findings by risk rating or exploitability, depending on what the client agreed in the SoW. Critical issues that chain to domain admin belong at the top even when a standalone medium finding has a higher CVSS base score on paper.

Reproduction quality bar

The steps to reproduce section is what separates a useful report from a scanner export.

Good reproduction steps name:

  • The exact URL or host and port
  • Required authentication context (role, cookie, API key placeholder)
  • The request or command you ran
  • What vulnerable behavior proves the issue
  • What a fixed deployment should show instead

Manually validate scanner findings before reporting them as confirmed vulnerabilities. If a finding cannot be independently verified, document its validation status and supporting evidence rather than automatically assigning it a lower severity. A scanner hit may remain unconfirmed because of authentication requirements, intermittent conditions, inaccessible paths, environmental differences, RoE restrictions on exploitation, or evidence that supports the weakness without safe reproduction.

Complete example penetration test finding

The fictional finding below shows every field filled in. Hostnames and data are invented for app.example.com. The CVSS vector reflects only what the tester demonstrated: authentication bypass and read access to customer records. Integrity and availability impacts are set to None because modification or deletion was not shown.

text
Finding ID:     PT-001
Title:          Unauthenticated SQL injection in customer portal login
Risk rating:    High (derived from CVSS-B 7.0–8.9 = High per report methodology)
CVSS-B:         8.7 (CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N)
CWE:            CWE-89 (Improper Neutralization of Special Elements used in an
                SQL Command)
Affected asset: https://app.example.com/login

Description:
  The login endpoint processes the email parameter in a way that permits
  attacker-controlled input to alter the SQL query logic. Testing confirmed
  that an unauthenticated user could bypass authentication and access customer
  account data.

Evidence:
  - Burp Suite request/response pair BR-2026-0142 (stored in engagement vault)
  - Screenshot FIG-003 showing authenticated session without valid credentials
  - Screenshot FIG-004 showing customer name and email fields from /dashboard

Steps to reproduce:
  1. Open https://app.example.com/login in a browser or HTTP client.
  2. Submit POST /login with Content-Type: application/x-www-form-urlencoded
     and body: email=' OR '1'='1'--&password=anything
  3. Observe HTTP 302 to /dashboard with Set-Cookie: SESSION=...
  4. Request GET /dashboard with that cookie and confirm account data loads.
  5. Expected secure behavior: HTTP 401 or 403 with no session issued.

Impact:
  Unauthenticated authentication bypass and read access to customer account
  data displayed on the dashboard. In testing, customer names and email
  addresses from the application user table were visible. Database modification
  or deletion was not demonstrated during this assessment.

Remediation:
  - Replace SQL string concatenation with parameterized queries / prepared
    statements.
  - Validate the email field against expected application input as defense in
    depth; do not rely on validation as the SQL injection fix.
  - Deploy a temporary WAF rule only as a compensating control while the code
    fix is deployed.

References:
  - https://cwe.mitre.org/data/definitions/89.html
  - OWASP WSTG-INPV-05 (Testing for SQL Injection)

Status:         Open
Retest date:    N/A (initial delivery)
Retest result:  Pending

Build the attack narrative (when applicable)

Findings listed by severity help patching. When multiple weaknesses chain into a meaningful path, an attack narrative shows how they combine. Skip this section when findings are independent, such as several unrelated issues on a narrow web application assessment.

Use a short timeline or phased story when a chain exists:

  1. Initial access (phished user, exposed service, stolen API key)
  2. Privilege gain or credential access
  3. Lateral movement or data access
  4. Objective (domain admin, PII exfiltration simulation, payment tampering proof)

Name the finding IDs or titles at each step so engineers can map the story back to remediation tickets. The narrative should match evidence. Do not invent a dramatic path you did not demonstrate.

For lab practice, write a three-step narrative from your Metasploitable 2 session: weak SSH password, local privilege escalation, proof of access to sensitive files. Client reports use the same structure with different hostnames.


Score severity and prioritize business risk

CVSS provides a standardized technical-severity assessment based on the metrics included in the selected CVSS vector. The Base metrics describe intrinsic vulnerability characteristics; Threat and Environmental metrics can add current exploit context and deployment-specific context. CVSS does not, by itself, measure business risk or remediation priority for your client.

Term Meaning
CVSS score Technical severity calculated from CVSS metrics. CVSS v4.0 supports Base, Threat, and Environmental metric combinations (CVSS-B, CVSS-BT, CVSS-BE, CVSS-BTE); Supplemental metrics provide additional context but do not change the score
Business or client risk Priority considering exposure, asset importance, compensating controls, and business impact
Remediation priority What the organization should address first given capacity, dependencies, and exposure

Do not alter a CVSS Base score simply to make it match your business-risk judgment. If the client uses a separate risk rating, document that rating and its rationale alongside the CVSS score.

Practice Detail
Apply consistently Use the same version for new findings in the report where practical
Label legacy findings Imported or historical items may keep an earlier version if clearly identified
Include the vector Readers can recalculate or compare with their GRC tool
Write impact prose Business impact belongs in the finding and executive summary, not in a modified CVSS Base score

Example finding header when risk rating is derived from CVSS v4.0:

text
Risk rating: High (per methodology: CVSS-B 7.0–8.9 = High)
CVSS-B:      8.7 (CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N)
CWE-89:      SQL Injection

Calculate vectors with the FIRST CVSS v4.0 calculator or your firm's approved tool. Copy the vector carefully; an invalid or mistyped metric can make the vector unusable or produce the wrong score.


Recommend remediation and document retesting

Remediation belongs in two places: a short fix under each finding, and a roadmap that respects client capacity. For control-type mapping, defense-in-depth layering, and worked examples across technical, administrative, operational, and physical controls, see pentest remediation and control mapping.

An example remediation roadmap might use:

Phase Typical window Examples
Immediate 0–30 days Patch critical RCE, disable exposed admin interfaces, rotate compromised credentials
Short term 30–90 days Segment networks, deploy MFA, fix authorization flaws
Long term 90+ days Architecture changes, SDLC training, secrets vault rollout

These windows are planning examples, not universal SLAs. Some organizations require emergency mitigation for critical RCE within hours or days, while others align fixes to monthly change windows.

Note dependencies. Fixing session management before you close an authentication bypass can waste sprint time. Name suggested owners (application team, cloud platform, identity team) when the RoE allows it.

Each finding should carry status and retest fields from the template above. At the roadmap level, state which severities or finding IDs the contract includes for verification retest, and whether retest is a separate engagement.


Penetration test report template

Below is a copyable penetration test report template you can adapt for network, web application, internal, or external assessments.

Download: penetration-test-report-template.txt (plain text; paste into Word, Google Docs, or your report platform)

text
PENETRATION TEST REPORT TEMPLATE

[Client legal name]
Assessment: [External network / Web application / AD internal]
Report version: 1.0 (Final)
Classification: [Confidential]
Test dates: [YYYY-MM-DD] through [YYYY-MM-DD]
Lead tester: [Name, firm]

────────────────────────────────────────────────────────
1. EXECUTIVE SUMMARY

Scope: Testing covered [summary] per approved scope/SoW/RoE dated [date].
Overall result: [One sentence on risk to business objectives].

Findings summary:
  Critical: [n]   High: [n]   Medium: [n]   Low: [n]   Info: [n]

Key risks (business language):
  • [Outcome 1]
  • [Outcome 2]

Strategic recommendations:
  1. [Theme: identity hardening]
  2. [Theme: patch cadence]
  3. [Theme: monitoring]

────────────────────────────────────────────────────────
2. SCOPE, LIMITATIONS, AND ASSUMPTIONS

In scope: [CIDR, apps, cloud subs]
Out of scope: [Payroll, third-party SaaS, production DoS]
Limitations: [Credentials unavailable, hosts unreachable, etc.]
Assumptions: [Staging mirrors production, etc.]

────────────────────────────────────────────────────────
3. METHODOLOGY

Approach: [Gray-box external + credentialed internal]
Frameworks: [PTES, OWASP WSTG sections exercised]
CVSS version: [v4.0 / v3.1] — CVSS-B and risk rating mapping defined here

────────────────────────────────────────────────────────
4. FINDINGS SUMMARY

ID      Finding                              Severity   Status
PT-001  [Finding title]                      High       Open
PT-002  [Finding title]                      Medium     Remediated

────────────────────────────────────────────────────────
5. TECHNICAL FINDINGS (repeat per issue)

Finding ID: [PT-001]
Title / Risk rating / CVSS-B / CWE / Affected asset
Description / Evidence / Steps to reproduce / Impact / Remediation
References / Status / Retest date / Retest result

(See complete example finding above for a filled-in PT-001.)

────────────────────────────────────────────────────────
6. ATTACK NARRATIVE (when applicable)

Day 1 — [Step] (PT-00X)
Day 2 — [Step] (PT-00X)
Day 3 — [Step] (PT-00X)

[Omit this section when findings do not chain into a meaningful path.]

────────────────────────────────────────────────────────
7. REMEDIATION ROADMAP

0–30 days: [Immediate fixes]
30–90 days: [Short-term controls]
90+ days: [Long-term changes]
Retest scope: [Finding IDs or severities included]

────────────────────────────────────────────────────────
8. CONCLUSION AND POSITIVE OBSERVATIONS

Overall assessment: [One paragraph on residual risk and next steps]
Strengths observed: [Controls that worked; balanced close]

────────────────────────────────────────────────────────
9. APPENDICES

A. Scope asset list (from RoE)
B. Tool output (redacted)
C. Glossary

Store working notes in your project tool during the engagement so this outline fills in steadily rather than in one marathon session.


Quality control before delivery

QC catches wrong hostnames, stale screenshots, and severity drift between the executive summary and the findings table.

Run a structured review:

Check Question
Scope alignment Does every finding reference an in-scope asset?
Severity consistency Do counts in the executive summary match the findings table?
CVSS and risk labels Is each CVSS vector correct, and is risk rating defined consistently?
Evidence Is each screenshot dated and labeled? Are secrets redacted?
Reproduction Can a second tester follow the steps without calling you?
Retest fields Does each finding show status and retest result where applicable?
RoE compliance Did you document only authorized techniques?
Version control Is the PDF marked draft or final with a date?

Peer review is not universal, but mature consulting teams commonly require peer or QA review before client delivery. Have a colleague attempt reproduction from your steps alone before you mark the report final.

Using AI safely when drafting reports

Generative AI can help with wording and organization. It cannot replace your evidence chain.

Acceptable uses:

  • Turning rough bullet notes into clearer prose after you verify facts
  • Checking readability of the executive summary on sanitized drafts

Unacceptable uses:

  • Drafting reproduction steps you did not run
  • Guessing CVSS vectors or CWE IDs
  • Sending client hostnames, credentials, screenshots, or other engagement evidence to any AI service unless its use is explicitly permitted by your firm's policy, client agreement, and data-handling requirements

The signing tester owns accuracy. Run AI-assisted drafts through the same QC checklist as a fully manual report.


Common penetration test reporting mistakes

Mistake Why it hurts Fix
Scanner dump with no manual validation False positives become client fire drills Validate each hit; document validation status when unconfirmed
Executive summary full of CVE numbers Board readers disengage Translate to business outcomes (see before-and-after table)
Missing attack narrative when findings chain Client patches lists without seeing combined risk Add a short timeline tied to finding IDs when a path exists
CVSS Base score edited for "business feel" Auditors and GRC tools cannot reconcile ratings Keep CVSS Base intact; document separate business risk if needed
Inconsistent severity labels Executive table disagrees with findings Reconcile counts before PDF export
Missing retest status Client cannot track closure Add status, retest date, and retest result per finding
Credentials in screenshots Secondary data breach Redact and use placeholders
Scope drift undocumented Legal and sales teams dispute billing Match RoE asset list verbatim
AI-generated steps never tested Failed retest and reputational damage Peer-review reproduction

References


Summary

A penetration test report turns authorized work into priorities executives understand and fixes engineers can ship. Build it around two layers: a short executive summary in business language, and technical findings with evidence, CVSS-B scores (or other CVSS metric combinations you document), separate risk ratings where needed, and clear remediation.

Use the copyable template and the complete PT-001 example as starting points. Draft the executive summary after findings are final, add an attack narrative when multiple issues chain into business impact, and record retest status on every finding you expect the client to close.


Frequently Asked Questions

What sections must a penetration test report include?

At minimum, include engagement metadata, scope and limitations, methodology, an executive summary for non-technical readers, a findings summary, ordered technical findings with evidence and remediation, and appendices for raw tool output when the client needs them. Include an attack narrative when multiple findings combine into a meaningful path to business impact. PTES explicitly separates executive and technical reporting, while NIST SP 800-115 emphasizes tailored reporting, documented findings, and mitigation recommendations. Exact report layouts vary by organization.

Should I write the executive summary first or last?

Draft it last after all findings are scored and peer reviewed. The summary depends on the final severity counts and the real attack path you documented. Many testers keep bullet notes during the engagement, then polish the executive summary once the technical body is stable.

Which CVSS version should I use in a pentest report?

CVSS v4.0 is the current FIRST specification. You may still encounter v3.1 in existing client templates, scanners, vulnerability databases, and historical reports. State the version in your methodology section and apply it consistently where practical. Legacy findings may retain an earlier version if clearly labeled.

How many findings belong in the executive summary?

Summarize themes and the two or four highest-impact risks in business language. Do not paste every critical finding. Executives need the overall posture, what an attacker could achieve, and the first remediation moves. Full reproduction steps stay in the technical findings section.

Can I use AI to write penetration test reports?

AI can help reorganize notes or tighten executive-summary wording, but you must verify every hostname, CVE, CVSS vector, screenshot caption, and reproduction step against your own evidence. Do not send client data, credentials, screenshots, or other engagement evidence to any AI service unless its use is explicitly permitted by your firm's policy, client agreement, and data-handling requirements. Treat AI output as a draft that fails QC until a named tester signs the deliverable.

What is the difference between a finding and the attack narrative?

A finding documents one weakness with evidence and fix guidance. The attack narrative explains how you moved from initial access to impact across multiple findings when such a path exists. Include an attack narrative when findings chain into meaningful business impact; a narrow web assessment with independent issues may not need one. Each finding answers how to fix one hole; the narrative answers what an attacker could do in sequence.

Finished reading?Beta Get the key takeaways in seconds, then ask follow-up questions
Deepak Prasad

R&D Engineer

Founder of GoLinuxCloud with 15+ years of expertise in Linux, Python, Go, Laravel, DevOps, Kubernetes, Git, Shell scripting, OpenShift, AWS, Networking, and Security. With extensive experience, he excels across development, DevOps, networking, and security, delivering robust and efficient solutions for diverse projects.

  • Go (programming language)
  • Python (programming language)
  • DevOps
  • Computer Security
  • Cloud Computing
  • Kubernetes
  • Linux
  • Ansible (software)