DAST (dynamic application security testing) is automated: a scanner crawls a running application, sends known attack payloads, and reads the responses. Penetration testing is manual: a person uses real accounts, understands what the application is for, and attacks the way an adversary would. DAST is cheap, repeatable, and blind to anything that requires understanding. Penetration testing is expensive per run, periodic, and finds the flaws that cause real breaches. A mature program uses both and does not confuse them.
How DAST works
A DAST tool points at a running application, usually in staging, and does three things:
- Crawls the application to discover pages, forms, parameters, and API endpoints. Modern tools handle single-page applications and can replay a recorded login.
- Fuzzes every discovered input with payloads for known vulnerability classes: SQL injection, cross-site scripting, path traversal, command injection, open redirects, and so on.
- Reads the responses for signatures of success: an error message, a reflected payload, a timing difference, a changed status code.
Because it works from the outside against the running system, DAST needs no source code and no build integration, which is why it is easy to add to a pipeline and why so many “automated penetration testing” products are DAST with a different label.
What DAST is good at
- Known injection classes in parameters it can reach: SQL injection, cross-site scripting, header injection, some server-side request forgery.
- Configuration and hygiene: missing security headers, weak TLS, verbose error pages, exposed debug endpoints, cookie flags.
- Regression detection. Run it on every build and it will catch the injection point that a refactor reintroduced.
- Breadth at low cost. It will try ten thousand payloads against a hundred parameters overnight, which no human will.
- Repeatability. The same scan on the same build gives the same result, which is useful evidence that a fix worked.
What DAST misses
DAST has no idea what the application is for. Everything below requires that understanding, and every one of them appears regularly in manual test reports on applications that passed their scans.
- Authorization flaws between users. The most common serious finding in modern applications is one user reading or changing another user’s data. A scanner logged in as one account has no concept of “this record belongs to someone else.” A tester with two accounts finds it in an afternoon.
- Multi-tenant isolation. The same problem at the tenant level, which is the finding that ends enterprise deals.
- Business logic abuse. Applying a discount twice, skipping a payment step, replaying an approval, changing a price in a request the interface never exposes. There is no payload for “this workflow can be walked backward.”
- Multi-step and stateful flows. Password reset, checkout, onboarding, and anything that depends on what happened three requests ago. Scanners struggle to maintain the state and cannot judge the outcome.
- Authentication design flaws. Predictable reset tokens, MFA that can be skipped by calling the next endpoint directly, session handling that survives logout. A scanner can test rate limiting; it cannot reason about the design.
- Chained findings. A low-severity information leak plus a medium-severity misconfiguration that together give full access. Scanners report items; testers build paths.
- Anything behind complex authentication or non-standard protocols. Custom token schemes, mutual TLS, WebSockets, and heavily scripted front ends often leave the crawler covering a fraction of the application without saying so.
- False positives. The scanner reports what looks like a signature. Someone still has to prove each one, and on a large application that triage is a job in itself.
What a penetration test adds
A web application penetration test is performed by a person with credentials for every role, a second tenant where the product is multi-tenant, and a scoping call that explained what the application does and what would hurt if it broke. The tester follows the OWASP Web Security Testing Guide for coverage, reads the API the way the front end does, and spends the bulk of the time on authorization, logic, and the flows the scanner could not follow.
Every finding is proven by hand with the request, the response, and the steps to reproduce it. There are no false positives to triage, and severities reflect what the flaw means for your business rather than a generic score.
Side by side
| DAST | Penetration test | |
|---|---|---|
| Who performs it | Software | Senior tester |
| Understands the application | No | Yes, from scoping and use |
| Authorization and logic flaws | Rarely | The main event |
| Injection and hygiene issues | Well, where it can reach | Also, with less time spent |
| False positives | Yes, need triage | None; every finding is proven |
| Frequency | Every build | Annually, per major release, or on a program |
| Cost | Tool license and triage time | Fixed per engagement, from $4,000 at Invadel |
| Accepted by auditors and customers as “a penetration test” | No | Yes |
The last row matters more than it looks. SOC 2 auditors, PCI DSS assessors, and enterprise security reviewers ask for a penetration test and mean a manual one by an independent firm. A DAST report submitted in its place is usually sent back.
How to use both
- Run DAST in the pipeline. Scan every release candidate and fix the injection and hygiene findings before they ship. This keeps the cheap findings out of the expensive test.
- Give the tester the scan output during scoping. We read it so the manual budget goes to the logic, authorization, and integration flaws the tool cannot see, rather than confirming things you already know.
- Test manually on a schedule. Annually at minimum, per major release for products that change quickly, or as a continuous program with manual windows and validated scanning between them.
- Retest properly. DAST can confirm an injection fix. Only a person can confirm that an authorization fix holds across every role, which is why our engagements include a free manual retest.
A note on “automated penetration testing”
Several products now sell DAST, sometimes with a large language model wrapped around it, as automated or autonomous penetration testing. The tools are improving and some are genuinely useful for scanning breadth. They remain scanners: they do not know what your application is for, and they do not produce the authorization and logic findings that fill manual reports. Our guide to automated vs manual penetration testing goes through what the tools catch and what they cannot.
If you need a manual test for an auditor, a customer, or your own peace of mind, our application penetration testing services page sets out the engagements and their fixed prices.
Written by
Invadel Team
Senior penetration testers writing from real engagements, the same team that scopes, tests, and reports for our clients. About Invadel →