Every experienced pentester has a story about the test where something critical slipped through the cracks. Maybe they forgot to test one OAuth flow. Maybe they skipped checking for default credentials on an obscure management port. Maybe the scope document was vague and they wasted two days testing the wrong subnet.
A penetration testing checklist prevents those stories from becoming yours.
Whether you're a security professional running your 50th engagement or a company commissioning your first pentest, a structured checklist ensures consistent coverage, defensible methodology, and no missed vulnerabilities. This isn't a generic list of buzzwords — it's the actual checklist we use at VulnSkill across hundreds of engagements, refined over years of real-world testing.
We've organized it into seven phases: pre-engagement, web application testing, network testing, cloud testing, API testing, post-engagement, and a downloadable version you can hand directly to your team. Each item maps back to recognized standards — OWASP Testing Guide, PTES (Penetration Testing Execution Standard), and NIST SP 800-115 — so your testing holds up under audit scrutiny.
Why You Need a Penetration Testing Checklist
Let's address the obvious question first: if you're hiring experienced pentesters, why do they need a checklist?
For the same reason surgeons use checklists before every operation, and airline pilots use them before every flight. Complexity kills consistency. A modern web application might have dozens of authentication flows, hundreds of API endpoints, multiple user roles, third-party integrations, and cloud infrastructure spanning three providers. No one holds all of that in their head reliably.
Here's what a structured pentest checklist actually delivers:
- Consistent coverage: Every engagement hits the same baseline, regardless of which tester runs it. This matters enormously for compliance audits where you need to demonstrate repeatable methodology.
- Defensible methodology: When a client asks "did you test for X?" you can point to the checklist item, the test performed, and the result. This is especially critical for pentest reports that go to auditors or regulators.
- Efficient scoping: Checklists help both parties — the tester and the client — agree on exactly what's being tested before the engagement starts. This prevents scope creep and the uncomfortable "that wasn't in scope" conversation after a breach.
- Knowledge transfer: Junior testers ramp up faster. Senior testers don't forget edge cases when they're tired on day seven of a complex engagement.
- Measurable improvement: When you retest quarterly, a consistent checklist lets you track which vulnerability categories are improving and which keep coming back.
Bottom line: A penetration testing checklist isn't a crutch — it's a quality control mechanism. The best pentesters in the industry use them. The ones who don't are the ones who miss things.
Pre-Engagement Checklist
The pre-engagement phase is where most failed penetration tests actually fail. Poor scoping leads to misaligned expectations. Missing legal authorization leads to actual legal problems. Skipping environment details leads to testers accidentally bringing down production.
Every single item below should be completed and documented before anyone runs Nmap.
Scope Definition
- Define target systems explicitly — list every IP address, URL, domain, subdomain, and API endpoint in scope. Ambiguity here is your enemy.
- Identify out-of-scope systems — explicitly name what must NOT be tested. Third-party SaaS, shared hosting environments, and production databases during business hours are common exclusions.
- Agree on testing type — black box, grey box, or white box. Document what information the tester will receive (credentials, source code, architecture diagrams, API documentation).
- Define testing window — dates, times, and time zones. Some organizations restrict testing to off-hours to minimize business impact.
- Clarify environment — production, staging, or dedicated test environment? If production, define safe boundaries for exploitation attempts.
Legal Authorization
- Obtain signed authorization letter — also called a "permission to test" or "get out of jail free" letter. This should be signed by someone with actual authority (C-level, VP of Engineering, or equivalent).
- Execute NDA (mutual) — protects both parties. The tester sees sensitive data; the client trusts the tester with vulnerability information.
- Review third-party dependencies — if the target uses AWS, Azure, or GCP, verify you've met their penetration testing notification requirements. AWS removed the pre-approval requirement in 2019, but Azure and GCP still have policies.
- Confirm cyber insurance coverage — both the testing firm and the client should verify their insurance covers penetration testing activities.
Rules of Engagement
- Define allowed testing techniques — can the tester perform social engineering? Denial of service? Physical access tests? Each must be explicitly approved or prohibited.
- Set escalation procedures — who does the tester call if they find an actively exploited vulnerability? If they accidentally cause a system outage? Document names, phone numbers, and response times.
- Establish communication channels — encrypted email, Slack channel, Signal group. Define how findings are communicated during the test (especially critical/emergency findings).
- Agree on data handling — what happens to sensitive data the tester encounters? How is it stored during the engagement? When is it destroyed after?
- Define "stop" criteria — under what conditions should testing halt immediately? System outage, data corruption, or detection by the SOC team are common triggers.
Environment Preparation
- Provision test accounts — for grey/white box testing, create dedicated accounts for each user role. Never share production user credentials.
- Whitelist tester IP addresses — if the WAF or IPS will block testing traffic, whitelist the tester's source IPs (or accept that the test includes WAF bypass as a valid finding).
- Enable logging and monitoring — ensure all activity during the test window is logged. This helps correlate tester activity with findings and verifies that your monitoring actually detects attacks.
- Document current architecture — network diagrams, application architecture, tech stack, and deployment model. The tester needs context to test efficiently.
- Take backups — snapshot databases and critical systems before testing begins. If something goes wrong, you need a recovery path.
Pro tip: Create a shared "engagement tracker" document (even a simple spreadsheet) that both the tester and client update daily. Include testing status, hours consumed, findings count by severity, and any blockers. This prevents surprises in the final report.
Web Application Pentest Checklist
This is the most commonly requested type of penetration test, and for good reason — web applications are the primary attack surface for most organizations. Our web application penetration testing checklist maps directly to the OWASP Top 10 (2021) and the OWASP Web Security Testing Guide (WSTG), with practical test cases for each category.
A01: Broken Access Control
The number one risk in the OWASP Top 10, and the vulnerability we find most frequently in real-world engagements.
- Test horizontal privilege escalation — can User A access User B's data by manipulating IDs, GUIDs, or API parameters? Test every endpoint that takes a user-specific identifier. Tools: Burp Suite Autorize extension, manual parameter tampering.
- Test vertical privilege escalation — can a regular user access admin-only functionality? Force-browse to admin panels, modify role parameters in requests, and test every API endpoint with lower-privileged tokens.
- Test IDOR (Insecure Direct Object References) — systematically enumerate object references (order IDs, file names, database keys) and verify that authorization checks exist on every access.
- Verify CORS policy — check that the Access-Control-Allow-Origin header doesn't use wildcards or reflect arbitrary origins. Test with Burp Suite by modifying the Origin header.
- Test directory traversal — attempt path traversal (../../etc/passwd) on any file-handling functionality. Test URL parameters, file upload features, and download endpoints.
- Verify function-level access controls — test that server-side checks exist for every action, not just UI-level restrictions. Delete the JavaScript and test with raw HTTP requests.
A02: Cryptographic Failures
- Verify TLS configuration — check for TLS 1.2+ only, strong cipher suites, valid certificates, and HSTS headers. Tools: testssl.sh, SSLyze, or Qualys SSL Labs.
- Check for sensitive data in transit — intercept traffic with Burp Suite and verify that passwords, tokens, PII, and financial data are encrypted. Check for HTTP fallback on any endpoint.
- Inspect data at rest — for white/grey box tests, verify that sensitive data in databases is encrypted and that encryption keys are stored separately from the data.
- Check password storage — verify bcrypt, scrypt, or Argon2 is used for password hashing. Look for MD5, SHA-1, or unsalted hashes.
- Test for information leakage in responses — check HTTP headers, error messages, HTML comments, and JavaScript source for exposed secrets, API keys, or internal paths.
A03: Injection
- Test SQL injection — test every input field, URL parameter, cookie value, and HTTP header with SQL payloads. Use both error-based and blind (time-based) techniques. Tools: SQLMap for automated scanning, manual testing with Burp Suite Repeater.
- Test OS command injection — anywhere the application executes system commands (ping, nslookup, file operations), inject command separators (;, |, &&, `backticks`).
- Test LDAP injection — if the application authenticates against LDAP/Active Directory, test login fields with LDAP metacharacters.
- Test template injection (SSTI) — inject template syntax ({{7*7}}, ${7*7}, #{7*7}) into user-controllable inputs rendered by server-side templates. This is increasingly common in modern frameworks.
- Test NoSQL injection — if MongoDB or similar databases are in use, test with JSON-based injection payloads and operator injection ($gt, $ne, $regex).
- Test XPath injection — if the application uses XML data stores, test inputs with XPath syntax.
A04: Insecure Design
- Test business logic flaws — these are the vulnerabilities scanners never find. Test price manipulation, quantity tampering, workflow bypass (skipping steps in multi-step processes), and race conditions.
- Test rate limiting — attempt brute force attacks on login, password reset, OTP verification, and coupon/promo code endpoints. Verify lockout mechanisms actually work.
- Test for mass assignment — send extra parameters in requests (isAdmin=true, role=admin, balance=99999) and verify the server ignores them.
- Review password reset flow — test for token predictability, token expiration, account enumeration via reset, and token reuse after password change.
A05: Security Misconfiguration
- Check default credentials — test all admin panels, management interfaces, databases, and services for default username/password combinations. Tools: Nmap scripts, SecLists default credentials list.
- Enumerate exposed paths — brute-force directories and files for admin panels, backup files, configuration files, and deployment artifacts. Tools: Gobuster, ffuf, Feroxbuster.
- Review HTTP security headers — verify presence and correctness of Content-Security-Policy, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, and Permissions-Policy.
- Check error handling — trigger errors (404, 500, 403) and verify they don't leak stack traces, framework versions, database types, or internal paths.
- Test for unnecessary services — identify exposed debug endpoints, status pages, health checks, metrics endpoints (Prometheus, Grafana), and development tools left in production.
- Review cookie attributes — verify Secure, HttpOnly, SameSite flags on session cookies and other sensitive cookies.
A06: Vulnerable and Outdated Components
- Identify all components and versions — fingerprint server software, frameworks, libraries, and plugins. Tools: Wappalyzer, WhatWeb, Nmap version detection.
- Check for known CVEs — cross-reference identified versions against the NVD, Exploit-DB, and vendor security advisories. Tools: Retire.js for JavaScript, OWASP Dependency-Check for backend.
- Test for exploitable vulnerabilities — for high-confidence CVEs, attempt exploitation to confirm impact. This turns a "theoretical risk" into a "demonstrated compromise" in the report.
A07: Identification and Authentication Failures
- Test credential brute forcing — attempt brute force on login endpoints. Verify account lockout, CAPTCHA, or progressive delays activate after reasonable thresholds.
- Test session management — verify session tokens are random, sufficiently long, expire appropriately, and are invalidated on logout. Check for session fixation.
- Test MFA implementation — if MFA exists, test for bypass techniques: direct API access without MFA, backup code brute forcing, MFA fatigue (repeated push notifications), and session persistence after MFA.
- Test OAuth/OIDC flows — check state parameter validation, redirect URI validation, token leakage, and scope escalation.
- Test JWT implementation — check for algorithm confusion (none algorithm), weak signing keys, missing expiration, and token replay. Tools: jwt.io, jwt_tool.
A08: Software and Data Integrity Failures
- Test insecure deserialization — if the application uses serialized objects (Java, PHP, Python pickle, .NET), test for remote code execution through crafted payloads. Tools: ysoserial (Java), phpggc (PHP).
- Check CI/CD pipeline security — for white box engagements, verify that the build pipeline validates code integrity, dependencies are pinned, and secrets aren't exposed in build logs.
- Test file upload functionality — attempt to upload web shells, executables, and files with double extensions. Verify server-side file type validation (not just client-side).
A09: Security Logging and Monitoring Failures
- Verify logging of security events — confirm that failed logins, access control failures, input validation failures, and privilege changes generate log entries.
- Test log injection — attempt to inject crafted data into logs that could confuse SIEM tools or mask malicious activity.
- Verify alerting — during testing, confirm that the client's security team detects testing activity. If they don't, that's a finding.
A10: Server-Side Request Forgery (SSRF)
- Test URL-handling functionality — any feature that fetches external resources (URL previews, webhooks, file imports from URL, PDF generators) is a potential SSRF vector.
- Test for internal service access — attempt to reach internal metadata endpoints (169.254.169.254 for cloud), internal APIs, and localhost services through SSRF.
- Test SSRF filter bypass — try IP address obfuscation (decimal, hexadecimal, octal notation), DNS rebinding, and redirect-based bypass techniques.
For an understanding of how much a comprehensive web application penetration testing checklist engagement costs, see our penetration testing pricing guide.
Network Penetration Testing Checklist
Network penetration testing goes beyond the web layer to test the infrastructure that everything runs on. This network penetration testing checklist covers both external (internet-facing) and internal network assessments, following the PTES methodology.
External Reconnaissance
- DNS enumeration — discover subdomains, MX records, TXT records (SPF, DKIM, DMARC), zone transfer attempts, and DNS history. Tools: subfinder, amass, dnsx, dnsrecon.
- OSINT gathering — search for exposed credentials (breach databases), employee information (LinkedIn), technology stack (job postings, GitHub), and leaked documents (Google dorks). Tools: theHarvester, Shodan, Censys.
- ASN and IP range identification — map the target's complete internet-facing footprint, including cloud-hosted assets that might not be on the primary domain.
- Certificate transparency log analysis — discover additional subdomains and services through CT logs. Tools: crt.sh, certspotter.
Port Scanning and Service Enumeration
- Full TCP port scan — scan all 65,535 TCP ports, not just the top 1,000. Many organizations hide sensitive services on non-standard ports. Tools: Nmap (-p- flag), masscan for speed, then Nmap for accuracy.
- UDP port scan — scan top 100-1,000 UDP ports. DNS (53), SNMP (161/162), TFTP (69), and NTP (123) are commonly exploitable. UDP scanning is slow but essential.
- Service version identification — fingerprint exact service versions on every open port. Tools: Nmap -sV, banner grabbing with Netcat.
- SSL/TLS analysis on all encrypted services — not just HTTPS. Check SMTPS, IMAPS, LDAPS, and any other TLS-wrapped service. Tools: testssl.sh, SSLScan.
Vulnerability Assessment
- Run authenticated vulnerability scans — use credentialed scanning for internal tests to find vulnerabilities that unauthenticated scans miss. Tools: Nessus, OpenVAS, Qualys.
- Check for known CVEs per service version — cross-reference every identified service version against vulnerability databases. Focus on high-CVSS, remotely exploitable vulnerabilities with public exploits.
- Test for common misconfigurations — anonymous FTP, open SMTP relays, exposed SNMP with default community strings, NFS exports, SMB null sessions. Tools: Nmap NSE scripts, enum4linux.
Exploitation
- Exploit confirmed vulnerabilities — attempt exploitation of verified vulnerabilities to demonstrate actual impact, not just theoretical risk. Tools: Metasploit, manual exploit development, public PoC exploits.
- Test password attacks — attempt brute force and password spraying against exposed services (SSH, RDP, VPN, SMTP, web admin panels). Use realistic wordlists and respect lockout policies. Tools: Hydra, CrackMapExec, Medusa.
- Test VPN security — if VPN endpoints are in scope, test for weak authentication, known CVEs (many VPN appliances have had critical vulnerabilities), and configuration issues.
Internal Network: Privilege Escalation and Lateral Movement
- Local privilege escalation — from an initial foothold, attempt to escalate to root/SYSTEM/administrator. Check for kernel exploits, misconfigured SUID binaries, unquoted service paths, weak service permissions, and credential harvesting. Tools: LinPEAS, WinPEAS, PowerUp.
- Active Directory enumeration — map the AD environment: users, groups, GPOs, trusts, service accounts, and Kerberos delegation settings. Tools: BloodHound, SharpHound, ldapdomaindump.
- Lateral movement — pivot through the network using captured credentials, pass-the-hash, pass-the-ticket, or exploitation of trust relationships. Tools: CrackMapExec, Impacket, PsExec.
- Test network segmentation — verify that network segments (PCI CDE, development, production, management) are properly isolated. Attempt to cross segment boundaries from compromised hosts.
- Data exfiltration testing — demonstrate that sensitive data can be extracted from the network. Test for DLP bypass, DNS exfiltration, and HTTPS-based exfiltration. Document what you could access without actually extracting real data.
Remember: The goal of a network penetration test isn't to find the most vulnerabilities — it's to demonstrate realistic attack paths and their business impact. A single chain from "unauthenticated internet access" to "domain admin" tells a more powerful story than 200 low-severity findings. For more on how this differs from automated scanning, read our VA vs. pentest comparison.
Cloud Penetration Testing Checklist
Cloud environments introduce an entirely different attack surface. Misconfigurations in IAM policies, storage permissions, and network security groups have caused some of the largest breaches in recent years (Capital One, Twitch, Uber). This checklist covers the most common and impactful cloud security issues across AWS, Azure, and GCP.
IAM and Identity Review
- Audit IAM policies for overly permissive access — check for wildcard permissions (*), unused permissions, and policies that violate least privilege. Tools: AWS IAM Access Analyzer, Prowler, ScoutSuite.
- Check for long-lived access keys — identify IAM access keys that haven't been rotated, keys associated with inactive users, and root account access keys (which should never exist).
- Test cross-account access — verify that IAM roles with cross-account trust aren't overly permissive and can't be assumed by unintended parties.
- Review service account permissions — verify that service accounts, Lambda execution roles, and managed identities follow least privilege. Many organizations grant AdministratorAccess to Lambda functions for convenience.
- Check for MFA enforcement — verify MFA is required for all human users, especially on root/owner accounts and accounts with console access.
Storage Security
- Test S3/Blob/GCS bucket permissions — check for publicly accessible buckets, buckets with overly permissive ACLs, and buckets without encryption at rest. Tools: S3Scanner, BucketFinder, cloud provider native tools.
- Check for sensitive data in storage — scan accessible storage for credentials, PII, API keys, database backups, and other sensitive data that shouldn't be stored unprotected.
- Verify encryption configuration — check that encryption at rest is enabled with appropriate key management (customer-managed keys vs. provider-managed).
- Test storage access logging — verify that access logs are enabled for sensitive storage resources and that they're being monitored.
Network Security
- Review security group / NSG rules — check for overly permissive inbound rules (0.0.0.0/0 on management ports like SSH, RDP), and verify that security groups follow least privilege.
- Test VPC/VNet segmentation — verify that production, staging, and development environments are properly isolated. Test for cross-VPC access that shouldn't exist.
- Check for exposed services — identify cloud services (databases, caches, message queues) that are accidentally exposed to the internet through misconfigured security groups or public endpoints.
- Review VPN and Direct Connect security — if hybrid connectivity exists, test the security of the connection and verify that on-premises access to cloud resources is properly controlled.
Serverless and Container Security
- Audit Lambda/Cloud Function configurations — check for environment variables containing secrets, overly permissive execution roles, public function URLs, and vulnerable runtime versions.
- Test container security — scan container images for vulnerabilities, check for privileged containers, test for container escape paths, and verify that container registries are properly secured. Tools: Trivy, Grype, kube-bench.
- Review Kubernetes security — if K8s is in scope, test for exposed dashboards, RBAC misconfigurations, pod security policies, and secrets management. Tools: kube-hunter, kubeaudit.
Secrets Management
- Scan for hardcoded secrets — check code repositories, environment variables, configuration files, and container images for hardcoded API keys, passwords, and tokens. Tools: TruffleHog, GitLeaks, detect-secrets.
- Verify secrets manager usage — confirm that the organization uses AWS Secrets Manager, Azure Key Vault, or GCP Secret Manager (or HashiCorp Vault) instead of environment variables for sensitive values.
- Test secret rotation — verify that secrets are rotated on a defined schedule and that applications handle rotation gracefully.
API Penetration Testing Checklist
APIs are the connective tissue of modern applications, and they're increasingly the target of choice for attackers. According to Gartner, API attacks are now the most frequent attack vector for enterprise web applications. This checklist covers REST, GraphQL, gRPC, and WebSocket APIs.
Authentication Testing
- Test API key security — check if API keys are transmitted securely (HTTPS only, never in URL parameters), if they can be brute-forced, and if revoked keys are actually rejected.
- Test OAuth 2.0 implementation — verify token expiration, refresh token rotation, scope validation, and PKCE implementation for public clients.
- Test JWT handling — check for algorithm confusion attacks, weak signing keys, missing claims validation (exp, iss, aud), and token information leakage.
- Test authentication bypass — attempt to access authenticated endpoints without credentials, with expired tokens, and with tokens from different users or applications.
Authorization Testing
- Test BOLA (Broken Object Level Authorization) — the API equivalent of IDOR. Systematically test every endpoint that takes an object ID and verify that authorization is enforced per-object, not just per-endpoint.
- Test BFLA (Broken Function Level Authorization) — attempt to access admin-only API functions with regular user tokens. Test both explicit admin endpoints and hidden functions discovered through documentation or API schema analysis.
- Test scope enforcement — verify that OAuth scopes and API key permissions are actually enforced. A token with read-only scope shouldn't be able to create, update, or delete resources.
Input Validation
- Test for injection in all parameters — SQL injection, NoSQL injection, command injection, and SSRF through API parameters, headers, and request bodies.
- Test GraphQL-specific issues — introspection enabled in production, query depth/complexity limits, batch query abuse, and field-level authorization.
- Test request body manipulation — send unexpected data types, oversized payloads, nested objects beyond expected depth, and arrays where single values are expected.
- Test file upload via API — if the API accepts file uploads, test all the same vectors as web application file upload (web shells, path traversal, content type mismatch).
Rate Limiting and Abuse Prevention
- Test rate limiting on all endpoints — verify that rate limits exist and are enforced. Pay special attention to authentication endpoints, password reset, OTP validation, and resource-intensive operations.
- Test rate limit bypass techniques — try bypassing through IP rotation, different API keys, header manipulation (X-Forwarded-For), and HTTP method switching.
- Test for resource exhaustion — attempt to trigger expensive operations (complex search queries, report generation, large data exports) at high volume to test for DoS resilience.
Error Handling and Data Exposure
- Test error responses for information leakage — trigger errors and verify that responses don't include stack traces, database queries, internal paths, or debug information.
- Test for excessive data exposure — verify that API responses only include fields the client needs. Many APIs return entire database objects when the client only displays three fields.
- Test API versioning security — if multiple API versions exist, test older versions for vulnerabilities that were fixed in newer versions but left unpatched in the old ones.
- Check API documentation exposure — verify that Swagger/OpenAPI documentation, GraphQL introspection, and API schema endpoints are not publicly accessible in production.
For a deeper look at the tools used in API and web application testing, including Burp Suite, Postman, and specialized API security scanners, see our penetration testing tools guide.
Post-Engagement Checklist
Finding vulnerabilities is only half the job. The post-engagement phase is where the value actually gets delivered — through clear reporting, actionable remediation guidance, and verified fixes.
Reporting
- Prepare executive summary — 1-2 pages written for non-technical stakeholders. Include overall risk rating, key findings, and business impact in plain language. No CVSS scores or technical jargon in this section.
- Document each finding with full detail — for each vulnerability: description, affected asset, CVSS score, evidence (screenshots, request/response pairs), step-by-step reproduction instructions, and specific remediation guidance. See our pentest report template for the exact format.
- Classify findings by severity — use a recognized scoring framework (CVSS 3.1 or 4.0) and map findings to the organization's risk appetite. A critical SQL injection on a public-facing app is different from the same finding on an internal tool used by two people.
- Include positive findings — document what was tested and found to be secure. This is especially important for compliance and gives the development team credit for what they got right.
- Provide strategic recommendations — beyond fixing individual bugs, recommend systemic improvements: security training, SDLC integration, WAF deployment, or adopting a continuous testing model.
Debriefing
- Conduct technical debrief with development team — walk through each finding, answer questions, and discuss remediation approaches. This is where the real knowledge transfer happens.
- Conduct executive debrief with leadership — present the executive summary, highlight business risks, and provide context for remediation investment decisions.
- Document lessons learned — what worked well in the engagement process? What should change for next time? This improves both the client's security program and the tester's methodology.
Retesting and Remediation Tracking
- Define remediation timelines — agree on fix deadlines based on severity: critical (48-72 hours), high (1-2 weeks), medium (30 days), low (90 days).
- Schedule retesting — plan a retest window after the remediation deadline to verify fixes. A finding isn't "resolved" until the retest confirms the fix works and hasn't introduced new issues.
- Track remediation progress — use a shared tracker (JIRA, spreadsheet, or the testing platform's tracking feature) to monitor fix status across all findings.
- Issue attestation letter — after successful retesting, provide a formal letter confirming that identified vulnerabilities have been remediated. This is what compliance auditors and customers want to see.
- Clean up testing artifacts — remove all test accounts, backdoors (if planted with permission for testing), uploaded files, and any data created during the engagement. Confirm cleanup with the client.
Get Your Penetration Test Done
Stop wondering if your applications and infrastructure are secure. Our vetted pentesters follow this exact checklist across every engagement — web, network, cloud, and API.
See Pricing and Get StartedDownloadable Penetration Testing Checklist
We've packaged everything above into a printable, shareable PDF that your team can use during every engagement. The downloadable penetration testing checklist includes:
- All checklist items from this article in a check-box format you can print and mark up
- OWASP mapping — every web application item is mapped to its corresponding OWASP Top 10 category and WSTG test case ID
- PTES mapping — network testing items are mapped to PTES phases
- Tool recommendations — the specific tools referenced in each checklist item, with alternatives
- Customizable scope template — a pre-engagement scope definition template you can fill in for each engagement
- Report outline — the structure for your final report, matching the VulnSkill report template
Get the PDF: Enter your email below and we'll send you the complete Penetration Testing Checklist in PDF format — no spam, no sales funnel, just the checklist. Download the free checklist here.
If you'd rather have professionals handle the entire process — from scoping to testing to remediation verification — VulnSkill's penetration testing service follows this exact checklist on every engagement. We've taken the guesswork out so you don't have to manage the process yourself.
Frequently Asked Questions
A comprehensive penetration testing checklist should cover five phases: pre-engagement (scope, legal authorization, rules of engagement), reconnaissance and discovery, vulnerability testing mapped to standards like OWASP Top 10, exploitation and post-exploitation, and post-engagement (reporting, retesting, remediation tracking). Each phase has specific items that vary depending on whether you're testing web applications, networks, cloud environments, or APIs.
The OWASP penetration testing checklist is based on the OWASP Testing Guide (OTG) and the Web Security Testing Guide (WSTG), which provides over 90 specific test cases mapped to the OWASP Top 10. It covers injection flaws, broken authentication, sensitive data exposure, XXE, broken access control, security misconfigurations, XSS, insecure deserialization, vulnerable components, and insufficient logging. It's the most widely used framework for web application security testing.
A standard web application penetration test takes 5 to 10 business days of active testing. Network penetration tests typically run 3 to 7 days for external and 5 to 10 days for internal networks. Cloud security assessments take 5 to 8 days. Add 3 to 5 days for reporting and 2 to 3 days for retesting. The total elapsed time from kickoff to final report is usually 3 to 6 weeks depending on scope and scheduling.
A vulnerability assessment checklist focuses on automated scanning to identify known vulnerabilities across a broad surface area. A penetration testing checklist goes further — it includes manual exploitation, business logic testing, privilege escalation, lateral movement, and chaining multiple vulnerabilities to demonstrate real-world impact. Penetration testing validates whether vulnerabilities are actually exploitable, while vulnerability assessments list potential weaknesses.
The most widely recognized frameworks are: OWASP Testing Guide (WSTG) for web applications, PTES (Penetration Testing Execution Standard) for methodology, NIST SP 800-115 for technical security testing, OSSTMM for comprehensive security testing methodology, and CREST guidelines for certified testing. For compliance-driven tests, map findings to PCI-DSS, ISO 27001, SOC 2, or HIPAA requirements as applicable.