Penetration Testing Report Example: What a Real, Actionable Report Looks Like
The standard structure, a full findings table, and the exact questions to ask before you sign a contract for one.
What a Penetration Testing Report Is
Most organizations only see two or three of these a year, usually right before an audit. That scarcity is exactly why so many reports go unread. If the report cannot survive contact with a skeptical engineer or a bored board member, the money spent on the test was largely wasted.
Below is the structure a competent report follows, a realistic findings table, and the parts that separate a report engineering teams actually fix from one that sits in a shared drive until next year’s audit.
Standard Report Structure
Frameworks differ (OWASP Testing Guide, PTES, NIST SP 800-115, OSSTMM), but a professional report almost always contains the same seven sections in the same order. Skipping any of them is a signal the tester rushed the deliverable, not just the test.
1. Executive Summary
Written for a CFO, general counsel, or board member, not an engineer. No CVSS jargon, no stack traces. It states what was tested, how many findings were critical or high, whether an attacker could have reached sensitive data or admin control, and what it would cost the business if exploited. Two pages, maximum. If a non-technical reader has to ask “so are we exposed or not,” the summary failed.
2. Scope and Methodology
This section names exactly what was in scope (domains, IP ranges, API endpoints, mobile builds, source code access level) and, just as important, what was explicitly out of scope and why. It states the testing type (black box, gray box, white box), the access level granted (unauthenticated, low-privilege user, admin), the test window, and the standard followed, typically the OWASP Web Security Testing Guide (WSTG) or a PTES-aligned methodology for infrastructure work. A report with no methodology section is a red flag: it means you cannot tell whether the tester ran an automated scan for four hours or did genuine manual testing for two weeks.
3. Findings Summary Table
A single table listing every finding by severity, so a reader can grasp exposure in under a minute before reading a single technical detail. See the example below.
4. Detailed Findings
One entry per vulnerability, each with a fixed structure: title, CVSS score and vector string, affected asset or endpoint, business impact in plain language, technical description, proof of exploitation, and remediation guidance. This is the section engineers actually use, and it is where most reports fall apart, either because the proof of exploitation is missing or because the remediation advice is a generic one-liner copied from a CVE database.
5. Attack Narrative (Chained Findings)
When individual findings combine into a full compromise path, a competent report tells that story separately from the findings list. A “medium” information disclosure bug and a “medium” broken access control bug can chain into a critical account takeover. If the report never shows the chain, the business impact section for each individual finding will understate the real risk, sometimes by a lot.
6. Retest and Verification Appendix
After the client patches, a retest confirms each fix actually closed the hole rather than just changing the error message. This appendix lists each finding, its remediation status (fixed, partially fixed, not fixed, risk accepted), the retest date, and evidence the fix holds under the same proof-of-concept used originally. Reports without this appendix cannot tell you whether last quarter’s “critical” is still open today.
7. Appendices
Raw scanner output (if any was used as an input, not the final product), tool versions, a glossary of terms for non-technical stakeholders, and a full list of testers with certifications (OSCP, OSWE, OSCE) for auditor requirements like SOC 2 or PCI DSS.
Example Findings Summary Table
This is what a realistic findings table looks like for a mid-size web application and API engagement. Severity ratings here follow CVSS v3.1 base scoring, translated into business terms.
| Finding | Severity | CVSS 3.1 | Affected Component | Description |
|---|---|---|---|---|
| Broken object-level authorization (BOLA) on order API | Critical | 9.1 (AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:N) | /api/v2/orders/{id} | Authenticated user can retrieve and modify any other customer’s order by changing the numeric ID, exposing PII and payment metadata. |
| SQL injection in search filter | Critical | 9.8 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) | /search?category= | Unsanitized input in the category parameter allows blind boolean-based SQLi, confirmed via time-delay extraction of the users table. |
| JWT signature not verified on password reset | High | 8.1 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N) | /api/auth/reset-password | Token accepted with alg set to “none,” allowing an attacker to forge a valid reset token for any account. |
| Stored cross-site scripting in support ticket comments | High | 7.6 (AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:H/A:N) | /support/tickets/comment | Comment field renders unescaped HTML, allowing session token theft from an admin who views the ticket. |
| Excessive data exposure in mobile API response | Medium | 5.3 (AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N) | /api/v1/user/profile | Endpoint returns full internal user object including hashed password field and internal role flags, unused by the mobile client. |
| Missing rate limiting on login endpoint | Medium | 5.9 (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L) | /api/auth/login | No lockout or throttling after repeated failed attempts, allowing credential-stuffing at scale. |
| Verbose error messages reveal stack traces | Low | 3.7 (AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N) | Multiple endpoints | Unhandled exceptions return full stack traces including internal file paths and library versions. |
| TLS configuration allows weak cipher suites | Low | 3.1 (AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N) | Load balancer, all endpoints | Server supports TLS 1.0 and several deprecated cipher suites alongside modern configurations. |
Illustrative example for format reference. Actual findings, scoring, and business impact will vary by application and must be validated against the live system, not copied from this table.
Anatomy of a Single Finding
Each detailed finding, like the BOLA example above, should expand into roughly this structure in the body of the report:
Title and severity. A specific, searchable name, not “Authorization Issue.” “Broken Object-Level Authorization on Order Retrieval API” tells an engineer exactly what to search for in the codebase.
CVSS score and full vector string. The vector string matters more than the number. Two findings can both score 7.5 for completely different reasons (one needs no privileges and no user interaction, one needs an authenticated insider), and the vector string is the only place that distinction is visible.
Affected asset or endpoint. The exact URL, parameter, header, or code path. Not “the API,” not “the login system.”
Business impact. Written for a product owner or risk committee: what data, workflow, or revenue stream is exposed, and under what conditions.
Technical description. The root cause: missing authorization check, unsanitized input, misconfigured header, whatever it is, in enough depth that a developer can locate it in the codebase.
Proof of concept / evidence. A request and response pair (with sensitive data redacted), a screenshot of the exploited state, or a short script that reproduces the issue on demand. This is the single most important piece of a finding and the one most often missing or faked.
Remediation guidance. Specific, not “implement proper authorization.” For the BOLA example: “Enforce ownership checks server-side on every request to /api/v2/orders/{id} by comparing the authenticated user’s ID against the order’s owner_id field before returning data. Do not rely on the client to only request its own IDs.”
What Separates an Actionable Report From Shelf-Ware
Most pentest reports are read once, filed, and never opened again until the next audit cycle. A handful get fixed within the quarter. The difference is rarely the tester’s skill. It is almost always the report itself.
Proof of exploit, not a scanner export. A raw Burp Suite or Nessus export dumped into a PDF template is not a pentest report. If every finding cannot be traced to a manual step a human tester actually performed, ask why you paid for manual testing rates.
An executive summary a board member can defend budget with. If the CFO cannot repeat the top three findings in their own words after reading it once, the summary is written for the wrong audience.
Engineer-level technical detail with reproducible steps. A developer should be able to reproduce the finding from the report alone, without calling the tester to ask “wait, how did you get that request to work.”
Prioritization tied to exploitability and business impact, not raw CVSS. A 9.8 on an internal admin tool behind three layers of network segmentation is a different risk than a 7.5 on a public-facing payment endpoint. A report that ranks purely by CVSS number, with no adjustment for exploitability or exposure, is asking engineering to fix the wrong things first.
A retest that confirms the fix actually worked. Roughly a third of “fixed” findings in unverified environments turn out to be incompletely patched when retested with the same proof of concept. Without a retest section, “fixed” is a claim, not a fact.
Questions to Ask Vendors
Ask these before signing, not after the first report lands. Vendor-neutral, and they apply whether you are evaluating a boutique shop, a Big Four practice, or an automated platform.
- Can I see a full sample report on an application similar to mine, not a two-page excerpt? A vendor who only shows redacted snippets is hiding either thin technical depth or a template that does not scale to real complexity.
- For each finding, is the proof of exploitation an actual request/response pair or screenshot, or just a CVSS score and a paragraph? No proof of exploit means no one confirmed the vulnerability actually fires, only that a pattern matched.
- Do you show attack chains, or only isolated findings? A report with twenty “medium” findings and no chain analysis may be hiding a critical path a determined attacker would find in an afternoon.
- Who signs off on severity ratings, and is it adjusted for actual exploitability, or just raw CVSS? Raw CVSS with no business context produces prioritization that does not match real risk.
- What is your false positive rate, and how is it measured? If the vendor cannot give you a number, or the number comes from marketing rather than a validation process, treat every finding as unverified until proven otherwise.
- Is a retest included in the price, and how long after remediation can I request it? A report with no included retest leaves you unable to prove to an auditor that a critical finding was actually closed.
- What testing standard or framework do you follow (OWASP WSTG, PTES, NIST SP 800-115), and can I see the checklist you tested against? No named standard usually means no consistent methodology, just whatever the individual tester felt like doing that week.
- What percentage of this engagement was manual versus automated tooling? If the answer is vague, assume the ratio favors automation more than the price implies.
- Will the same tester who ran the engagement be available to walk my engineering team through the findings? A vendor who cannot produce the original tester for a follow-up call likely used a junior or contracted resource you never met.
- How do you handle a finding we dispute, for example a false positive or a compensating control you did not know about? No documented dispute process signals the report is final the moment it is delivered, with no room for engineering’s context.
- What is your average time from test completion to report delivery? A multi-week gap after testing ends often means findings sat in a queue while the vulnerability window stayed open.
- Can findings be exported in a machine-readable format (CSV, JSON, or direct integration) for our ticketing system? A PDF-only deliverable with no structured export adds manual re-entry work and slows remediation for every finding.
RFP Criteria
Criteria to write directly into a formal RFP for report deliverables and quality. Use as-is, adjust thresholds to your risk tolerance.
| Criterion | What to Require |
|---|---|
| Proof of exploitation | Every finding rated Medium or above must include a request/response pair, screenshot, or reproducible script, not a scanner-generated description alone. |
| Named methodology | Vendor must state the testing standard followed (OWASP WSTG, PTES, NIST SP 800-115) and provide the specific test-case checklist used for this engagement. |
| Executive summary readability | A two-page maximum executive summary written for a non-technical audience, with no CVSS scores or code snippets in that section. |
| Severity methodology disclosure | Vendor must document how severity was assigned, including whether and how CVSS was adjusted for exploitability, exposure, and business context. |
| Attack chain analysis | Report must include a narrative section connecting findings that combine into a higher-impact compromise path, where applicable, separate from the findings list. |
| Retest inclusion | At least one retest cycle included in the base price, delivered as a signed appendix confirming remediation status per finding with the same proof of concept re-run. |
| Delivery timeline | Maximum number of business days from test completion to final report delivery, stated as a contractual SLA, not an estimate. |
| Machine-readable export | Findings must be exportable in CSV or JSON, or via direct integration with the buyer’s ticketing or GRC system. |
| Tester attribution and credentials | Report must list the certifications (OSCP, OSWE, OSCE, or equivalent) of testers who performed the work, available for audit purposes. |
| False positive accountability | Vendor must state their historical false positive rate and the validation process used to arrive at it, with supporting methodology on request. |
Vendor Evaluation Criteria
Use this rubric to score competing vendors side by side on report quality specifically, independent of price or brand reputation.
| Criterion | What Good Looks Like | Red Flag |
|---|---|---|
| Proof of exploitation | Request/response pairs, screenshots, or scripts for every finding above Low severity | Findings described only in prose, or a raw scanner export relabeled as a “report” |
| Executive summary | Two pages, plain language, a non-technical reader can state top risks afterward | Summary is a bullet list of CVSS scores or a reworded scope statement |
| Technical reproducibility | An engineer can reproduce the finding from the report alone | Steps are vague, generic, or copied verbatim from a public CVE description |
| Prioritization logic | Severity adjusted for real exploitability and business exposure, explained in writing | Findings ranked purely by raw CVSS with no adjustment or explanation |
| Attack chain narrative | Explicit section showing how findings combine into a larger compromise, when relevant | Every finding presented in isolation even when an obvious chain exists |
| Retest and verification | Signed retest appendix with per-finding status and re-run proof of concept | No retest offered, or retest confirms status by developer attestation alone |
| Methodology transparency | Named standard (OWASP WSTG, PTES, NIST SP 800-115) with the actual checklist used | No named methodology, or “proprietary methodology” with no detail on request |
| Turnaround time | Report delivered within a stated, contractual number of business days post-test | Delivery date is “best effort” with no SLA, or historically slips by weeks |
| Data portability | Findings exportable to CSV, JSON, or direct ticketing/GRC integration | PDF-only, requiring manual re-entry into your tracking systems |
| False positive discipline | Vendor discloses a measured false positive rate and how it is validated | No number offered, or the number is a marketing claim with no methodology |
Why This Matters for How You Test
Annual pentest programs typically cover about 20 percent of an organization’s attack surface, tested once against a threat landscape that moves every day. CVEs are exploited in the wild in about 3 days on average. A report that takes two weeks to arrive after testing, covering a fraction of the surface, describes a risk picture that is already stale by the time anyone reads it.
This is the gap FireCompass’s agentic AI platform is built to close. It runs continuous, agentic web application and API pentesting instead of a point-in-time engagement, and every finding ships with proof of exploit: a reproducible request/response pair or working exploit code, not a CVSS score and a hope. On public benchmarks it validated 104/104 XBEN cases and 12/12 Acuart cases with proof-of-concept evidence, and its false positive rate runs under 2 percent, against 40 to 70 percent for traditional scanners. In a Fortune 500 engagement, this pushed effective coverage from roughly 10 percent to 99 percent of the application surface across a portfolio of 2,000-plus apps, at around 11 times lower cost than manual testing alone.
None of that changes what a good report has to contain. It changes how often you can afford to get one, and how current the findings are when your engineering team opens it.
Frequently Asked Questions
How long should a penetration testing report take to deliver after testing ends?
Most manual engagements deliver within 5 to 10 business days after testing concludes. Longer than two weeks usually means the report sat in a review queue, not that additional testing was happening. Ask for a contractual delivery SLA, not an estimate, before signing.
What is the difference between a vulnerability scan report and a penetration testing report?
A vulnerability scan report lists what an automated tool flagged, with no confirmation any of it is actually exploitable. A penetration testing report includes manual validation, proof of exploitation, and business-context prioritization. A scanner export with a cover page is not a pentest report, regardless of what it is billed as.
Should CVSS score alone determine which findings get fixed first?
No. CVSS measures theoretical severity in a vacuum. A 9.8 on an isolated internal tool with no external access can be lower real-world risk than a 6.5 on an internet-facing login page. Prioritization should combine CVSS with actual exploitability and business exposure.
What format should a pentest report be delivered in?
A PDF for executive and audit purposes, plus a machine-readable export (CSV, JSON, or a direct ticketing integration) for engineering. A PDF-only deliverable creates manual re-entry work and slows remediation.
Does every finding need a proof of concept?
Every finding rated Medium severity or above should include a request/response pair, screenshot, or reproducible script. Informational or very low severity items can sometimes rely on description alone, but anything that could justify engineering time needs evidence.
What is a retest and why does it matter?
A retest is a follow-up verification, using the same proof of concept as the original finding, to confirm a fix actually closed the vulnerability rather than just changing surface behavior. Without it, “fixed” in a remediation tracker is an unverified claim.
Who typically reads which section of a pentest report?
Executives and board members read the executive summary only. Security and compliance teams read the findings summary table and the retest appendix. Engineers read the detailed findings, proof of concept, and remediation guidance. A report has to serve all three audiences without forcing any of them to read the whole document.
Related Terms
See What an AI-Native Pentest Report Looks Like on Your Own Application
Run a free AI pen test against a real target and get a report built on proof of exploit for every finding, not a scanner export with a cover page.
Free AI Pen TestOn this page
- What a Pentest Report Is
- Standard Report Structure
- Executive Summary
- Scope and Methodology
- Findings Summary Table
- Detailed Findings
- Attack Narrative
- Retest Appendix
- Appendices
- Example Findings Table
- Anatomy of a Finding
- Actionable vs Shelf-Ware
- Questions to Ask Vendors
- RFP Criteria
- Vendor Evaluation Criteria
- Why This Matters
- FAQ
- Related Terms