Skip to content

OWASP Web Security Testing Guide (WSTG) Checklist

This checklist is based on the OWASP Web Security Testing Guide and provides a comprehensive framework for testing web application security. Each test includes objectives to guide your testing approach.

Information Gathering

  • WSTG-INFO-01 - Conduct Search Engine Discovery Reconnaissance for Information Leakage

  • Identify what sensitive design and configuration information of the application, system, or organization is exposed directly (on the organization's site) or indirectly (via third-party services).

  • WSTG-INFO-02 - Fingerprint Web Server

  • Determine the version and type of a running web server to enable further discovery of any known vulnerabilities.

  • WSTG-INFO-03 - Review Webserver Metafiles for Information Leakage

  • Identify hidden or obfuscated paths and functionality through the analysis of metadata files.

  • Extract and map other information that could lead to a better understanding of the systems at hand.

  • WSTG-INFO-04 - Enumerate Applications on Webserver

  • Enumerate the applications within the scope that exist on a web server.

  • WSTG-INFO-05 - Review Web Page Content for Information Leakage

  • Review web page comments, metadata, and redirect bodies to find any information leakage.

  • Gather JavaScript files and review the JS code to better understand the application and to find any information leakage.
  • Identify if source map files or other frontend debug files exist.

  • WSTG-INFO-06 - Identify Application Entry Points

  • Identify possible entry and injection points through request and response analysis.

  • WSTG-INFO-07 - Map Execution Paths Through Application

  • Map the target application and understand the principal workflows.

  • WSTG-INFO-08 - Fingerprint Web Application Framework

  • Fingerprint the components used by the web applications.

  • WSTG-INFO-09 - Fingerprint Web Application

  • WSTG-INFO-10 - Map Application Architecture

  • Understand the architecture of the application and the technologies in use.

Configuration and Deployment Management Testing

  • WSTG-CONF-01 - Test Network Infrastructure Configuration

  • Review the applications' configurations set across the network and validate that they are not vulnerable.

  • Validate that used frameworks and systems are secure and not susceptible to known vulnerabilities due to unmaintained software or default settings and credentials.

  • WSTG-CONF-02 - Test Application Platform Configuration

  • Ensure that default and known files have been removed.

  • Validate that no debugging code or extensions are left in the production environments.
  • Review the logging mechanisms set in place for the application.

  • WSTG-CONF-03 - Test File Extensions Handling for Sensitive Information

  • Brute force sensitive file extensions that might contain raw data such as scripts, credentials, etc.

  • Validate that no system framework bypasses exist for the rules that have been set.

  • WSTG-CONF-04 - Review Old Backup and Unreferenced Files for Sensitive Information

  • Find and analyse unreferenced files that might contain sensitive information.

  • WSTG-CONF-05 - Enumerate Infrastructure and Application Admin Interfaces

  • Identify hidden administrator interfaces and functionality.

  • WSTG-CONF-06 - Test HTTP Methods

  • Enumerate supported HTTP methods.

  • Test for access control bypass.
  • Test HTTP method overriding techniques.

  • WSTG-CONF-07 - Test HTTP Strict Transport Security

  • Review the HSTS header and its validity.

  • WSTG-CONF-08 - Test RIA Cross Domain Policy

  • WSTG-CONF-09 - Test File Permission

  • Review and identify any rogue file permissions.

  • WSTG-CONF-10 - Test for Subdomain Takeover

  • Enumerate all possible domains (previous and current).

  • Identify any forgotten or misconfigured domains.

  • WSTG-CONF-11 - Test Cloud Storage

  • Assess that the access control configuration for the storage services is properly in place.

  • WSTG-CONF-12 - Testing for Content Security Policy

  • Review the Content-Security-Policy header or meta element to identify misconfigurations.

  • WSTG-CONF-13 - Test Path Confusion

  • Make sure application paths are configured correctly.

  • WSTG-CONF-14 - Test Other HTTP Security Header Misconfigurations

  • Identify improperly configured security headers.
  • Assess the impact of misconfigured security headers.
  • Validate the correct implementation of required security headers.

Identity Management Testing

  • WSTG-IDNT-01 - Test Role Definitions

  • Identify and document roles used by the application.

  • Attempt to switch, change, or access another role.
  • Review the granularity of the roles and the needs behind the permissions given.

  • WSTG-IDNT-02 - Test User Registration Process

  • Verify that the identity requirements for user registration are aligned with business and security requirements.

  • Validate the registration process.

  • WSTG-IDNT-03 - Test Account Provisioning Process

  • Verify which accounts may provision other accounts and of what type.

  • WSTG-IDNT-04 - Testing for Account Enumeration and Guessable User Account

  • Review processes that pertain to user identification (e.g. registration, login, etc.).

  • Enumerate users where possible through response analysis.

  • WSTG-IDNT-05 - Testing for Weak or Unenforced Username Policy

  • Determine whether a consistent account name structure renders the application vulnerable to account enumeration.
  • Determine whether the application's error messages permit account enumeration.

Authentication Testing

  • WSTG-ATHN-01 - Testing for Credentials Transported over an Encrypted Channel

  • WSTG-ATHN-02 - Testing for Default Credentials

  • Determine whether the application has any user accounts with default passwords.

  • Review whether new user accounts are created with weak or predictable passwords.

  • WSTG-ATHN-03 - Testing for Weak Lock Out Mechanism

  • Evaluate the account lockout mechanism's ability to mitigate brute force password guessing.

  • Evaluate the unlock mechanism's resistance to unauthorized account unlocking.

  • WSTG-ATHN-04 - Testing for Bypassing Authentication Schema

  • Ensure that authentication is applied across all services that require it.

  • WSTG-ATHN-05 - Testing for Vulnerable Remember Password

  • Validate that the generated session is managed securely and do not put the user's credentials in danger.

  • WSTG-ATHN-06 - Testing for Browser Cache Weaknesses

  • Review if the application stores sensitive information on the client-side.

  • Review if access can occur without authorization.

  • WSTG-ATHN-07 - Testing for Weak Authentication Methods

  • Determine the resistance of the application against brute force password guessing using available password dictionaries by evaluating the length, complexity, reuse, and aging requirements of passwords.

  • WSTG-ATHN-08 - Testing for Weak Security Question Answer

  • Determine the complexity and how straight-forward the questions are.

  • Assess possible user answers and brute force capabilities.

  • WSTG-ATHN-09 - Testing for Weak Password Change or Reset Functionalities

  • Determine whether the password change and reset functionality allows accounts to be compromised.

  • WSTG-ATHN-10 - Testing for Weaker Authentication in Alternative Channel

  • Identify alternative authentication channels.

  • Assess the security measures used and if any bypasses exists on the alternative channels.

  • WSTG-ATHN-11 - Testing Multi-Factor Authentication (MFA)

  • Identify the type of MFA used by the application.
  • Determine whether the MFA implementation is robust and secure.
  • Attempt to bypass the MFA.

Authorization Testing

  • WSTG-ATHZ-01 - Testing Directory Traversal File Include

  • Identify injection points that pertain to path traversal.

  • Assess bypassing techniques and identify the extent of path traversal.

  • WSTG-ATHZ-02 - Testing for Bypassing Authorization Schema

  • Assess if unauthenticated, horizontal, or vertical access is possible.

  • WSTG-ATHZ-03 - Testing for Privilege Escalation

  • Identify injection points related to privilege manipulation.

  • Fuzz or otherwise attempt to bypass security measures.

  • WSTG-ATHZ-04 - Testing for Insecure Direct Object References

  • Identify points where object references may occur.

  • Assess the access control measures and if they're vulnerable to IDOR.

  • WSTG-ATHZ-05 - Testing for OAuth Weaknesses

  • Determine if OAuth2 implementation is vulnerable or using a deprecated or custom implementation.

Session Management Testing

  • WSTG-SESS-01 - Testing for Session Management Schema

  • Gather session tokens, for the same user and for different users where possible.

  • Analyze and ensure that enough randomness exists to stop session forging attacks.
  • Modify cookies that are not signed and contain information that can be manipulated.

  • WSTG-SESS-02 - Testing for Cookies Attributes

  • Ensure that the proper security configuration is set for cookies.

  • WSTG-SESS-03 - Testing for Session Fixation

  • Analyze the authentication mechanism and its flow.

  • Force cookies and assess the impact.

  • WSTG-SESS-04 - Testing for Exposed Session Variables

  • Ensure that proper encryption is implemented.

  • Review the caching configuration.
  • Assess the channel and methods' security.

  • WSTG-SESS-05 - Testing for Cross Site Request Forgery

  • Determine whether it is possible to initiate requests on a user's behalf that are not initiated by the user.

  • WSTG-SESS-06 - Testing for Logout Functionality

  • Assess the logout UI.

  • Analyze the session timeout and if the session is properly killed after logout.

  • WSTG-SESS-07 - Testing Session Timeout

  • Validate that a hard session timeout exists.

  • WSTG-SESS-08 - Testing for Session Puzzling

  • Identify all session variables.

  • Break the logical flow of session generation.

  • WSTG-SESS-09 - Testing for Session Hijacking

  • Identify vulnerable session cookies.

  • Hijack vulnerable cookies and assess the risk level.

  • WSTG-SESS-10 - Testing JSON Web Tokens

  • Determine whether the JWTs expose sensitive information.

  • Determine whether the JWTs can be tampered with or modified.

  • WSTG-SESS-11 - Testing for Concurrent Sessions

  • Evaluate the application's session management by assessing the handling of multiple active sessions for a single user account.

Input Validation Testing

  • WSTG-INPV-01 - Testing for Reflected Cross Site Scripting

  • Identify variables that are reflected in responses.

  • Assess the input they accept and the encoding that gets applied on return (if any).

  • WSTG-INPV-02 - Testing for Stored Cross Site Scripting

  • Identify stored input that is reflected on the client-side.

  • Assess the input they accept and the encoding that gets applied on return (if any).

  • WSTG-INPV-03 - Testing for HTTP Verb Tampering

  • WSTG-INPV-04 - Testing for HTTP Parameter Pollution

  • Identify the backend and the parsing method used.

  • Assess injection points and try bypassing input filters using HPP.

  • WSTG-INPV-05 - Testing for SQL Injection

  • Identify SQL injection points.

  • Assess the severity of the injection and the level of access that can be achieved through it.

  • WSTG-INPV-06 - Testing for LDAP Injection

  • Identify LDAP injection points.

  • Assess the severity of the injection.

  • WSTG-INPV-07 - Testing for XML Injection

  • Identify XML injection points.

  • Assess the types of exploits that can be attained and their severities.

  • WSTG-INPV-08 - Testing for SSI Injection

  • Identify SSI injection points.

  • Assess the severity of the injection.

  • WSTG-INPV-09 - Testing for XPath Injection

  • Identify XPATH injection points.

  • WSTG-INPV-10 - Testing for IMAP SMTP Injection

  • Identify IMAP/SMTP injection points.

  • Understand the data flow and deployment structure of the system.
  • Assess the injection impacts.

  • WSTG-INPV-11 - Testing for Code Injection

  • Identify injection points where you can inject code into the application.

  • Assess the injection severity.

  • WSTG-INPV-12 - Testing for Command Injection

  • Identify and assess the command injection points.

  • WSTG-INPV-13 - Testing for Buffer Overflow

  • WSTG-INPV-13 - Testing for Format String Injection

  • Assess whether injecting format string conversion specifiers into user-controlled fields causes undesired behavior from the application.

  • WSTG-INPV-14 - Testing for Incubated Vulnerability

  • Identify injections that are stored and require a recall step to the stored injection.

  • Understand how a recall step could occur.
  • Set listeners or activate the recall step if possible.

  • WSTG-INPV-15 - Testing for HTTP Splitting Smuggling

  • Assess if the application is vulnerable to splitting, identifying what possible attacks are achievable.

  • Assess if the chain of communication is vulnerable to smuggling, identifying what possible attacks are achievable.

  • WSTG-INPV-16 - Testing for HTTP Incoming Requests

  • Monitor all incoming and outgoing HTTP requests to the Web Server to inspect any suspicious requests.

  • Monitor HTTP traffic without changes of end user Browser proxy or client-side application.

  • WSTG-INPV-17 - Testing for Host Header Injection

  • Assess if the Host header is being parsed dynamically in the application.

  • Bypass security controls that rely on the header.

  • WSTG-INPV-18 - Testing for Server-side Template Injection

  • Detect template injection vulnerability points.

  • Identify the templating engine.
  • Build the exploit.

  • WSTG-INPV-19 - Testing for Server-Side Request Forgery

  • Identify SSRF injection points.

  • Test if the injection points are exploitable.
  • Asses the severity of the vulnerability.

  • WSTG-INPV-20 - Testing for Mass Assignment

  • Identify requests that modify objects
  • Assess if it is possible to modify fields never intended to be modified from outside

Testing for Error Handling

  • WSTG-ERRH-01 - Testing for Improper Error Handling

  • Identify existing error output.

  • Analyze the different output returned.

  • WSTG-ERRH-02 - Testing for Stack Traces

Testing for Weak Cryptography

  • WSTG-CRYP-01 - Testing for Weak Transport Layer Security

  • Validate the service configuration.

  • Review the digital certificate's cryptographic strength and validity.
  • Ensure that the TLS security is not bypassable and is properly implemented across the application.

  • WSTG-CRYP-02 - Testing for Padding Oracle

  • Identify encrypted messages that rely on padding.

  • Attempt to break the padding of the encrypted messages and analyze the returned error messages for further analysis.

  • WSTG-CRYP-03 - Testing for Sensitive Information Sent via Unencrypted Channels

  • Identify sensitive information transmitted through the various channels.

  • Assess the privacy and security of the channels used.

  • WSTG-CRYP-04 - Testing for Weak Encryption

  • Provide a guideline for the identification weak encryption or hashing uses and implementations.

Business Logic Testing

  • WSTG-BUSL-01 - Test Business Logic Data Validation

  • Identify data injection points.

  • Validate that all checks are occurring on the backend and can't be bypassed.
  • Attempt to break the format of the expected data and analyze how the application is handling it.

  • WSTG-BUSL-02 - Test Ability to Forge Requests

  • Review the project documentation looking for guessable, predictable, or hidden functionality of fields.

  • Insert logically valid data in order to bypass normal business logic workflow.

  • WSTG-BUSL-03 - Test Integrity Checks

  • Review the project documentation for components of the system that move, store, or handle data.

  • Determine what type of data is logically acceptable by the component and what types the system should guard against.
  • Determine who should be allowed to modify or read that data in each component.
  • Attempt to insert, update, or delete data values used by each component that should not be allowed per the business logic workflow.

  • WSTG-BUSL-04 - Test for Process Timing

  • Review the project documentation for system functionality that may be impacted by time.

  • Develop and execute misuse cases.

  • WSTG-BUSL-05 - Test Number of Times a Function Can Be Used Limits

  • Identify functions that must set limits to the times they can be called.

  • Assess if there is a logical limit set on the functions and if it is properly validated.

  • WSTG-BUSL-06 - Testing for the Circumvention of Work Flows

  • Review the project documentation for methods to skip or go through steps in the application process in a different order from the intended business logic flow.

  • Develop a misuse case and try to circumvent every logic flow identified.

  • WSTG-BUSL-07 - Test Defenses Against Application Misuse

  • Generate notes from all tests conducted against the system.

  • Review which tests had a different functionality based on aggressive input.
  • Understand the defenses in place and verify if they are enough to protect the system against bypassing techniques.

  • WSTG-BUSL-08 - Test Upload of Unexpected File Types

  • Review the project documentation for file types that are rejected by the system.

  • Verify that the unwelcomed file types are rejected and handled safely.
  • Verify that file batch uploads are secure and do not allow any bypass against the set security measures.

  • WSTG-BUSL-09 - Test Upload of Malicious Files

  • Identify the file upload functionality.

  • Review the project documentation to identify what file types are considered acceptable, and what types would be considered dangerous or malicious.
  • If documentation is not available then consider what would be appropriate based on the purpose of the application.
  • Determine how the uploaded files are processed.
  • Obtain or create a set of malicious files for testing.
  • Try to upload the malicious files to the application and determine whether it is accepted and processed.

  • WSTG-BUSL-10 - Test Payment Functionality

  • Determine whether the business logic for the e-commerce functionality is robust.
  • Understand how the payment functionality works.
  • Determine whether the payment functionality is secure.

Client-side Testing

  • WSTG-CLNT-01 - Testing for DOM-Based Cross Site Scripting

  • Identify DOM sinks.

  • Build payloads that pertain to every sink type.

  • WSTG-CLNT-02 - Testing for JavaScript Execution

  • Identify sinks and possible JavaScript injection points.

  • WSTG-CLNT-03 - Testing for HTML Injection

  • Identify HTML injection points and assess the severity of the injected content.

  • WSTG-CLNT-04 - Testing for Client-side URL Redirect

  • Identify injection points that handle URLs or paths.

  • Assess the locations that the system could redirect to.

  • WSTG-CLNT-05 - Testing for CSS Injection

  • Identify CSS injection points.

  • Assess the impact of the injection.

  • WSTG-CLNT-06 - Testing for Client-side Resource Manipulation

  • Identify sinks with weak input validation.

  • Assess the impact of the resource manipulation.

  • WSTG-CLNT-07 - Testing Cross Origin Resource Sharing

  • Identify endpoints that implement CORS.

  • Ensure that the CORS configuration is secure or harmless.

  • WSTG-CLNT-08 - Testing for Cross Site Flashing

  • Decompile and analyze the application's code.

  • Assess sinks inputs and unsafe method usages.

  • WSTG-CLNT-09 - Testing for Clickjacking

  • Assess application vulnerability to clickjacking attacks.

  • WSTG-CLNT-10 - Testing WebSockets

  • Identify the usage of WebSockets.

  • Assess its implementation by using the same tests on normal HTTP channels.

  • WSTG-CLNT-11 - Testing Web Messaging

  • Assess the security of the message's origin.

  • Validate that it's using safe methods and validating its input.

  • WSTG-CLNT-12 - Testing Browser Storage

  • Determine whether the website is storing sensitive data in client-side storage.

  • The code handling of the storage objects should be examined for possibilities of injection attacks, such as utilizing unvalidated input or vulnerable libraries.

  • WSTG-CLNT-13 - Testing for Cross Site Script Inclusion

  • Locate sensitive data across the system.

  • Assess the leakage of sensitive data through various techniques.

  • WSTG-CLNT-14 - Testing for Reverse Tabnabbing

API Testing

  • WSTG-APIT-01 - API Reconnaissance

  • Find all API endpoints supported by the backend server code, documented or undocumented.

  • Find all parameters for each endpoint supported by the backend server, documented or undocumented.
  • Discover interesting data related to APIs in HTML and JavaScript sent to clients.

  • WSTG-APIT-02 - API Broken Object Level Authorization

  • The objective of this test is to identify whether the API enforces proper object-level authorization checks, ensuring that users can only access and manipulate objects they are authorized to interact with.

  • WSTG-APIT-99 - Testing GraphQL

  • Assess that a secure and production-ready configuration is deployed.
  • Validate all input fields against generic attacks.
  • Ensure that proper access controls are applied.