
Cyber-Security-&-Risk-Management
Upscend Team
-October 20, 2025
9 min read
This guide presents a practical, step-by-step web application pentesting workflow: recon, mapping, automated scans, and manual OWASP Top 10 verification. It covers sql injection testing, xss detection, authentication and session management flaws, and shows how to build least-impact PoCs and actionable remediation for retesting.
web application pentesting is a structured, repeatable process for finding and verifying vulnerabilities in web apps. In this guide we present a practical, experience-driven walkthrough you can apply to internal assessments, third-party tests, or red-team engagements.
We focus on reconnaissance, mapping, automated scans, manual verification of the OWASP Top 10, exploitation examples for sql injection testing and xss detection, authentication and authorization checks, plus post-exploit steps and reporting. This is a hands-on playbook built from real engagements.
Effective recon sets the scope and avoids wasted effort. In our experience, teams that spend 20–30% more time on systematic discovery surface 40–60% more actionable issues. Scoping is a mix of asset identification and rules of engagement: authorized targets, test windows, and data-handling constraints.
Start with automated and manual discovery to build an inventory. Focus on high-impact assets (login endpoints, API gateways, admin panels) and document what you plan to test.
Subdomains often host forgotten or staging apps with weak controls. Use a layered approach: passive sources (DNS histories, crt.sh), active enumeration (subfinder, Amass), and brute-forcing when authorized. Confirm results with DNS lookups and web banner checks.
Map endpoints, parameters, and response types to prioritize testing. Use spidering (Burp or ZAP) plus manual clicks to enumerate hidden flows. Export sitemaps and attach notes on authentication, expected inputs, and sensitive functionality.
Checklist: record endpoints, input vectors, content types, and any API keys or tokens observed. This becomes the baseline for automated scans and manual verification.
Mapping transforms recon data into a threat-driven test plan. We've found that pairing a simple data-flow diagram with an attack surface list reduces missed checks by half. Document trust boundaries and where input crosses from user-controlled to application-controlled contexts.
Prioritize tests by business impact and exploitability. Authentication bypasses on admin pages, writable uploads, and SQL-exposed endpoints should be high priority.
Create a short threat matrix that ties each endpoint to potential OWASP Top 10 categories: injection, broken auth, XXE, etc. For each entry include likely payloads, required privileges, and evidence types (response codes, timing differences, error messages).
Use this matrix to guide both automated and manual actions—this aligns testing activities to business risk and makes reporting clearer for stakeholders.
Automation accelerates coverage but generates false positives. In our experience, a balanced pipeline of passive scanning, authenticated scans, and focused active scans gives the best return on time. Reserve manual testing for verification and logic flaws.
Key tools: Burp Suite (scanner + repeater), ZAP, sqlmap, Nikto, and custom scripts for API fuzzing. Integrate CI-friendly scanners for repeatable checks on each deployment.
Start with Burp in proxy mode and capture an authenticated session. Use the Site map to identify parameters then run the scanner on high-value paths. Triage results in Burp's issues tab, then move automatically to Repeater for crafted attacks and Intruder for targeted fuzzing.
Describe screenshot: in a Burp workflow screenshot you would see the left Site map panel expanded with endpoints, the Scanner showing identified issues, and Repeater tabs with crafted payloads. Document settings: which scan checks were enabled, any ignored paths, and authentication macro used.
Automated tools find many surface issues, but manual checks are required for the most critical vulnerabilities. Manual verification focuses on logic, chained vulnerabilities, and verifying true exploitability of scanner findings.
Follow a reproducible approach: identify the issue, construct a minimal proof-of-concept, and capture repeatable evidence (HTTP request/response, screenshots of behavior or data exfiltrated).
sql injection testing requires careful parameter identification and controlled exploitation. Use parameterized checks, error-based probes, and time-based payloads. Example payloads for boolean-based injection: ' OR 1=1-- and for time-based: ' OR SLEEP(5)-- (adjust to the DB dialect).
Simple PoC request (replace VALUES as needed): POST /search HTTP/1.1 Host: target Content-Type: application/x-www-form-urlencoded body: q=' OR '1'='1'
When using sqlmap, validate the exact parameter with --param-filter and run in non-destructive mode first. Log exact queries and responses to avoid data corruption.
xss detection requires testing reflected, stored, and DOM contexts. Start with safe payloads: <img src=x onerror=alert(1)> for reflected checks, and context-aware payloads for attributes or JS contexts. Observe encoding behaviors and CSP headers.
For DOM XSS, use Burp's Repeater and manual DOM inspection. Capture the full DOM after interaction using browser dev tools, then craft a PoC that reproduces execution consistently.
Some forward-thinking security teams we work with use platforms like Upscend to automate parts of the testing workflow without sacrificing quality.
Authentication and authorization issues are frequent and high-impact. We emphasize both bruteforce and logical tests: password policy, account lockout behavior, multi-factor bypass, and vertical/horizontal privilege escalation.
Document session lifecycle: token issuance, storage, rotation, logout behavior, and expiry. Missing rotation or insecure storage are common session management flaws.
Look for predictable or long-lived tokens, reuse of tokens after logout, and session fixation. Test by capturing a session token, forcing logout from one client, and checking whether the token still works elsewhere. Also test token invalidation after password change.
For cookie flags, verify Secure, HttpOnly, and SameSite attributes. If JWTs are used, inspect signature verification and claim handling. Always test in a controlled, authorized environment to avoid service disruption.
Once you confirm an issue, create a minimal, reproducible proof-of-concept that demonstrates impact without causing harm. Our teams follow a "least-impact PoC" rule: show data access or control without exfiltrating production data.
Reporting should include remediation steps, risk rating, exploitability, and exact commands or requests used. Include remediation validation steps so owners can test fixes easily.
False positives are inevitable with scanners. To triage, reproduce using direct requests in Burp Repeater, verify server-side behavior, and look for side-effects. If in production, coordinate a short maintenance window and use non-destructive techniques or captive test data.
Good deliverables include a prioritized findings table, step-by-step reproduction, suggested fixes, and a retest checklist. We often include configuration snippets and sample secure code to accelerate remediation.
Example remediation for SQLi: enforce parameterized queries, use ORM protections, and implement input validation and least-privilege DB accounts. For XSS: apply context-aware encoding and Content Security Policy headers.
This condensed case study demonstrates a common pattern: a login page that leaks timing differences and returns verbose errors. We encountered this in a commercial web app during a red-team engagement and used it to escalate privileges while maintaining safety.
Phase 1: reconnaissance identified /login and an API /api/auth. The login returned different response lengths and a 500 error on malformed payloads—an initial sign of inconsistent error handling.
We tested with Burp and observed that username enumeration was possible from response timing: valid usernames caused DB lookups that added ~100ms. The PoC used a timing-based script that measured response times for usernames to enumerate valid accounts without triggering lockout vigorously.
PoC request (illustrative): POST /login HTTP/1.1 Host: target Content-Type: application/json {"username":"admin","password":"' OR SLEEP(5)--"}
After confirming enumeration, we attempted a credential stuffing test against weak password lists in a controlled, rate-limited manner. One account had a weak password; we escalated to a session takeover by reusing the session token observed during login flow due to missing rotation on password change.
Remediation included normalized error messages, rate limiting and account lockout policies, parameterized queries to prevent injection, and proper session invalidation on password changes. We recommended a staged rollout and a retest plan to validate fixes.
Key takeaways: combine timing analysis with strict access controls; always test auth flows for multiple classes of flaws—enumeration, injection, and improper session handling.
Web application pentesting is most effective when it combines systematic recon, prioritized mapping, automated coverage, and thorough manual verification. Use the structured playbook above to create repeatable, defensible tests. In our experience, the biggest wins come from tying technical findings to business impact and providing clear, reproducible PoC and remediation steps.
Start by building an asset inventory, creating a threat matrix, and selecting a mix of tooling that matches your risk tolerance. Always coordinate tests with stakeholders and prioritize safety and data protection.
Next step: pick one high-value endpoint, run a focused scan, and attempt a manual verification cycle using the SQLi and XSS examples here. Capture exact requests and responses for each finding so developers can reproduce and fix issues quickly.
Call to action: If you want a reproducible checklist to run your first focused assessment, export this guide into a single test plan and run it against a non-production clone—then schedule a short retest window to validate fixes and reduce risk.