0% found this document useful (0 votes)
51 views27 pages

Web Security Testing Guide

Uploaded by

yekise9346
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as XLSX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
51 views27 pages

Web Security Testing Guide

Uploaded by

yekise9346
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as XLSX, PDF, TXT or read online on Scribd
You are on page 1/ 27

OWASP: Testing Guide Checklist

Information Gathering Test Name

Conduct Search Engine Discovery Reconnaissance for


WSTG-INFO-01
Information Leakage

WSTG-INFO-02 Fingerprint Web Server

WSTG-INFO-03 Review Webserver Metafiles for Information Leakage

WSTG-INFO-04 Enumerate Applications on Webserver

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

WSTG-INFO-06 Identify Application Entry Points

WSTG-INFO-07 Map Execution Paths Through Application

WSTG-INFO-08 Fingerprint Web Application Framework


WSTG-INFO-09 Fingerprint Web Application

WSTG-INFO-10 Map Application Architecture

Configuration and
Deployment Management Test Name
Testing
WSTG-CONF-01 Test Network Infrastructure Configuration

WSTG-CONF-02 Test Application Platform Configuration

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

Review Old Backup and Unreferenced Files for


WSTG-CONF-04
Sensitive Information

Enumerate Infrastructure and Application Admin


WSTG-CONF-05
Interfaces

WSTG-CONF-06 Test HTTP Methods

WSTG-CONF-07 Test HTTP Strict Transport Security


WSTG-CONF-08 Test RIA Cross Domain Policy
WSTG-CONF-09 Test File Permission

WSTG-CONF-10 Test for Subdomain Takeover

WSTG-CONF-11 Test Cloud Storage

WSTG-CONF-12 Testing for Content Security Policy

WSTG-CONF-13 Test Path Confusion

Identity Management Testing Test Name

WSTG-IDNT-01 Test Role Definitions


WSTG-IDNT-02 Test User Registration Process

WSTG-IDNT-03 Test Account Provisioning Process

Testing for Account Enumeration and Guessable User


WSTG-IDNT-04
Account

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

Authentication Testing Test Name

Testing for Credentials Transported over an Encrypted


WSTG-ATHN-01
Channel

WSTG-ATHN-02 Testing for Default Credentials

WSTG-ATHN-03 Testing for Weak Lock Out Mechanism

WSTG-ATHN-04 Testing for Bypassing Authentication Schema

WSTG-ATHN-05 Testing for Vulnerable Remember Password

WSTG-ATHN-06 Testing for Browser Cache Weaknesses

WSTG-ATHN-07 Testing for Weak Authentication Methods

WSTG-ATHN-08 Testing for Weak Security Question Answer


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

Testing for Weaker Authentication in Alternative


WSTG-ATHN-10
Channel

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

Authorization Testing Test Name

WSTG-ATHZ-01 Testing Directory Traversal File Include

WSTG-ATHZ-02 Testing for Bypassing Authorization Schema

WSTG-ATHZ-03 Testing for Privilege Escalation

WSTG-ATHZ-04 Testing for Insecure Direct Object References

WSTG-ATHZ-05 Testing for OAuth Weaknesses

Session Management Testing Test Name

WSTG-SESS-01 Testing for Session Management Schema

WSTG-SESS-02 Testing for Cookies Attributes

WSTG-SESS-03 Testing for Session Fixation


WSTG-SESS-04 Testing for Exposed Session Variables

WSTG-SESS-05 Testing for Cross Site Request Forgery

WSTG-SESS-06 Testing for Logout Functionality

WSTG-SESS-07 Testing Session Timeout

WSTG-SESS-08 Testing for Session Puzzling

WSTG-SESS-09 Testing for Session Hijacking

WSTG-SESS-10 Testing JSON Web Tokens

WSTG-SESS-11 Testing for Concurrent Sessions

Input Validation Testing Test Name

WSTG-INPV-01 Testing for Reflected Cross Site Scripting

WSTG-INPV-02 Testing for Stored Cross Site Scripting

WSTG-INPV-03 Testing for HTTP Verb Tampering

WSTG-INPV-04 Testing for HTTP Parameter Pollution

WSTG-INPV-05 Testing for SQL Injection

WSTG-INPV-06 Testing for LDAP Injection


WSTG-INPV-07 Testing for XML Injection

WSTG-INPV-08 Testing for SSI Injection

WSTG-INPV-09 Testing for XPath Injection

WSTG-INPV-10 Testing for IMAP SMTP Injection

WSTG-INPV-11 Testing for Code Injection

WSTG-INPV-12 Testing for Command Injection


WSTG-INPV-13 Testing for Buffer Overflow

WSTG-INPV-13 Testing for Format String Injection

WSTG-INPV-14 Testing for Incubated Vulnerability

WSTG-INPV-15 Testing for HTTP Splitting Smuggling

WSTG-INPV-16 Testing for HTTP Incoming Requests

WSTG-INPV-17 Testing for Host Header Injection

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

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


WSTG-INPV-20 Testing for Mass Assignment

Testing for Error Handling Test Name

WSTG-ERRH-01 Testing for Improper Error Handling

WSTG-ERRH-02 Testing for Stack Traces

Testing for Weak


Test Name
Cryptography

WSTG-CRYP-01 Testing for Weak Transport Layer Security

WSTG-CRYP-02 Testing for Padding Oracle

Testing for Sensitive Information Sent via Unencrypted


WSTG-CRYP-03
Channels

WSTG-CRYP-04 Testing for Weak Encryption

Business Logic Testing Test Name

WSTG-BUSL-01 Test Business Logic Data Validation

WSTG-BUSL-02 Test Ability to Forge Requests


WSTG-BUSL-03 Test Integrity Checks

WSTG-BUSL-04 Test for Process Timing

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

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

WSTG-BUSL-07 Test Defenses Against Application Misuse

WSTG-BUSL-08 Test Upload of Unexpected File Types


WSTG-BUSL-09 Test Upload of Malicious Files

WSTG-BUSL-10 Test Payment Functionality

Client-side Testing Test Name

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

WSTG-CLNT-02 Testing for JavaScript Execution

WSTG-CLNT-03 Testing for HTML Injection

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

WSTG-CLNT-05 Testing for CSS Injection

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

WSTG-CLNT-07 Testing Cross Origin Resource Sharing

WSTG-CLNT-08 Testing for Cross Site Flashing

WSTG-CLNT-09 Testing for Clickjacking

WSTG-CLNT-10 Testing WebSockets

WSTG-CLNT-11 Testing Web Messaging


WSTG-CLNT-12 Testing Browser Storage

WSTG-CLNT-13 Testing for Cross Site Script Inclusion

WSTG-CLNT-14 Testing for Reverse Tabnabbing

API Testing Test Name

WSTG-APIT-01 API Reconnaissance

WSTG-APIT-99 Testing GraphQL


Objectives Status Notes

- Identify what sensitive design and configuration information of the


application, system, or organization is exposed directly (on the Not Started
organization's site) or indirectly (via third-party services).

- Determine the version and type of a running web server to enable


Not Started
further discovery of any known vulnerabilities.

- Identify hidden or obfuscated paths and functionality through the


analysis of metadata files.
Not Started
- Extract and map other information that could lead to a better
understanding of the systems at hand.

- Enumerate the applications within the scope that exist on a web


Not Started
server.

- Review web page comments, metadata, and redirect bodies to


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

- Identify possible entry and injection points through request and


Not Started
response analysis.

- Map the target application and understand the principal


Not Started
workflows.
- Fingerprint the components used by the web applications. Not Started
N/A Not Started
- Understand the architecture of the application and the
Not Started
technologies in use.

Objectives Status Notes


- 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 Not Started
susceptible to known vulnerabilities due to unmaintained software
or default settings and credentials.

- Ensure that default and known files have been removed.


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

- Brute force sensitive file extensions that might contain raw data
such as scripts, credentials, etc.
Not Started
- Validate that no system framework bypasses exist for the rules
that have been set

- Find and analyse unreferenced files that might contain sensitive


Not Started
information.

- Identify hidden administrator interfaces and functionality. Not Started

- Enumerate supported HTTP methods.


- Test for access control bypass. Not Started
- Test HTTP method overriding techniques.

- Review the HSTS header and its validity. Not Started


N/A Not Started
- Review and identify any rogue file permissions. Not Started
- Enumerate all possible domains (previous and current).
Not Started
- Identify any forgotten or misconfigured domains.

- Assess that the access control configuration for the storage


Not Started
services is properly in place.

- Review the Content-Security-Policy header or meta element to


Not Started
identify misconfigurations.
- Make sure application paths are configured correctly. Not Started

Objectives Status Notes

- Identify and document roles used by the application.


- Attempt to switch, change, or access another role.
Not Started
- Review the granularity of the roles and the needs behind the
permissions given.
- Verify that the identity requirements for user registration are
aligned with business and security requirements. Not Started
- Validate the registration process.

- Verify which accounts may provision other accounts and of what


Not Started
type.

- Review processes that pertain to user identification (*e.g.*


registration, login, etc.). Not Started
- Enumerate users where possible through response analysis.

- Determine whether a consistent account name structure renders


the application vulnerable to account enumeration.
Not Started
- Determine whether the application's error messages permit
account enumeration.

Objectives Status Notes

N/A Not Started

- Determine whether the application has any user accounts with


default passwords.
Not Started
- Review whether new user accounts are created with weak or
predictable passwords.

- Evaluate the account lockout mechanism's ability to mitigate brute


force password guessing.
Not Started
- Evaluate the unlock mechanism's resistance to unauthorized
account unlocking.

- Ensure that authentication is applied across all services that


Not Started
require it.

- Validate that the generated session is managed securely and do


Not Started
not put the user's credentials in danger.

- Review if the application stores sensitive information on the client-


side. Not Started
- Review if access can occur without authorization.

- Determine the resistance of the application against brute force


password guessing using available password dictionaries by
Not Started
evaluating the length, complexity, reuse, and aging requirements of
passwords.

- Determine the complexity and how straight-forward the questions


are. Not Started
- Assess possible user answers and brute force capabilities.
- Determine whether the password change and reset functionality
Not Started
allows accounts to be compromised.

- Identify alternative authentication channels.


- Assess the security measures used and if any bypasses exists on Not Started
the alternative channels.

- Identify the type of MFA used by the application.


- Determine whether the MFA implementation is robust and secure. Not Started
- Attempt to bypass the MFA.

Objectives Status Notes

- Identify injection points that pertain to path traversal.


- Assess bypassing techniques and identify the extent of path Not Started
traversal.

- Assess if horizontal or vertical access is possible. Not Started

- Identify injection points related to privilege manipulation.


Not Started
- Fuzz or otherwise attempt to bypass security measures.

- Identify points where object references may occur.


- Assess the access control measures and if they're vulnerable to Not Started
IDOR.

- Determine if OAuth2 implementation is vulnerable or using a


Not Started
deprecated or custom implementation.

Objectives Status Notes

- Gather session tokens, for the same user and for different users
where possible.
- Analyze and ensure that enough randomness exists to stop
Not Started
session forging attacks.
- Modify cookies that are not signed and contain information that
can be manipulated.

- Ensure that the proper security configuration is set for cookies. Not Started

- Analyze the authentication mechanism and its flow.


Not Started
- Force cookies and assess the impact.
- Ensure that proper encryption is implemented.
- Review the caching configuration. Not Started
- Assess the channel and methods' security.

- Determine whether it is possible to initiate requests on a user's


Not Started
behalf that are not initiated by the user.

- Assess the logout UI.


- Analyze the session timeout and if the session is properly killed Not Started
after logout.

- Validate that a hard session timeout exists. Not Started


- Identify all session variables.
Not Started
- Break the logical flow of session generation.

- Identify vulnerable session cookies.


Not Started
- Hijack vulnerable cookies and assess the risk level.

- Determine whether the JWTs expose sensitive information.


Not Started
- Determine whether the JWTs can be tampered with or modified.

- Evaluate the application's session management by assessing the


Not Started
handling of multiple active sessions for a single user account.

Objectives Status Notes

- Identify variables that are reflected in responses.


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

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


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

N/A Not Started

- Identify the backend and the parsing method used.


Not Started
- Assess injection points and try bypassing input filters using HPP.

- Identify SQL injection points.


- Assess the severity of the injection and the level of access that Not Started
can be achieved through it.

- Identify LDAP injection points.


Not Started
- Assess the severity of the injection.
- Identify XML injection points.
- Assess the types of exploits that can be attained and their Not Started
severities.

- Identify SSI injection points.


Not Started
- Assess the severity of the injection.
- Identify XPATH injection points. Not Started

- Identify IMAP/SMTP injection points.


- Understand the data flow and deployment structure of the system. Not Started
- Assess the injection impacts.

- Identify injection points where you can inject code into the
application. Not Started
- Assess the injection severity.

- Identify and assess the command injection points. Not Started


N/A Not Started

- Assess whether injecting format string conversion specifiers into


user-controlled fields causes undesired behavior from the Not Started
application.

- Identify injections that are stored and require a recall step to the
stored injection.
Not Started
- Understand how a recall step could occur.
- Set listeners or activate the recall step if possible.

- Assess if the application is vulnerable to splitting, identifying what


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

- Monitor all incoming and outgoing HTTP requests to the Web


Server to inspect any suspicious requests.
Not Started
- Monitor HTTP traffic without changes of end user Browser proxy
or client-side application.

- Assess if the Host header is being parsed dynamically in the


application. Not Started
- Bypass security controls that rely on the header.

- Detect template injection vulnerability points.


- Identify the templating engine. Not Started
- Build the exploit.

- Identify SSRF injection points.


- Test if the injection points are exploitable. Not Started
- Asses the severity of the vulnerability.
- Identify requests that modify objects
- Assess if it is possible to modify fields never intended to be Not Started
modified from outside

Objectives Status Notes

- Identify existing error output.


Not Started
- Analyze the different output returned.
N/A Not Started

Objectives Status Notes

- Validate the service configuration.


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

- Identify encrypted messages that rely on padding.


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

- Identify sensitive information transmitted through the various


channels. Not Started
- Assess the privacy and security of the channels used.

- Provide a guideline for the identification weak encryption or


Not Started
hashing uses and implementations.

Objectives Status Notes

- Identify data injection points.


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

- Review the project documentation looking for guessable,


predictable, or hidden functionality of fields.
Not Started
- Insert logically valid data in order to bypass normal business logic
workflow.
- 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 Not Started
each component.
- Attempt to insert, update, or delete data values used by each
component that should not be allowed per the business logic
workflow.

- Review the project documentation for system functionality that


may be impacted by time. Not Started
- Develop and execute misuse cases.

- Identify functions that must set limits to the times they can be
called.
Not Started
- Assess if there is a logical limit set on the functions and if it is
properly validated.

- 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. Not Started
- Develop a misuse case and try to circumvent every logic flow
identified.

- Generate notes from all tests conducted against the system.


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

- Review the project documentation for file types that are rejected
by the system.
- Verify that the unwelcomed file types are rejected and handled
Not Started
safely.
- Verify that file batch uploads are secure and do not allow any
bypass against the set security measures.
- 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
Not Started
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.

- Determine whether the business logic for the e-commerce


functionality is robust.
Not Started
- Understand how the payment functionality works.
- Determine whether the payment functionality is secure.

Objectives Status Notes

- Identify DOM sinks.


Not Started
- Build payloads that pertain to every sink type.
- Identify sinks and possible JavaScript injection points. Not Started
- Identify HTML injection points and assess the severity of the
Not Started
injected content.

- Identify injection points that handle URLs or paths.


Not Started
- Assess the locations that the system could redirect to.

- Identify CSS injection points.


Not Started
- Assess the impact of the injection.

- Identify sinks with weak input validation.


Not Started
- Assess the impact of the resource manipulation.

- Identify endpoints that implement CORS.


Not Started
- Ensure that the CORS configuration is secure or harmless.

- Decompile and analyze the application's code.


Not Started
- Assess sinks inputs and unsafe method usages.
- Assess application vulnerability to clickjacking attacks. Not Started

- Identify the usage of WebSockets.


- Assess its implementation by using the same tests on normal Not Started
HTTP channels.

- Assess the security of the message's origin.


Not Started
- Validate that it's using safe methods and validating its input.
- Determine whether the website is storing sensitive data in client-
side storage.
- The code handling of the storage objects should be examined for Not Started
possibilities of injection attacks, such as utilizing unvalidated input
or vulnerable libraries.

- Locate sensitive data across the system.


Not Started
- Assess the leakage of sensitive data through various techniques.

N/A Not Started

Objectives Status Notes

- Find all API endpoints supported by the backend server code,


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

- Assess that a secure and production-ready configuration is


deployed.
Not Started
- Validate all input fields against generic attacks.
- Ensure that proper access controls are applied.
OWASP: Summary Findings

Nº OTG Vulnerability Name Affected Host/Path Impact

www.example.com/news.php
1 WSTG-INFO-02 Fingerprint Web Server High
(id,page)
Conduct Search Engine Discovery
www.example.com/news.php
2 WSTG-INFO-02 Reconnaissance for Information High
(id,page)
Leakage
Conduct Search Engine Discovery
www.example.com/news.php
3 WSTG-INFO-02 Reconnaissance for Information High
(id,page)
Leakage
Likelihood Risk Observation/Implication Recommendation Test Evidence

Moderate High xxx-1

Moderate High

Moderate High
OWASP: Risk Assessment Calculator

Likelihood factors

Threat Agent Factors

Skills required Some technical skills [3] 3


Motive Possible reward [4] 4
Opportunity Full access or expensive resources required [0] 0
Population Size System Administrators [2] 2

Vulnerability Factors

Easy of Discovery Practically impossible [1] 1


Ease of Exploit Easy [5] 5
Awareness Hidden [4] 4
Intrusion Detection Logged and reviewed [3] 3

Likelihood score: 2.75

Overall Risk Severity : Low

Impact
Likelihood Low ->Moderate<- High
->Low<- Note ->Low<- Moderate

Moderate Low Moderate High

High Moderate High Critical


Impact factors

Technical Impact Factors

Loss of confidentiality Minimal non-sensitive data disclosed [2] 2


Loss of Integrity All data totally corrupt [9] 9
Loss of Availability Minimal secondary services interrupted [1] 1
Loss of Accountability Not Applicable [0] 0

Business Impact Factors

Financial damage Minor effect on annual profit [3] 3


Reputation damage Loss of major accounts [4] 4
Non-Compliance Clear violation [5] 5
Privacy violation One individual [3] 3

Impact score: 3.375


Skills required Motive Opportunity
Select an option Select an option Select an option
Not Applicable [0] 0 Not Applicable [0] 0 Full access or expensive resources required [0] 0
No technical skills [1] 1 Low or no reward [1] 1 Special access or resources required [4] 4
Some technical skills [3] 3 Possible reward [4] 4 Some access or resources required [7] 7
Advanced computer user [5] 5 High reward [9] 9 No access or resources required [9] 9
Network and programming skills [6] 6
Security penetration skills [9] 9

Loss of confidentiality Loss of Integrity Loss of Availability


Select an option Select an option Select an option
Not Applicable [0] 0 Not Applicable [0] 0 Not Applicable [0] 0
Minimal non-sensitive data disclosed [2] 2 Minimal slightly corrupt data [1] 1 Minimal secondary services interrupted [1] 1
Extensive non-sensitive data disclosed [6] 6 Minimal seriously corrupt data [3] 3 Minimal primary services interrupted [5] 5
Extensive critical data disclosed [7] 7 Extensive slightly corrupt data [5] 5 Extensive primary services interrupted [7] 7
All data disclosed [9] 9 Extensive seriously corrupt data [7] 7 All services completely lost [9] 9
All data totally corrupt [9] 9
Population Size Easy of Discovery Ease of Exploit
Select an option Select an option Select an option
Not Applicable [0] 0 Not Applicable [0] 0 Not Applicable [0] 0
System Administrators [2] 2 Practically impossible [1] 1 Theoretical [1] 1
Intranet Users [4] 4 Difficult [3] 3 Difficult [3] 3
Partners [5] 5 Easy [7] 7 Easy [5] 5
Authenticated users [6] 6 Automated tools available [9] 9 Automated tools available [9] 9
Anonymous Internet users [9] 9

Loss of Accountability Financial damage Reputation damage


Select an option Select an option Select an option
Not Applicable [0] 0 Not Applicable [0] 0 Not Applicable [0] 0
Attack fully traceable to individual [1] 1 Damage costs less than to fix the issue [1] 1 Minimal damage [1] 1
Attack possibly traceable to individual [7] 7 Minor effect on annual profit [3] 3 Loss of major accounts [4] 4
Attack completely anonymous [9] 9 Significant effect on annual profit [7] 7 Loss of goodwill [5] 5
Backruptcy [9] 9 Brand damage [9] 9
Awareness Intrusion Detection
Select an option Select an option
Not Applicable [0] 0 Not Applicable [0] 0
Unknown [1] 1 Active detection in application [1] 1
Hidden [4] 4 Logged and reviewed [3] 3
Obvious [6] 6 Logged without review [8] 8
Public knowledge [9] 9 Not logged [9] 9

Non-Compliance Privacy violation


Select an option Select an option
Not Applicable [0] 0 Not Applicable [0] 0
Minor violation [2] 2 One individual [3] 3
Clear violation [5] 5 Hundreds of people [5] 5
High profile violation [7] 7 Thousands of people [7] 7
Millions of people [9] 9

You might also like