Website Penetration Testing Basics: OWASP Top 10 Vulnerability Guide
OWASP Top 10 is the most authoritative vulnerability classification standard for web application security.
1. OWASP Top 10 (2026 Edition)
A01: Broken Access Control
Attackers can access unauthorized functions or data.
Common scenarios: Modifying URL IDs to access other users' data, unauthorized deletion, accessing admin pages without login.
Fix: Check user permissions on every request, use middleware for unified auth.
A02: Cryptographic Failures
Sensitive data not properly encrypted.
Common issues: HTTP instead of HTTPS, MD5/SHA1 for passwords, unencrypted credit card numbers.
Fix: Use password_hash() with bcrypt.
A03: Injection
SQL, command, and LDAP injections.
Fix: Use prepared statements (PDO), never concatenate SQL strings.
A04: Insecure Design
Architecture-level security flaws.
Fix: Server-side price validation, rate limiting on APIs.
A05: Security Misconfiguration
Default configs, unpatched vulnerabilities, directory listing.
Checklist: Delete default accounts, disable directory listing, remove debug info, update all components.
A06: Vulnerable Components
Using third-party components with known vulnerabilities.
npm audit --production
composer audit
pip list --outdated
A07: Identification and Authentication Failures
Weak passwords, no login limits, session fixation.
Fix: Password strength requirements, login attempt limits.
A08: Software and Data Integrity Failures
CI/CD pipeline security issues.
Fix: Verify library signatures, use lock files, code signing.
A09: Security Logging and Monitoring Failures
Cannot detect and respond to security events in time.
Requirements: Log all login attempts, permission changes, sensitive data operations.
A10: Server-Side Request Forgery (SSRF)
Attackers use the server to make internal network requests.
Fix: URL whitelist, disable HTTP redirects.
2. Penetration Testing Tools
| Tool | Purpose | Difficulty |
|---|---|---|
| OWASP ZAP | Automated scanning | Low |
| Burp Suite | Manual testing | Medium |
| SQLMap | SQL injection automation | Medium |
| Nikto | Web server scanning | Low |
| Nmap | Port and service discovery | Medium |
| Metasploit | Exploitation framework | High |
3. Fix Priorities
High (fix immediately): SQL injection, broken access control, stored XSS, data leaks
Medium (fix within week): Reflected XSS, CSRF, security misconfiguration
Low (fix within month): Missing security headers, incomplete logging
4. Organizing a Penetration Test
Before reading a report, think about how to organize the test itself. A standard web penetration test usually has five phases:
- Scope definition: clarify which domains, endpoints, and account levels are in scope, and obtain written authorization. Scanning without authorization is intrusion, not testing.
- Reconnaissance: map the attack surface via subdomain enumeration, fingerprinting, and directory brute-forcing. Common tools:
subfinder,httpx,ffuf. - Automated scanning: use OWASP ZAP or Burp as a baseline to cover common injection, XSS, and misconfigurations.
- Manual verification: confirm each finding by hand to filter false positives, and test core flows (login, payment, upload) in depth.
- Report and retest: deliver a risk-ranked report, then retest after fixes.
# Common recon commands
subfinder -d example.com -silent | httpx -silent -status-code
ffuf -w /usr/share/wordlists/dirb/common.txt -u https://example.com/FUZZ
A workable test plan should include at least these elements:
| Item | Description |
|---|---|
| Targets | Domain, subdomain, and endpoint list |
| Authorization | Permitted actions and time window |
| Account levels | Anonymous / regular user / admin |
| Exclusions | Endpoints not to test (e.g., direct payment gateway links) |
| Deliverables | Report format, retest cadence |
A Small E-Commerce Site Test Case
Take a small e-commerce site doing $5M in annual sales running its first penetration test. Automated scanning flags 12 medium-to-high findings; manual retesting confirms five real ones: a stored XSS in product reviews (HTML is not filtered), an IDOR endpoint at /api/order/ (order ownership is not checked), an open directory listing, a weak admin password, and a missing CSP header. Priorities are clear: fix the IDOR and stored XSS the same day, tighten the password policy, and handle the rest within two weeks. The key point: the number of findings is not what matters — knowing which are real and which to fix first is.
5. Summary
Penetration testing is a continuous process integrated into the development cycle. Use OWASP ZAP for regular scanning plus manual testing for key functions.