Sample pentest report: what does a good report look like?

A pentest report that ends up in a drawer is money wasted. A good report is structured in layers — suitable for both a board looking at risk and a developer who wants to patch the same day. This page explains the structure Resync uses, with an example finding to illustrate. A sample report as a PDF is available at the bottom.

The structure at a glance

Table of contents — typical report

  1. Executive Summary (1–2 pages)
  2. Scope and methodology
  3. Findings, sorted by priority
  4. Per finding: description, reproduction steps, impact, recommendation
  5. Risk overview and CVSS scoring
  6. Process-level recommendations
  7. Retest declaration (added after patching)
  8. Appendices: tooling, traffic logs, methodology references

1. Executive Summary

The first two pages are for the board, management team, CISO or client — not for developers. The summary describes in plain language what was tested, what was found, how severe it is, and what that means in business terms. No jargon. No long table of CVE numbers. No 200-page scanner output.

What it contains:

2. Technical Findings

Every finding follows the same pattern — you can open any finding independently, read it, reproduce it and fix it. Each item consists of six elements:

Example finding (anonymised)

High CVSS 7.5 OWASP A01:2021, Broken Access Control

IDOR on tenant-ID parameter, cross-tenant data access

Description: The endpoint /api/v1/customers?tenant=<uuid> accepts a tenant UUID as a query parameter without server-side validation against the session token. By simply substituting a UUID from another tenant, an authenticated user can retrieve customer data belonging to other organisations.

Reproduction: Authenticate as user A of tenant X. Request GET /api/v1/customers?tenant=<UUID of tenant Y>. Server returns HTTP 200 with customer data from tenant Y.

Recommendation: Remove the tenant parameter from the query string. Read the tenant from the server-side session object, which is already maintained by the authentication layer. Add an authorisation check that validates the requested resource against the current session's tenant.

This is one example; a typical report contains 3 to 15 findings, depending on scope.

3. Prioritisation by impact

Not every finding is equally urgent. The report sorts findings on a combination of two axes: how easily exploitable (from outside, authenticated, requiring social engineering) and how large the impact if exploited (data exfiltration, account takeover, availability loss). This produces a recommended remediation order, which also appears in the executive summary.

4. Retest Declaration

After your team has remediated the findings, we retest — not the entire application, but specifically the identified findings. Per finding we note the status: resolved, mitigated, or open. The retest declaration is appended to the report as a separate PDF, with date and signature. Usable as evidence towards auditors, clients or regulators.

What a good report is not

View an anonymised sample report

A real report (anonymised) from a previous engagement, showing how Resync formulates, prioritises and delivers findings. PDF, ~40 pages.

Request the sample report →

We send the sample report by email, ungated, after a brief intake request. This lets us match the report to your situation — more relevant than a generic PDF nobody looks at.

Ready to have your own report produced?

For scope categories and the complete process, see the penetration testing page. For pricing: how much does a penetration test cost.

Concrete report, concrete findings

Request a sample report or schedule a free intake directly.

Schedule free intake →