A launch or major release
A new product, API version, role model or payment flow is about to go live, and nobody outside the build team has tried to break it.
We test one web application and its APIs the way a real user, a curious customer or a hostile tenant would. You get reproducible findings, a record of what was and was not tested, and a retest of your fixes.
A new product, API version, role model or payment flow is about to go live, and nobody outside the build team has tried to break it.
A prospect's questionnaire asks for a recent independent penetration test, the scope it covered and the status of what it found.
Your auditor or compliance lead wants evidence of independent testing of the in-scope systems, with findings tracked to closure.
You are delivering a client build, and the client or their security team requires an external assessment before acceptance.
SSO, a new tenant model, file uploads, a public API or a billing change has shipped since the system was last assessed.
A synthetic example in the format your report uses: evidence, impact, fix.
Impact. Any authenticated user can download billing contacts, amounts and payment status for every tenant by enumerating tenant IDs. The IDs are sequential and appear in shared invoice links.
Fix. Derive the tenant from the authenticated session, not the path. Enforce tenant membership in the export service itself, add a regression test pairing Tenant A and Tenant B accounts, and review sibling export and report endpoints for the same pattern.
Evidence · request → response
GET /v2/tenants/tnt_4821/invoices/export?format=csv HTTP/1.1 Host: api.example.com Authorization: Bearer [redacted: Tenant B member token] Accept: text/csv
HTTP/1.1 200 OK Content-Type: text/csv X-Request-Id: syn-7f3a19c2 invoice_id,billing_email,amount_gbp,status INV-20931,[email protected],4200.00,paid INV-20932,[email protected],1180.00,overdue
Named test areas and checks. The scope record in your proposal confirms which apply to your system.
Items marked “terms to confirm” are set out in your proposal.
| Deliverable | Status |
|---|---|
| Technical reportEach finding with affected asset, role and tenant used, reproduction steps, request and response evidence, impact, severity rationale and a specific fix. | Included |
| Coverage recordThe areas, roles, tenants and endpoints tested, to what depth, and what could not be tested and why. | Included |
| Executive summaryA plain-language page for leadership or a customer's reviewer: scope, dates, overall picture and the status of significant findings. | Included |
| Readout with your engineersA walkthrough of findings to agree priorities and answer reproduction questions. | Included |
| Critical finding notificationSerious issues are raised during testing through the channel agreed before work starts, not held for the report. | Included |
| Remediation verificationRetesting of agreed findings and close variants. Rounds, window and what counts as new scope are set in the proposal. | Terms to confirm |
| Shareable assessment letterA short letter for customers or auditors summarising scope, dates and finding status, where the proposal includes it. | Terms to confirm |
Every engagement starts from a written scope: the hosts and APIs in bounds, the roles and tenants, the workflows that matter, the methods allowed and what is excluded. Testing does not start from an enquiry. It starts when the system owner has signed authorisation and the test accounts work.
From there the assessment lead named in your proposal builds a role matrix. Each row is a role in a tenant. Each column is an object or action: read an invoice, invite a user, change a plan, export a report. Most serious web application flaws sit in that grid, so it is tested cell by cell with real accounts rather than inferred from documentation.
Alongside the matrix, testing follows public standards so you can see what was covered:
Tools handle discovery, proxying and repetitive payloads. The judgement calls are manual: whether a response leaks something it should not, whether a workflow can be reordered, whether two harmless issues combine into one that matters.
A finding your engineers can act on has five parts: the asset and endpoint, the account and role used, the exact request, the response that proves the problem, and the condition that makes it a problem. The synthetic finding on this page shows the shape: a member token from Tenant B, a changed tenant ID, a 200 OK and another tenant’s billing data.
The coverage record matters as much as the findings. An enterprise reviewer reading a clean report will ask what was tested. The record answers: which roles, which tenants, which endpoint groups, which workflows, and what was blocked or out of scope. “Not tested because the staging payment provider was unavailable” is useful. Silence is not.
Severity is set from impact and likelihood in your context and written down as a rationale, not just a label. A CVSS vector is added where the proposal calls for one. An IDOR on public marketing content and an IDOR on payroll records share a CWE but not a severity.
Each finding carries a specific fix: where the check belongs, what to compare against, and which sibling endpoints probably share the flaw. At the readout, your engineers and the tester agree priorities and clear up reproduction questions.
Your team, or your agency’s team, implements the fixes. Verification then checks the original request and the obvious variants, and records the result against each finding: fixed, partly fixed or not fixed. Retest rounds and windows are as agreed in the proposal.
If you need help defining the boundary before you commission anything, the guide how to scope a web and API pentest and the pentest readiness checklist cover what to prepare. For agency projects, see security testing in agency client projects.
Packages have published starting prices. These factors move a quote up or down.
See pricingEach distinct role or custom permission set adds rows to the authorisation matrix that has to be tested.
Multi-tenant products, organisation hierarchies and cross-tenant sharing features need paired accounts and more cross-boundary checks.
Payments, approvals, exports, admin actions and integrations each need their own logic testing.
Endpoint count, versions, GraphQL and the quality of the documentation you can supply.
Working test accounts, representative data and stable access. Access delays cost testing time.
Black, grey or white box, and whether source-assisted testing is included.
Reviewer format requirements, retest rounds and any shareable summary or letter.
You commission and authorise the test of your own product. Scope is set against your release, reviewer or audit requirement, and the report, readout and retest go to your engineering lead.
Your client owns the system, so the client signs the authorisation even when the agency commissions and pays. Before testing starts we agree who receives findings, who briefs the client, who fixes what and whose name the report carries. Where the proposal includes a retest, it is timed around your release plan.
Effort, not the number of findings. The main drivers are roles and tenants, the number of consequential workflows, API size, environment readiness, approach (black, grey or white box), and the reporting and retest you need. A focused test starts at $5,900, £4,900 or ₹1,49,000 before tax, and a product test at $11,900, £9,500 or ₹2,95,000. After a scoping call, your quote is fixed for the written scope.
It depends on the scope. The proposal states testing days, the report date and the start date. Book against your deadline with room to spare: a report that arrives the day before launch leaves no time to fix and verify anything.
Yes. Every package includes one retest round on the reported findings: within 60 days for a focused test and 90 days for a product test. A retest checks that the original finding is fixed and that obvious variants are closed. New features or a changed role model are new scope, not a retest.
A penetration test is testing evidence your auditor may review. It is not an attestation or certification, and the auditor decides what is sufficient. For SOC 2, the CPA firm performs the examination and issues the report. Ask your auditor what they expect (scope, recency, report contents) and share it at scoping.
Grey box is the usual default: you provide accounts for each role and API documentation, so time goes on testing rather than discovery. Black box spends effort working out what exists. White box or source-assisted testing adds code access for faster root-cause analysis. The proposal states which applies.
Staging, if it matches production configuration and has realistic synthetic data. Production is possible with constraints: synthetic accounts only, no destructive actions and agreed time windows. Any differences between the tested environment and production are recorded in the coverage record.
Signed authorisation from the system owner, a written scope, a stable environment, two accounts per role (across two tenants if multi-tenant), API documentation if you have it, and a contact who can answer questions and stop testing. Send credentials through the secure channel agreed at kick-off, never through the enquiry form.
The client owns the system, so the client authorises testing. ZenoPentest can work through a referral, where the client contracts directly, or under your agreement as a subcontractor. Report identity, communication lines and who owns each fix are agreed before testing starts.
No. Tools help with discovery and repetitive checks, but authorisation, tenant isolation and business logic are tested by hand against your role matrix. A scan cannot tell whether a member should see another tenant's invoices. The report states which tools were used.
It is escalated through the route and timing agreed in the rules of engagement, rather than held for the report, with enough detail to act on. You decide whether to pause testing, patch or carry on. It still appears in the report with its fix status.
Tell us the system and the requirement behind it. You get scoping questions, then a fixed quote.