Web applications are the dominant attack surface — and the dominant category of work. This topic gives the methodology, the vulnerability classes, and the toolchain.
Evaluating a web application's security by interacting with it as an attacker would. The application is treated as a system whose entry points accept untrusted input and produce side effects — data reads, data writes, calls to other systems.
The OWASP Web Security Testing Guide (WSTG v4.2) organises testing into twelve categories:
Scope determines focus — the WSTG gives a checklist against which coverage can be measured.
Output: a working sitemap. The proxy builds it automatically; interpretation is human.
Untrusted input flows into a privileged interpreter and changes its semantics.
| Type | Interpreter | Real impact |
|---|---|---|
| SQLi | SQL engine | Data exfil, auth bypass, sometimes RCE via DB features |
| Command injection | OS shell | Immediate RCE |
| SSTI | Template engine (Jinja, Twig, Freemarker…) | RCE through engine primitives |
| NoSQL injection | MongoDB, CouchDB… | Auth bypass, data exfil |
| XXE | XML parser | File read, SSRF, sometimes RCE |
GET /api/orders/12345; change the number, get another user's datarole=admin)Access control flaws are most often missed by automated scanners and most often present.
Application makes outbound requests; URL is partly user-controlled. Attacker points at internal systems — cloud metadata, internal services, file:// URLs. Impact: cloud-credential theft, internal service interaction.
Reflected, stored, DOM-based, mutation-based. Impact: session hijacking, credential theft, forced actions in the victim's browser. HttpOnly cookies and CSP reduce impact but misconfigurations are common.
Application deserializes an attacker-supplied object (Java, .NET, PHP, Python pickle) without validation. Working exploit chains (ysoserial) yield RCE.
Simultaneous requests bypass single-use restrictions; workflow states skipped or reordered. Most-missed by tools — most rewarding to find.
redirect_uri, missing state parameter, implicit-flow weaknessesAllow-Origin reflecting attacker domain with credentialsBoth Burp Suite (Community and Professional) and OWASP ZAP provide:
Burp Pro adds Collaborator for out-of-band detection (blind SSRF / XXE / SQLi).
A common omission: testing as only one user. Authorization bugs reveal themselves when comparing "as user A" vs. "as user B" performing the same action.
Discipline: keep two proxy profiles authenticated as different users; for each request ask: would this work sent as the other user?
Burp Match & Replace or the Authz extension automates this.
Tools generate candidates; humans verify and contextualise.
| Element | What it must contain |
|---|---|
| Endpoint affected | HTTP method, full URL, parameter name |
| Request | Full HTTP request demonstrating the issue, sanitized of secrets |
| Response | Full or relevant excerpt showing the impact |
| Reproduction steps | Exact steps a developer with curl / Postman / Burp can follow |
| Impact analysis | What an attacker can do in this application's context — not a generic CWE description |
| Severity | Justified with reference to the impact analysis |
| Remediation | Specific to this application's framework and language |
A finding's title is "XSS on the search page". Rewrite it to convey impact rather than just technique.
Bad: names the technique and location but not the impact. Better: "Reflected cross-site scripting in product-search parameter enables session hijacking of authenticated users" — names the vulnerability, the parameter, and the consequence. The client needs to know whether this is an annoying nuisance or an account-takeover vector. The title delivers the verdict; the body delivers the evidence.
A client says: "We already use a WAF; do we need a web pentest?" How do you respond?
A WAF blocks known attack patterns — it does not fix underlying vulnerabilities. Pentesting finds: (1) vulns the WAF does not pattern-match; (2) WAF bypass techniques (encoding, alternative syntax); (3) authorization flaws and business-logic issues invisible to any WAF; (4) origin-direct exposure that bypasses the WAF entirely. WAF is mitigation; pentest measures the actual vulnerability surface.
Next: Topic 18 — Post-exploitation & kill-chain synthesis. Chains connect individual findings into impact narratives.