main logo icon

Published on

August 8, 2026

|

13 min read

Web Application Penetration Testing: Scope, Cost and What You Get

Web application penetration testing scope, cost and deliverables: authenticated surface and role coverage, the finding classes scanners miss, black-box versus grey-box versus white-box, published Autonomous and Hybrid pricing, and what to prepare.

Arafat Afzalzada

Arafat Afzalzada

Founder

Web App Security

Summarize with AI

ChatGPTPerplexityGeminiGrokClaude

TL;DR

A web application penetration test is an authorized, evidence-backed assessment of everything a user can reach once logged in, not just the pages an anonymous visitor sees, which is why the authenticated surface is where the serious findings live. Role coverage is the single largest driver of both depth and price, because authorization testing scales with the number of directional actor pairs rather than the number of pages. In the OWASP Top 10:2025, A01 Broken Access Control holds the number one position, with 40 mapped CWEs and 100 percent of applications in the contributed dataset showing some form of broken access control. Scanners reliably find injection, transport and configuration defects, and systematically miss broken object-level authorization, broken function-level authorization, tenant isolation failures, business logic abuse and race conditions. Grey-box testing with real credentials for every role returns the most coverage per dollar, because the tester spends the budget on authorization logic instead of on guessing at the login page. Stingrai's published web application tiers are Autonomous at US$3,000 one-time or US$450 per month, and Hybrid at US$6,800 one-time or US$1,275 per month on a twelve-month engagement, with human validation of every finding being a Hybrid capability. Two accounts at the same privilege level, for every role, is the single preparation step that most often decides whether cross-account authorization can be tested at all.

In the OWASP Top 10:2025, A01 Broken Access Control holds the number one position, mapping 40 CWEs, and OWASP records that 100 percent of applications in its contributed dataset were found to have some form of broken access control, with more than 1.8 million occurrences. Those are precisely the flaws a web application penetration testing engagement exists to find, and precisely the flaws an automated scanner cannot reason about, because deciding whether user A should be allowed to read user B's invoice requires knowing your permission model, not just your HTTP responses.

This post is written for the team buying a test this quarter, usually because an enterprise customer's security review demanded a report, a SOC 2 or PCI cycle came around, or a major release is about to ship. It covers what belongs in scope, what the tester actually does, what comes back, what it costs, and what you have to prepare. Read it and you should be able to draft your own scope document. Stingrai delivers this work through its web application penetration testing service.

What web application penetration testing actually covers

The mistake that produces a weak report is scoping the application as a website. An application is a permission model with a user interface attached, and most of its risk sits behind the login form. Write scope as three columns and the arguments disappear.

In scope by default

In scope only if agreed in writing

Explicitly out of scope

Unauthenticated surface: registration, login, password reset, public pages, error handling

Payment and money-movement paths executed end to end in a sandbox

Denial of service, load and stress testing, resource exhaustion

Authenticated surface for every supplied role, including admin and support consoles

Destructive actions such as account deletion or bulk state changes

Destructive exploitation, data deletion, production configuration changes

APIs behind the application, including endpoints the interface never calls

Testing against production rather than a staging environment

Third-party SaaS and payment processors you do not own

Authentication, session management, multi-factor enrolment and recovery flows

Source code review and architecture review, which is the white-box add-on

Social engineering of your staff or your customers

Authorization at object and function level, across every role pair

Sustained brute force or credential-stuffing simulation

Physical entry and the underlying cloud provider's infrastructure

Tenant boundaries in multi-tenant applications, including cross-organization access

Testing outside the agreed window or from undeclared source addresses

Bulk exfiltration beyond proof-of-access samples

File upload, download, parsing and storage paths

Mobile clients and desktop clients that consume the same API

Any asset you cannot lawfully authorize testing against

Business logic: workflow sequencing, limits, discounts, quotas, approvals

Chained exploitation that pivots into cloud or internal infrastructure

Findings in dependencies with no reachable path in your app

Two boundaries cause most disputes, so settle them in writing.

APIs are part of the application, not a separate product. The interface exercises a fraction of what the backend exposes. Endpoints built for a deprecated screen, an internal tool or a partner integration still answer requests. If the scope says "the web app" and the vendor never asks for an OpenAPI specification or a request collection, they are testing the parts of your API a browser happens to call. The classes that hide there are catalogued in the OWASP API Security Top 10 (2023), led by API1:2023 Broken Object Level Authorization and API5:2023 Broken Function Level Authorization.

Infrastructure under the app is a different engagement. The host operating system, the network perimeter, the identity directory and the internal network are covered by external network penetration testing and internal network work, not by an application test. Scope both when your application sits on infrastructure you manage.

Why role coverage drives web application penetration testing scope and price

Authorization testing does not scale with the number of pages. It scales with the number of directional actor pairs, because for every pair the tester has to ask whether the first actor can reach objects and functions belonging to the second. Add the unauthenticated visitor as an actor, because forced browsing to authenticated endpoints is a real finding.

Authenticated roles

Actor contexts including anonymous

Directional authorization checks

Doubled for a second tenant

2 (user, admin)

3

6

12

3 (user, manager, admin)

4

12

24

5 (plus support, billing)

6

30

60

8 (plus auditor, API client, partner)

9

72

144

Each of those checks then multiplies by the number of sensitive object classes and privileged functions in the app. A platform with eight roles, two tenants and thirty object types is not four times the work of a two-role app; it is closer to an order of magnitude. This is why an honest quote asks how many roles you have before it asks how many pages.

A second detail decides whether the work is possible at all. Testing horizontal authorization, where a user reaches another user's data at the same privilege level, requires two accounts in the same role. One account per role only permits vertical testing, where a low-privilege user reaches admin functions. Provision two accounts for every role, and in multi-tenant applications provision them in two separate tenants with realistic, distinguishable data.

Black-box, grey-box and white-box, and which returns most per dollar

These are not tiers of quality. They are different starting positions, and each buys a different distribution of findings.

Dimension

Black-box

Grey-box

White-box

Tester starts with

A URL and nothing else

Credentials for every role, API documentation, a walkthrough

Everything above, plus source code and architecture documents

Budget spent on discovery

High, often a third of the engagement

Low

Lowest

Authorization coverage

Weak, limited to what can be inferred

Strong across supplied roles

Strongest, including code paths with no interface

Business logic findings

Rare

Common

Common, with root cause identified

Finds issues in code that has not shipped

No

No

Yes

Best used for

Proving what an anonymous attacker sees

Most engagements, most of the time

Payment flows, complex permission models, regulated data

Coverage per dollar

Lowest

Highest

High, at higher total cost

Grey-box wins for most buyers because the budget goes into permission logic rather than reconnaissance. Real attackers register an account or buy one, so starting the tester without credentials does not simulate a real adversary; it simulates an adversary in their first hour. Stingrai's web application security practice aligns testing with the OWASP Web Security Testing Guide, the OWASP Application Security Verification Standard, PTES and NIST SP 800-115, and those standards are worth naming directly in your scope document so both sides agree on coverage.

The finding classes that matter, and the ones scanners systematically miss

A useful report clusters into a predictable set of classes. The right-hand column is the one to read before buying an automated-only option.

Finding class

What it looks like in your application

Found reliably by an unassisted scanner

Broken object-level authorization (IDOR)

Changing an identifier in a request or API path returns another customer's record, invoice or file

No, the tool cannot know whose record it should be

Broken function-level authorization

A standard user reaches an administrative action because the check lives in the interface, not the server

No

Broken object property-level authorization

A user submits extra fields and updates attributes they should not control, such as role or account balance

No

Tenant isolation failure

A request scoped to one organization returns or writes data belonging to another

No

Business logic abuse

Discounts stacked past policy, quotas bypassed, refunds exceeding payment, approvals skipped

No, the tool has no concept of your business rules

Broken workflow sequencing

A multi-step process such as checkout, onboarding or KYC completes with steps skipped or replayed

No

Race conditions

The same coupon, withdrawal or invitation is redeemed twice when requests arrive concurrently

No

Server-side request forgery

The application fetches a URL you supply, reaching internal services or cloud metadata endpoints

Partially, and often only the naive variants

Injection

SQL, NoSQL, command, template or LDAP input reaching an interpreter without separation

Often, this is scanner home ground

Authentication and session weaknesses

Weak reset tokens, sessions surviving logout or password change, multi-factor enrolment bypass, tokens with excessive lifetime

Partially

File upload and file handling

Content-type checks bypassed, path traversal on storage, unauthenticated retrieval of other tenants' documents

Partially

Security misconfiguration and exposure

Debug endpoints, verbose errors, permissive CORS, secrets in client bundles

Often

Three points of precision matter when you write these into a scope document. Broken object-level authorization is the modern name for what most engineers still call IDOR, and in A01:2025 Broken Access Control it sits alongside forced browsing, metadata manipulation and, in the 2025 revision, server-side request forgery as a notable CWE. Business logic abuse has no signature to match, which is why the OWASP list treats insecure design as its own category. And race conditions are a scheduling problem rather than an input problem, so they are invisible to any tool that sends one request at a time.

The gap between what a scanner returns and what an authorization-aware test returns is the whole argument for buying a real engagement, and it is examined in detail in why API scanners miss BOLA and IDOR.

What the tester actually does, phase by phase

Below is the shape of a mid-sized engagement on a multi-tenant SaaS product. Calendar time runs longer than tester days because of provisioning and report review.

Phase

What happens

What you receive

Kickoff

Rules of engagement signed, environment confirmed, roles enumerated, escalation path agreed, source addresses declared

Signed authorization, tester source addresses, agreed exclusions

Mapping

Application walkthrough, route and endpoint enumeration, API specification reconciled against live behaviour, role-to-function matrix built

Endpoint inventory and role matrix, including endpoints not in your documentation

Authentication and session

Registration, login, reset, multi-factor enrolment and recovery, session lifecycle, token handling

Early notice of any authentication bypass

Authorization

Every directional role pair against every sensitive object and function, plus cross-tenant checks

Confirmed authorization findings with request evidence

Business logic

Workflow sequencing, limits, pricing and discount rules, quotas, approval chains, concurrency behaviour

Logic findings tied to business impact in your terms

Input and data handling

Injection classes, file handling, server-side request forgery, deserialization, output encoding

Validated technical findings, false positives removed

Chaining and impact

Combining findings into a path that proves real consequence, with evidence capture

Attack narrative and proof-of-concept package

Reporting and debrief

Severity with business context, remediation guidance, quality review, technical and executive walkthrough

Final report, machine-readable export, live readout

Two behaviours separate a serious provider from a report factory. Critical findings reach your escalation contact within hours of validation rather than in a document three weeks later. And every finding carries request and response evidence produced by the tester, not a plugin identifier inherited from a scanner.

Where Snipe fits, and where senior testers take over

Stingrai's Snipe is an autonomous agent built specifically for web application testing. It performs black-box dynamic testing and white-box source review, opens AutoFix pull requests against the code that caused a finding, and runs as a pull-request gate that blocks vulnerable code from merging. It was trained on public HackerOne disclosure data and human pentester tradecraft, and it is aimed at the complex classes above, including broken object-level authorization, broken function-level authorization and business logic abuse, rather than only the configuration floor.

Being honest about the boundary is more useful than overselling it.

Capability

Autonomous

Hybrid

Enterprise

Continuous black-box and white-box coverage of one web app plus its APIs

Yes

Yes

Yes

AutoFix pull requests and pull-request gating

Yes

Yes

Yes

Automated retests after each fix

Yes

Yes

Yes

Human validation of every finding by certified testers

No

Yes

Yes

Manual testing, vulnerability chaining and novel logic abuse

No

Yes

Yes

PTaaS portal with Jira and Slack integration, quarterly executive reports

No

Yes

Yes

Network, wireless, physical and social engineering modules

No

No

Yes

No High or Critical Finding = Don't Pay guarantee

Yes

Yes

Not applicable

The dividing line is judgement. An agent is excellent at breadth, at repeating the full authorization matrix on every release, and at catching regressions the day they merge. A senior tester is what you want for abuse cases specific to your commercial model, for chaining three medium findings into one critical, and for arguing severity in terms of your contracts. That is the reasoning behind the Hybrid tier, and the split is developed further in autonomous versus human pentesting scope.

What the deliverable contains

A report that satisfies an engineer, an auditor and an enterprise customer at the same time has eight components.

  1. Executive summary. Business risk in plain language, the two or three paths that matter, and posture relative to the last test. No score tables here.

  2. Attack narrative. The engagement in sequence, showing how a low-privilege account became a cross-tenant data exposure.

  3. Coverage statement. Roles tested, environment, endpoint inventory, what was excluded and why. This is the section your customer's security reviewer reads first.

  4. Findings register. Per finding: identifier, affected endpoints and roles, a standard severity plus a business-context rating, request and response evidence, reproduction steps, and remediation at code level.

  5. Remediation plan. Sequenced by risk reduced per unit of engineering effort, not by severity alone, with systemic fixes separated from one-off patches.

  6. Retest appendix. Updated status per finding once fixes are verified.

  7. Machine-readable export. CSV or JSON so findings reach your issue tracker without retyping.

  8. Completion letter. A short, shareable summary without exploit detail, for customers and underwriters. The difference is covered in completion letter versus full report.

Web application penetration testing supports your SOC 2, ISO 27001 and PCI DSS programs by producing the technical evidence those programs reference. Be precise about what is actually mandated. PCI DSS v4.0.1 is the one framework here that mandates penetration testing across a general population, and CMMC requires it at Level 3 only. ISO 27001, SOC 2, NIST SP 800-171 and NIS2 do not mandate it in that way, and ISO 27001 and SOC 2 set no frequency, so an annual cadence there is driven by auditors, customers and insurers. In SOC 2, vulnerability scanning maps to CC7.1 while a penetration test lands at CC4.1. In ISO 27001:2022, cite Annex A 8.8 and A 8.29; A.12.6.1 belongs to the withdrawn 2013 numbering and should not appear in a 2026 scope document.

Duration and the real web app pentest cost drivers

Cost is driven by the permission model and the workflow count, not by page count or by how many megabytes your front end ships.

Cost driver

Why it moves the price

What to give the vendor

Number of distinct roles

Authorization work scales with directional role pairs, the largest single factor

A role list with what each role can do

Multi-tenancy

Every check runs again across a tenant boundary, roughly doubling authorization effort

Whether tenants share a database, and how isolation is enforced

API endpoint count and documentation quality

Undocumented endpoints have to be discovered before they can be tested

An OpenAPI specification or request collection, plus known deprecated routes

Money movement and regulated data

Payment, payout, refund and settlement paths need careful, sandboxed handling

Which flows move money, and where the sandbox lives

Workflow complexity

Multi-step processes with approvals and state machines are where logic abuse hides

A list of your ten most business-critical workflows

Source code access

White-box review adds effort and finds root causes and unreachable-by-interface code

Repository access and a build or architecture overview

Environment quality

Testing a staging environment that lags production produces findings nobody can reproduce

Confirmation of parity, or a decision to test production with guardrails

Integrations

Single sign-on, OAuth connected apps, webhooks and partner callbacks each add surface

An inventory of every integration and the scopes it holds

Retest and cadence

One retest window differs from continuous testing on every release

Your remediation timeline and release frequency

Evidence requirements

Customer questionnaires and auditor-grade packs add reporting effort

The frameworks and questionnaires you must satisfy

As a planning shape rather than a price list: a single-tenant application with two roles and fewer than thirty endpoints is typically a few tester days across one to two weeks elapsed; a multi-tenant SaaS product with four to six roles and a few hundred endpoints is one to two tester weeks across two to four weeks; a platform with eight or more roles, money movement and several integrations runs longer and usually benefits from white-box access.

Stingrai publishes web application pricing rather than hiding it behind a call. Autonomous is US$3,000 one time or US$450 per month, and Hybrid is US$6,800 one time or US$1,275 per month, both on a twelve-month engagement covering one web application plus its APIs. Enterprise is scoped to your attack surface and quoted individually. The No High or Critical Finding = Don't Pay guarantee applies to the Autonomous and Hybrid tiers. Current packages sit on the Stingrai pricing page, and scoping runs through the web application penetration testing service. If you are normalizing competing proposals, how to compare penetration testing quotes sets out a method.

What to prepare, retesting, and how to spot a scan with a cover page

Preparation is the difference between testing starting on day one and starting on day four.

Item

What to have ready

Why it matters

Written authorization

Signed by someone with authority over the application, naming environments and the window

Testing cannot begin without it, and your hosting provider may need notice

Credentials for every role

Two accounts per role, in two tenants where multi-tenant, with multi-factor pre-enrolled

Without a second same-role account, horizontal authorization cannot be tested

Seeded test data

Distinguishable records per account, so cross-account access is unambiguous in evidence

Prevents arguments about whether a finding is real

API documentation

OpenAPI specification or request collection, plus a list of deprecated and internal endpoints

Undiscovered endpoints are untested endpoints

Environment decision

Staging with production parity, or production with agreed guardrails

A stale staging environment produces findings you cannot reproduce

Rate limit and WAF allowances

Whether tester addresses are allowlisted, and whether lockout thresholds are relaxed

Blocking can silently hide vulnerable functionality behind a filtered response

Contacts and escalation

Technical contact, out-of-hours number, and who receives a critical finding

Criticals need a human within hours

Release calendar

Freezes, deploys and migrations during the window

An application that shifts mid-test yields irreproducible findings

Reset procedure

How to restore state after destructive-adjacent tests

Lets the tester exercise workflows fully instead of stopping short

The allowlist decision deserves deliberate thought. Testing through your web application firewall reflects reality but can mask vulnerable code behind a generic block. Testing with tester addresses allowlisted guarantees coverage of the application itself. The strongest pattern is to run an initial portion unfiltered, record whether the platform blocked or detected the activity, then allowlist for the remainder so the code gets properly assessed. Put both outcomes in the report.

Retesting verifies fixes to findings already reported, on the same application, within an agreed window after the report, commonly 30 to 90 days. It does not add scope and does not restart discovery. On continuous engagements, retesting happens automatically as fixes land rather than as a single event, which is the practical advantage of a subscription model over an annual test.

Telling a real engagement from a scan with a report cover. When you compare web application penetration testing services, request a redacted sample report and check seven things. Does the coverage statement list roles tested, or only URLs? Is there at least one authorization finding that required two accounts to prove? Is there a chained finding where two mediums combine into something worse? Does any finding reference your business rules rather than generic phrasing? Is evidence a captured request and response, or a plugin identifier? Are removed false positives noted? Is retesting inside the fee? A vendor who quotes from page count without asking about roles, tenancy or APIs is quoting a scan. How to evaluate a penetration test report works through the same exercise in more depth.

Stingrai has delivered offensive security engagements since 2021 from Toronto and London, is a CREST-accredited penetration testing service provider at firm level with individual testers holding CREST CRT, has published 18 CVEs, and holds 5.0 out of 5.0 across 19 Clutch reviews. Team certifications include OSCE3, OSCP, OSWE, OSED, OSEP, CISSP and CRTO.

Frequently Asked Questions

What is web application penetration testing?

Web application penetration testing is an authorized, time-boxed assessment in which a tester attempts to abuse an application the way a real attacker would, covering the unauthenticated surface, the authenticated surface for every user role, the APIs behind the application, and the business workflows those APIs drive. It differs from a vulnerability scan because every finding is validated with request and response evidence and chained to show real business impact. The output is a report an engineer can act on and an enterprise customer or auditor can accept.

How much does a web application penetration test cost?

Stingrai publishes web application tiers at US$3,000 one time or US$450 per month for Autonomous, and US$6,800 one time or US$1,275 per month for Hybrid, both on a twelve-month engagement covering one web application plus its APIs, with Enterprise scoped individually. Across the market, the price of a web application penetration test is driven by the number of distinct user roles, whether the application is multi-tenant, how many API endpoints exist and whether they are documented, and whether source code access is included. Ask each vendor to justify their day count against those drivers so that quotes compare on the same basis.

What is included in web application penetration testing scope?

A complete scope includes the unauthenticated surface, the authenticated surface for every supplied role including admin and support consoles, the APIs behind the application including endpoints the interface never calls, authentication and session flows, authorization at object and function level across every role pair, tenant boundaries in multi-tenant products, file handling paths, and business logic such as workflow sequencing, limits and approvals. Denial of service, destructive exploitation, social engineering, physical entry and third-party systems you do not own are normally excluded. Payment paths, production testing and source code review are typically in scope only when agreed in writing.

How long does a web application penetration test take?

Elapsed time runs longer than tester days because of account provisioning, environment access and report review. As a planning shape, a single-tenant application with two roles and fewer than thirty endpoints is a few tester days across one to two weeks, a multi-tenant product with four to six roles and a few hundred endpoints is one to two tester weeks across two to four weeks, and a platform with eight or more roles and money movement runs longer. Continuous engagements replace the single window with testing that repeats on every release.

What is the difference between black-box, grey-box and white-box web application penetration testing?

Black-box testing starts with only a URL, so a large share of the budget is spent on discovery and authorization coverage stays weak. Grey-box testing supplies credentials for every role plus API documentation, which puts the budget into permission logic and business workflows and usually returns the most coverage per dollar. White-box testing adds source code and architecture, which finds root causes and code paths the interface never exposes, and it is worth the premium for payment flows, complex permission models and regulated data.

Do vulnerability scanners find IDOR and business logic flaws?

No. Scanners reliably detect injection, transport and configuration defects because those have signatures, but broken object-level authorization, broken function-level authorization, tenant isolation failures, business logic abuse and race conditions require knowing which user should be allowed to do what, which is context a tool does not have. This is why an engagement that only produces scanner output is not a penetration test, and why authorization testing needs two accounts at the same privilege level rather than one.

How often should you run a web application penetration test?

PCI DSS v4.0.1 mandates penetration testing across a general population and CMMC requires it at Level 3 only, while ISO 27001, SOC 2, NIST SP 800-171 and NIS2 do not mandate it in that way, and ISO 27001 and SOC 2 set no frequency, so cadence there is driven by auditors, customers and insurers. Most teams settle on annually plus after any significant change, which for an application means a new authentication provider, a new role or permission model, a new payment or money-movement flow, or a major architectural change. Teams shipping weekly increasingly move to continuous testing because an annual snapshot ages out within a sprint or two.

Is retesting included after a web application penetration test?

Retesting should be inside the fee, and if a vendor charges separately you should ask why. A retest verifies fixes to previously reported findings on the same application within an agreed window, commonly 30 to 90 days after the report, and produces an updated status per finding plus a revised completion letter you can share with customers. On Stingrai's Autonomous and Hybrid tiers retests run automatically as fixes land, so verification is continuous rather than a single scheduled event.

0 views

0

X

Related reading

The Right-to-Test Clause: Pentesting a Vendor's SaaS, and What to Offer When Your Customer Demands It
Web App Security

The Right-to-Test Clause: Pentesting a Vendor's SaaS, and What to Offer When Your Customer Demands It

What a right-to-test clause must fix, why cloud provider permission never covers a vendor's SaaS, and the evidence pack to offer instead of live access.

9 min read

How Big Is an Authorization Fix? Patch Size by Weakness Family
Web App SecurityAdvisories

How Big Is an Authorization Fix? Patch Size by Weakness Family

We measured 3,806 GitHub Advisory Database fix commits. Access control patches change 64 lines to injection's 39, but the code only gap is 2 lines.

17 min read

The Agent Key That Must Not Identify a Person: Web Bot Auth and the Audit Attribution Gap
LLM SecurityWeb App Security

The Agent Key That Must Not Identify a Person: Web Bot Auth and the Audit Attribution Gap

Web Bot Auth requires that an agent signing key must not identify a person. RFC 8693 has carried attributable delegation since 2020. A stamped matrix.

22 min read

Contents

X