web-pentesting-checklist icon indicating copy to clipboard operation
web-pentesting-checklist copied to clipboard

checklist for testing the web applications

web-pentesting-checklist

Pre-Engagement

Recon & analysis

  • [ ] Identify web server & technologies
  • [ ] Subdomains Enumeration
  • [ ] Directory enumeration
  • [ ] Find leaked ids, emails (pwndb)
  • [ ] Identify WAF
  • [ ] Crawl all the site for interesting keywords like password, token, etc
  • [ ] Test for debug parameters
  • [ ] Identify data entry points
  • [ ] Try to locate /robots.txt /crossdomain.xml /clientaccesspolicy.xml /phpinfo.php /sitemap.xml
  • [ ] Review comments on source code
  • [ ] Check /.git
  • [ ] Shodan
  • [ ] Google dorking
  • [ ] Check waybackurls (gau and waybackurls)

Network tests

  • [ ] Check ICMP packets allowed
  • [ ] Check DMARC policies (spoofcheck)
  • [ ] Look services on other ports than 80 and 443
  • [ ] Check UDP ports (udp-proto-scanner or nmap)
  • [ ] Test SSL (testssl)

Preparation

  • [ ] Study site structure
  • [ ] Make a list with all possible test cases

User management

Registration

  • [ ] Duplicate registration
  • [ ] Overwrite existing user (existing user takeover)
  • [ ] Username uniqueness
  • [ ] Weak password policy
  • [ ] Insufficient email verification process
  • [ ] Weak registration implementation or allows disposable email addresses
  • [ ] Fuzz after user creation to check if any folder have been overwritten or created with your profile name
  • [ ] Add only spaces in password

Authentication

  • [ ] Username enumeration
  • [ ] Resilience to password guessing
  • [ ] Account recovery function
  • [ ] "Remember me" function
  • [ ] Impersonation function
  • [ ] Unsafe distribution of credentials
  • [ ] Fail-open conditions
  • [ ] Multi-stage mechanisms
  • [ ] SQL Injections
  • [ ] Auto-complete testing
  • [ ] Lack of password confirmation on change email, password or 2FA
  • [ ] Weak login function over HTTP and HTTPS if both are available
  • [ ] User account lockout mechanism on brute force attack
  • [ ] Check for password wordlist (cewl and burp-goldenNuggets)
  • [ ] Test 0auth login functionality for Open Redirection
  • [ ] Test response tampering in SAML authentication
  • [ ] In OTP check guessable codes and race conditions
  • [ ] If JWT, check common flaws
  • [ ] Browser cache weakness (eg Pragma, Expires, Max-age)

Session

  • [ ] Session handling
  • [ ] Test tokens for meaning
  • [ ] Test tokens for predictability
  • [ ] Insecure transmission of tokens
  • [ ] Disclosure of tokens in logs
  • [ ] Mapping of tokens to sessions
  • [ ] Session termination
  • [ ] Session fixation
  • [ ] Cross-site request forgery
  • [ ] Cookie scope
  • [ ] Decode Cookie (Base64, hex, URL etc.)
  • [ ] Cookie expiration time
  • [ ] Check HTTPOnly and Secure flags
  • [ ] Use same cookie from a different effective IP address or system
  • [ ] Access controls
  • [ ] Effectiveness of controls using multiple accounts
  • [ ] Insecure access control methods (request parameters, Referer header, etc)
  • [ ] Check for concurrent login through different machine/IP
  • [ ] Bypass AntiCSRF tokens

Profile/Account details

  • [ ] Find parameter with user id and try to tamper in order to get the details of other users
  • [ ] Create a list of features that are pertaining to a user account only and try CSRF
  • [ ] Change email id and update with any existing email id. Check if its getting validated on server or not.
  • [ ] Check any new email confirmation link and what if user doesn't confirm.
  • [ ] File upload: Unsafe File upload, No Antivirus, No Size Limit, File extension, Filter Bypass, burp
  • [ ] CSV import/export: Command Injection, XSS, macro injection
  • [ ] Check profile picture URL and find email id/user info or EXIF Geolocation Data
  • [ ] Imagetragick in picture profile upload
  • [ ] Metadata of all downloadable files
  • [ ] Account deletion option and try to reactivate with "Forgot password" feature
  • [ ] Try bruteforce enumeration when change any user unique parameter.
  • [ ] Check application request re-authentication for sensitive operations
  • [ ] Try parameter pollution to add two values of same field

Forgot password

  • [ ] Invalidate session on Logout and Password reset
  • [ ] Uniqueness of forget password reset link/code
  • [ ] Reset links expiration time
  • [ ] Find user id or other sensitive fields in reset link and tamper them
  • [ ] Request 2 reset passwords links and use the older
  • [ ] Check if many requests have sequential tokens

Input handling

  • [ ] Fuzz all request parameters
  • [ ] Identify all reflected data
  • [ ] Reflected XSS
  • [ ] HTTP header injection in GET & POST (X Forwarded Host)
  • [ ] Arbitrary redirection
  • [ ] Stored attacks
  • [ ] OS command injection
  • [ ] Path traversal
  • [ ] Script injection
  • [ ] File inclusion
  • [ ] SMTP injection
  • [ ] Native software flaws (buffer overflow, integer bugs, format strings)
  • [ ] SOAP injection
  • [ ] LDAP injection
  • [ ] XPath injection
  • [ ] XXE in any request, change content-type to text/xml
  • [ ] Stored XSS
  • [ ] SQL injection
  • [ ] NoSQL injection
  • [ ] HTTP Request Smuggling
  • [ ] Open redirect
  • [ ] SSRF in previously discovered open ports
  • [ ] xmlrpc.php DOS and user enumeration
  • [ ] HTTP dangerous methods OPTIONS PUT DELETE

Error handling

  • [ ] Access custom pages like /whatever_fake.php (.aspx,.html,.etc)
  • [ ] Add multiple parameters in GET and POST request using different values
  • [ ] Add "[]", "]]", and "[[" in cookie values and parameter values to create errors
  • [ ] Generate error by giving input as "/~randomthing/%s" at the end of URL
  • [ ] Use Burp Intruder "Fuzzing Full" List in input to generate error codes
  • [ ] Try different HTTP Verbs like PATCH, DEBUG or wrong like FAKE

Application Logic

  • [ ] Identify the logic attack surface
  • [ ] Test transmission of data via the client
  • [ ] Test for reliance on client-side input validation
  • [ ] Thick-client components (Java, ActiveX, Flash)
  • [ ] Multi-stage processes for logic flaws
  • [ ] Handling of incomplete input
  • [ ] Trust boundaries
  • [ ] Transaction logic
  • [ ] Implemented CAPTCHA in email forms to avoid flooding
  • [ ] Tamper product id, price or quantity value in any action (add, modify, delete, place, pay...)
  • [ ] Tamper gift or discount codes
  • [ ] Reuse gift codes
  • [ ] Try parameter pollution to use gift code two times in same request
  • [ ] Try stored XSS in non-limited fields like address
  • [ ] Check in payment form if CVV and card number is in clear text or masked
  • [ ] Check if is processed by the app itself or sent to 3rd parts
  • [ ] IDOR from other users details ticket/cart/shipment
  • [ ] Check PRINT or PDF creation for IDOR
  • [ ] Check unsubscribe button with user enumeration
  • [ ] Parameter pollution on social media sharing links
  • [ ] CORS (corsy)
  • [ ] Change POST sensitive requests to GET

Other checks

Hosting

  • [ ] Segregation in shared infrastructures
  • [ ] Segregation between ASP-hosted applications
  • [ ] Web server vulnerabilities
  • [ ] Dangerous HTTP methods
  • [ ] Proxy functionality
  • [ ] Virtual hosting misconfiguration
  • [ ] Check for internal numeric IP's in request
  • [ ] Check for external numeric IP's and resolve it
  • [ ] References to cloud assets

CAPTCHA

  • [ ] Send old captcha value.
  • [ ] Send old captcha value with old session ID.
  • [ ] Request captcha absolute path like www.url.com/captcha/1.png
  • [ ] Remove captcha with any adblocker and request again
  • [ ] Bypass with OCR tool

Headers

  • [ ] X-XSS-Protection
  • [ ] Strict-Transport-Security
  • [ ] Content-Security-Policy
  • [ ] Public-Key-Pins
  • [ ] X-Frame-Options
  • [ ] X-Content-Type-Options
  • [ ] Referer-Policy
  • [ ] Cache-Control
  • [ ] Expires