Web Application Vulnerability Assessment Checklist | Vooki Pro

Web application vulnerability assessment checklist

Web Application Vulnerability Assessment Checklist

A vulnerability assessment identifies the security weaknesses in a web application and rates each one by severity. This checklist covers the whole process in 14 sections and 118 checks, from planning to retesting. It follows the way the OWASP Web Security Testing Guide organises an assessment.

Each check shows how it is usually carried out:

  • Automated: Vooki Pro tests this for you.
  • Automated + manual review: Vooki Pro tests for it, but a person should confirm the result or look deeper.
  • Manual: a person has to do or check this.

97 of the 118 checks can be automated in full or in part, which leaves your team free for the ones that need human judgement.

1. Plan and scope

Agree these before any testing starts.

CheckHow
Get written authorisation to test, naming the systems and datesManual
List every application, API, subdomain and environment in scopeManual
Record what is out of scope: third-party services, payment providers, production dataManual
Create test accounts for each user role, plus a second account at the same levelManual
Agree testing windows, request-rate limits and who to contact if something breaksManual
Confirm backups exist and the test environment can be restoredManual
Build a simple threat model: what is most valuable, and who would attack itManual
Tell operations and monitoring teams, and allow-list the scanner in the WAF if neededManual

2. Discover the attack surface

You cannot test what you have not found.

CheckHow
Map all pages, forms and parameters, including areas behind the loginAutomated
Capture background API calls (XHR/fetch) made by the front endAutomated
Record critical multi-step journeys such as checkout and onboardingAutomated
Import API definitions (OpenAPI, Postman, HAR) so unused endpoints are coveredAutomated
Identify server, framework, CMS and library versionsAutomated
Check robots.txt and sitemap.xml for hidden pathsAutomated
Look for exposed API documentation (Swagger/OpenAPI)Automated
Look for old API versions and undocumented endpointsAutomated + manual review
Check subdomains for dangling DNS recordsAutomated
Review the discovered sitemap against what the application really containsManual

3. Configuration and deployment

CheckHow
Only TLS 1.2 and 1.3 are enabled; no weak ciphersAutomated
Certificate is valid and not close to expiryAutomated
HSTS is setAutomated
Content-Security-Policy is present and not weakAutomated
X-Frame-Options or frame-ancestors, X-Content-Type-Options, Referrer-Policy and Permissions-Policy are setAutomated
CORS allows only trusted originsAutomated
No version details in headers such as Server or X-Powered-ByAutomated
Unneeded HTTP methods (TRACE, PUT, DELETE) are disabledAutomated
Debug mode is off; no stack traces or verbose errorsAutomated
No default credentials on the application or its admin toolsAutomated
Admin panels and management endpoints are not publicly reachableAutomated
Directory listing is disabledAutomated
No exposed .git, .env, backup files, source maps or phpinfo pagesAutomated
Cloud storage buckets are not publicly listableAutomated
Frameworks, libraries and server software have no known CVEsAutomated

4. Authentication

CheckHow
Login and password reset do not reveal which usernames existAutomated
Repeated failed logins are rate-limited or locked outAutomated
Password policy rejects weak passwordsAutomated
Credentials are never sent over HTTP or in URLsAutomated
Passwords are never returned in responsesAutomated
Password reset tokens are single-use, random and expireAutomated + manual review
Every protected page and endpoint requires authenticationAutomated
JWTs are validated properly: algorithm, signature, expiryAutomated
OAuth / OpenID Connect / SAML flows are implemented securelyAutomated
Multi-factor authentication is available for sensitive accounts and cannot be bypassedManual

5. Session management

CheckHow
Session cookies have Secure, HttpOnly and SameSite flagsAutomated
Session IDs are long and unpredictableAutomated
A new session ID is issued at loginAutomated
Sessions expire after inactivityAutomated
Session tokens never appear in URLsAutomated
Logout invalidates the session on the serverManual
Concurrent sessions are handled as intendedAutomated + manual review
State-changing requests are protected against CSRFAutomated

6. Authorization and access control

Test these with at least two accounts.

CheckHow
Users cannot read or change other users' data by changing an ID (IDOR / BOLA)Automated + manual review
Users cannot reach admin functions (vertical privilege escalation)Automated + manual review
Users cannot act as another user of the same role (horizontal)Automated + manual review
Protected pages cannot be opened directly without the right role (forced browsing)Automated
Access rules cannot be bypassed by changing the HTTP method or using method-override headersAutomated
Access rules cannot be bypassed with path tricks such as ../ or encoded charactersAutomated
API requests cannot set fields they should not control (mass assignment)Automated
Role and permission changes take effect immediatelyManual

7. Input validation and injection

Test every parameter, header, cookie and body field.

CheckHow
SQL injection, including blindAutomated
NoSQL injectionAutomated
OS command injectionAutomated
Cross-site scripting: reflected, stored and DOM-basedAutomated
Server-side template injectionAutomated
XML external entities (XXE) and XML injectionAutomated
LDAP and XPath injectionAutomated
Server-side request forgery (SSRF)Automated
CRLF and host header injectionAutomated
HTTP parameter pollutionAutomated
Open redirectsAutomated
Local and remote file inclusionAutomated
Insecure deserializationAutomated
Prototype pollutionAutomated
HTTP request smugglingAutomated

8. File upload and download

CheckHow
Uploads are restricted by type, and the content is verified, not just the extensionAutomated
Disguised and polyglot files are rejectedAutomated
Upload size limits are enforcedAutomated
File names cannot escape the upload folder; archives are safe to extract (zip slip)Automated
Uploaded files are stored outside the web root and cannot be executedManual
Downloads check that the user is allowed to access the fileManual

9. Client-side security

CheckHow
Pages cannot be framed by other sites (clickjacking)Automated
No unsafe JavaScript patterns such as innerHTML or eval with untrusted dataAutomated
postMessage handlers validate the senderAutomated
No sensitive data in localStorage or sessionStorageAutomated
Third-party scripts use Subresource IntegrityAutomated
Links that open new tabs cannot hijack the opener (tabnabbing)Automated
JavaScript libraries are up to dateAutomated
No mixed contentAutomated

10. API-specific checks

CheckHow
Object-level and function-level authorization on every endpointAutomated + manual review
Responses return only the fields the client needsAutomated + manual review
Rate limits and size limits are in placeAutomated
GraphQL introspection is disabled in production; query depth is limitedAutomated
Old API versions are retiredAutomated + manual review
Data from third-party APIs is validated before useAutomated + manual review

11. Business logic

Automated tools help here, but a person who understands the business must review it.

CheckHow
Prices, quantities and totals cannot be manipulatedAutomated + manual review
Workflow steps cannot be skipped or repeatedAutomated + manual review
Coupons, credits and limits cannot be abusedAutomated + manual review
Race conditions do not allow double spending or duplicate actionsAutomated + manual review
Sensitive actions require confirmation or re-authenticationManual

12. Data protection and error handling

CheckHow
No personal data, API keys or secrets in responses or JavaScriptAutomated
Sensitive pages are not cached by browsers or proxiesAutomated
Error pages are generic and reveal no internal detailsAutomated
No internal IP addresses, database strings or sensitive comments in responsesAutomated
Sensitive data is encrypted at restManual
Security events (logins, failures, permission changes) are logged and monitoredManual

13. Triage and report

CheckHow
Verify each finding using its evidence; mark false positivesManual
Rate findings by severity, using CVSSAutomated + manual review
Remove duplicates that share one root causeAutomated + manual review
Record evidence and steps to reproduce for each findingAutomated
Assign each finding to an owner, with a ticketAutomated + manual review
Write the report: scope, method, findings by severity, remediationAutomated + manual review
Map findings to the frameworks you report against (OWASP Top 10, PCI DSS, ISO 27001, SOC 2)Automated
Walk stakeholders through the risks that concern themManual

14. Fix, retest and repeat

CheckHow
Fix Critical and High findings firstManual
Retest each fix against the live applicationAutomated
Run a full rescan to catch regressionsAutomated
Schedule the next assessment, and scan after every significant releaseAutomated
Feed recurring issues back into developer training and coding standardsManual

How to use this checklist

  • Work through the sections in order for a first assessment. For later ones, start from section 2.
  • Run the automated checks first, with authentication configured, then spend your manual time on authorization, business logic and the findings that need confirming.
  • Only test systems you own or have written permission to test.
  • A checklist is a minimum. Adapt it to your application's technology and risks.

How Vooki Pro helps

  • Automates 97 of the 118 checks in this list, fully or in part, in a single scan.
  • Tests behind the login with auth profiles and automatic re-login, which sections 4 to 7 depend on.
  • Gives every finding evidence, steps to reproduce, a CVSS score and remediation guidance, ready for triage.
  • Creates tickets in Jira, GitHub, GitLab, Linear or Azure DevOps, and produces standard and compliance reports.
  • Retests each fix and keeps triage states between scans, so every assessment builds on the last.

Frequently asked questions

What is a vulnerability assessment?

A structured process to identify, rate and report security weaknesses in an application.

How is it different from a penetration test?

An assessment aims to find as many weaknesses as possible; a penetration test tries to exploit them to show real impact.

How often should I run a vulnerability assessment?

At least quarterly for internet-facing applications, and after every significant release. Automated scanning can run far more often, for example weekly or on every build.

Can a vulnerability assessment be fully automated?

No. Most technical checks can be automated, but scoping, authorization logic, business logic and the final triage need a person.

Try Vooki Pro free for 7 days

Run this checklist against your own application with Vooki Pro. The trial unlocks every feature for 7 days, and scanning runs on your own machine.

Get Vooki Pro →  ·  Working with findings

Related: Web application penetration testing checklist · Scoping a security scan correctly · Compliance reporting from DAST results