Update README.md

This commit is contained in:
Hariprasaanth R 2022-10-26 06:28:50 +05:30 committed by GitHub
parent 0d3fdedf2e
commit ef2e36b046
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

680
README.md
View File

@ -1,15 +1,677 @@
# WEB APPLICATION PENTESTING CHECKLIST
OWASP Based Checklist 🌟🌟 </br>
500+ Test Cases 🚀🚀 </br>
**OWASP Based Checklist 🌟🌟**
Notion link: https://hariprasaanth.notion.site/WEB-APPLICATION-PENTESTING-CHECKLIST-0f02d8074b9d4af7b12b8da2d46ac998
</br></br>
**500+ Test Cases 🚀🚀**
- **INFORMATION GATHERING**
**Open Source Reconnaissance**
- [ ] Perform Google Dorks search
- [ ] Perform OSINT
**Fingerprinting Web Server**
- [ ] Find the type of Web Server
- [ ] Find the version details of the Web Server
**Looking For Metafiles**
- [ ] View the Robots.txt file
- [ ] View the Sitemap.xml file
- [ ] View the Humans.txt file
- [ ] View the Security.txt file
**Enumerating Web Servers Applications**
- [ ] Enumerating with Nmap
- [ ] Enumerating with Netcat
- [ ] Perform a DNS lookup
- [ ] Perform a Reverse DNS lookup
**Review The Web Contents**
- [ ] Inspect the page source for sensitive info
- [ ] Try to find Sensitive Javascript codes
- [ ] Try to find any keys
- [ ] Make sure the autocomplete is disabled
**Identifying Applications Entry Points**
- [ ] Identify what the methods used are?
- [ ] Identify where the methods used are?
- [ ] Identify the Injection point
**Mapping Execution Paths**
- [ ] Use Burp Suite
- [ ] Use Dirsearch
- [ ] Use Gobuster
**Fingerprint Web Application Framework**
- [ ] Use the Wappalyzer browser extension
- [ ] Use Whatweb
- [ ] View URL extensions
- [ ] View HTML source code
- [ ] View the cookie parameter
- [ ] View the HTTP headers
**Map Application Architecture**
- [ ] Map the overall site structure
- **CONFIGURATION & DEPLOYMENT MANAGEMENT TESTING**
**Test Network Configuration**
- [ ] Check the network configuration
- [ ] Check for default settings
- [ ] Check for default credentials
**Test Application Configuration**
- [ ] Ensure only required modules are used
- [ ] Ensure unwanted modules are disabled
- [ ] Ensure the server can handle DOS
- [ ] Check how the application is handling 4xx & 5xx errors
- [ ] Check for the privilege required to run
- [ ] Check logs for sensitive info
**Test File Extension Handling**
- [ ] Ensure the server wont return sensitive extensions
- [ ] Ensure the server wont accept malicious extensions
- [ ] Test for file upload vulnerabilities
**Review Backup & Unreferenced Files**
- [ ] Ensure unreferenced files dont contain any sensitive info
- [ ] Ensure the namings of old and new backup files
- [ ] Check the functionality of unreferenced pages
**Enumerate Infrastructure & Admin Interfaces**
- [ ] Try to find the Infrastructure Interface
- [ ] Try to find the Admin Interface
- [ ] Identify the hidden admin functionalities
**Testing HTTP Methods**
- [ ] Discover the supported methods
- [ ] Ensure the PUT method is disabled
- [ ] Ensure the OPTIONS method is disabled
- [ ] Test access control bypass
- [ ] Test for XST attacks
- [ ] Test for HTTP method overriding
**Test HSTS**
- [ ] Ensure HSTS is enabled
**Test RIA Cross Domain Policy**
- [ ] Check for Adobes Cross Domain Policy
- [ ] Ensure it has the least privilege
**Test File Permission**
- [ ] Ensure the permissions for sensitive files
- [ ] Test for directory enumeration
**Test For Subdomain Takeover**
- [ ] Test DNS, A, and CNAME records for subdomain takeover
- [ ] Test NS records for subdomain takeover
- [ ] Test 404 response for subdomain takeover
**Test Cloud Storage**
- [ ] Check the sensitive paths of AWS
- [ ] Check the sensitive paths of Google Cloud
- [ ] Check the sensitive paths of Azure
- **IDENTITY MANAGEMENT TESTING**
**Test Role Definitions**
- [ ] Test for forced browsing
- [ ] Test for IDOR (Insecure Direct Object Reference)
- [ ] Test for parameter tampering
- [ ] Ensure low privilege users cant able to access high privilege resources
**Test User Registration Process**
- [ ] Ensure the same user or identity cant register again and again
- [ ] Ensure the registrations are verified
- [ ] Ensure disposable email addresses are rejected
- [ ] Check what proof is required for successful registration
**Test Account Provisioning Process**
- [ ] Check the verification for the provisioning process
- [ ] Check the verification for the de-provisioning process
- [ ] Check the provisioning rights for an admin user to other users
- [ ] Check whether a user is able to de-provision themself or not?
- [ ] Check for the resources of a de-provisioned user
**Testing For Account Enumeration**
- [ ] Check the response when a valid username and password entered
- [ ] Check the response when a valid username and an invalid password entered
- [ ] Check the response when an invalid username and password entered
- [ ] Ensure the rate-limiting functionality is enabled in username and password fields
**Test For Weak Username Policy**
- [ ] Check the response for both valid and invalid usernames
- [ ] Check for username enumeration
- **AUTHENTICATION TESTING**
**Test For Un-Encrypted Channel**
- [ ] Check for the HTTP login page
- [ ] Check for the HTTP register or sign-in page
- [ ] Check for HTTP forgot password page
- [ ] Check for HTTP change password
- [ ] Check for resources on HTTP after logout
- [ ] Test for forced browsing to HTTP pages
**Test For Default Credentials**
- [ ] Test with default credentials
- [ ] Test organization name as credentials
- [ ] Test for response manipulation
- [ ] Test for the default username and a blank password
- [ ] Review the page source for credentials
**Test For Weak Lockout Mechanism**
- [ ] Ensure the account has been locked after 3-5 incorrect attempts
- [ ] Ensure the system accepts only the valid CAPTCHA
- [ ] Ensure the system rejects the invalid CAPTCHA
- [ ] Ensure CAPTCHA code regenerated after reloaded
- [ ] Ensure CAPTCHA reloads after entering the wrong code
- [ ] Ensure the user has a recovery option for a lockout account
**Test For Bypassing Authentication Schema**
- [ ] Test forced browsing directly to the internal dashboard without login
- [ ] Test for session ID prediction
- [ ] Test for authentication parameter tampering
- [ ] Test for SQL injection on the login page
- [ ] Test to gain access with the help of session ID
- [ ] Test multiple logins allowed or not?
**Test For Vulnerable Remember Password**
- [ ] Ensure that the stored password is encrypted
- [ ] Ensure that the stored password is on the server-side
**Test For Browser Cache Weakness**
- [ ] Ensure proper cache-control is set on sensitive pages
- [ ] Ensure no sensitive data is stored in the browser cache storage
**Test For Weak Password Policy**
- [ ] Ensure the password policy is set to strong
- [ ] Check for password reusability
- [ ] Check the user is prevented to use his username as a password
- [ ] Check for the usage of common weak passwords
- [ ] Check the minimum password length to be set
- [ ] Check the maximum password length to be set
**Testing For Weak Security Questions**
- [ ] Check for the complexity of the questions
- [ ] Check for brute-forcing
**Test For Weak Password Reset Function**
- [ ] Check what information is required to reset the password
- [ ] Check for password reset function with HTTP
- [ ] Test the randomness of the password reset tokens
- [ ] Test the uniqueness of the password reset tokens
- [ ] Test for rate limiting on password reset tokens
- [ ] Ensure the token must expire after being used
- [ ] Ensure the token must expire after not being used for a long time
**Test For Weak Password Change Function**
- [ ] Check if the old password asked to make a change
- [ ] Check for the uniqueness of the forgotten password
- [ ] Check for blank password change
- [ ] Check for password change function with HTTP
- [ ] Ensure the old password is not displayed after changed
- [ ] Ensure the other sessions got destroyed after the password change
**Test For Weak Authentication In Alternative Channel**
- [ ] Test authentication on the desktop browsers
- [ ] Test authentication on the mobile browsers
- [ ] Test authentication in a different country
- [ ] Test authentication in a different language
- [ ] Test authentication on desktop applications
- [ ] Test authentication on mobile applications
- **AUTHORIZATION TESTING**
**Testing Directory Traversal File Include**
- [ ] Identify the injection point on the URL
- [ ] Test for Local File Inclusion
- [ ] Test for Remote File Inclusion
- [ ] Test Traversal on the URL parameter
- [ ] Test Traversal on the cookie parameter
**Testing Traversal With Encoding**
- [ ] Test Traversal with Base64 encoding
- [ ] Test Traversal with URL encoding
- [ ] Test Traversal with ASCII encoding
- [ ] Test Traversal with HTML encoding
- [ ] Test Traversal with Hex encoding
- [ ] Test Traversal with Binary encoding
- [ ] Test Traversal with Octal encoding
- [ ] Test Traversal with Gzip encoding
**Testing Travesal With Different OS Schemes**
- [ ] Test Traversal with Unix schemes
- [ ] Test Traversal with Windows schemes
- [ ] Test Traversal with Mac schemes
**Test Other Encoding Techniques**
- [ ] Test Traversal with Double encoding
- [ ] Test Traversal with all characters encode
- [ ] Test Traversal with only special characters encode
**Test Authorization Schema Bypass**
- [ ] Test for Horizontal authorization schema bypass
- [ ] Test for Vertical authorization schema bypass
- [ ] Test override the target with custom headers
**Test For Privilege Escalation**
- [ ] Identify the injection point
- [ ] Test for bypassing the security measures
- [ ] Test for forced browsing
- [ ] Test for IDOR
- [ ] Test for parameter tampering to high privileged user
**Test For Insecure Direct Object Reference**
- [ ] Test to change the ID parameter
- [ ] Test to add parameters at the endpoints
- [ ] Test for HTTP parameter pollution
- [ ] Test by adding an extension at the end
- [ ] Test with outdated API versions
- [ ] Test by wrapping the ID with an array
- [ ] Test by wrapping the ID with a JSON object
- [ ] Test for JSON parameter pollution
- [ ] Test by changing the case
- [ ] Test for path traversal
- [ ] Test by changing words
- [ ] Test by changing methods
- **SESSION MANAGEMENT TESTING**
**Test For Session Management Schema**
- [ ] Ensure all Set-Cookie directives are secure
- [ ] Ensure no cookie operation takes place over an unencrypted channel
- [ ] Ensure the cookie cant be forced over an unencrypted channel
- [ ] Ensure the HTTPOnly flag is enabled
- [ ] Check if any cookies are persistent
- [ ] Check for session cookies and cookie expiration date/time
- [ ] Check for session fixation
- [ ] Check for concurrent login
- [ ] Check for session after logout
- [ ] Check for session after closing the browser
- [ ] Try decoding cookies (Base64, Hex, URL, etc)
**Test For Cookie Attributes**
- [ ] Ensure the cookie must be set with the secure attribute
- [ ] Ensure the cookie must be set with the path attribute
- [ ] Ensure the cookie must have the HTTPOnly flag
**Test For Session Fixation**
- [ ] Ensure new cookies have been issued upon a successful authentication
- [ ] Test manipulating the cookies
**Test For Exposed Session Variables**
- [ ] Test for encryption
- [ ] Test for GET and POST vulnerabilities
- [ ] Test if GET request incorporating the session ID used
- [ ] Test by interchanging POST with GET method
**Test For Back Refresh Attack**
- [ ] Test after password change
- [ ] Test after logout
**Test For Cross Site Request Forgery**
- [ ] Check if the token is validated on the server-side or not
- [ ] Check if the token is validated for full or partial length
- [ ] Check by comparing the CSRF tokens for multiple dummy accounts
- [ ] Check CSRF by interchanging POST with GET method
- [ ] Check CSRF by removing the CSRF token parameter
- [ ] Check CSRF by removing the CSRF token and using a blank parameter
- [ ] Check CSRF by using unused tokens
- [ ] Check CSRF by replacing the CSRF token with its own values
- [ ] Check CSRF by changing the content type to form-multipart
- [ ] Check CSRF by changing or deleting some characters of the CSRF token
- [ ] Check CSRF by changing the referrer to Referrer
- [ ] Check CSRF by changing the host values
- [ ] Check CSRF alongside clickjacking
**Test For Logout Functionality**
- [ ] Check the log out function on different pages
- [ ] Check for the visibility of the logout button
- [ ] Ensure after logout the session was ended
- [ ] Ensure after logout we cant able to access the dashboard by pressing the back button
- [ ] Ensure proper session timeout has been set
**Test For Session Timeout**
- [ ] Ensure there is a session timeout exists
- [ ] Ensure after the timeout, all of the tokens are destroyed
**Test For Session Puzzling**
- [ ] Identify all the session variables
- [ ] Try to break the logical flow of the session generation
**Test For Session Hijacking**
- [ ] Test session hijacking on target that doesnt has HSTS enabled
- [ ] Test by login with the help of captured cookies
- **INPUT VALIDATION TESTING**
**Test For Reflected Cross Site Scripting**
- [ ] Ensure these characters are filtered <>&””
- [ ] Test with a character escape sequence
- [ ] Test by replacing < and > with HTML entities &lt; and &gt;
- [ ] Test payload with both lower and upper case
- [ ] Test to break firewall regex by new line /r/n
- [ ] Test with double encoding
- [ ] Test with recursive filters
- [ ] Test injecting anchor tags without whitespace
- [ ] Test by replacing whitespace with bullets
- [ ] Test by changing HTTP methods
**Test For Stored Cross Site Scripting**
- [ ] Identify stored input parameters that will reflect on the client-side
- [ ] Look for input parameters on the profile page
- [ ] Look for input parameters on the shopping cart page
- [ ] Look for input parameters on the file upload page
- [ ] Look for input parameters on the settings page
- [ ] Look for input parameters on the forum, comment page
- [ ] Test uploading a file with XSS payload as its file name
- [ ] Test with HTML tags
**Test For HTTP Parameter Pollution**
- [ ] Identify the backend server and parsing method used
- [ ] Try to access the injection point
- [ ] Try to bypass the input filters using HTTP Parameter Pollution
**Test For SQL Injection**
- [ ] Test SQL Injection on authentication forms
- [ ] Test SQL Injection on the search bar
- [ ] Test SQL Injection on editable characteristics
- [ ] Try to find SQL keywords or entry point detections
- [ ] Try to inject SQL queries
- [ ] Use tools like SQLmap or Hackbar
- [ ] Use Google dorks to find the SQL keywords
- [ ] Try GET based SQL Injection
- [ ] Try POST based SQL Injection
- [ ] Try COOKIE based SQL Injection
- [ ] Try HEADER based SQL Injection
- [ ] Try SQL Injection with null bytes before the SQL query
- [ ] Try SQL Injection with URL encoding
- [ ] Try SQL Injection with both lower and upper cases
- [ ] Try SQL Injection with SQL Tamper scripts
- [ ] Try SQL Injection with SQL Time delay payloads
- [ ] Try SQL Injection with SQL Conditional delays
- [ ] Try SQL Injection with Boolean based SQL
- [ ] Try SQL Injection with Time based SQL
**Test For LDAP Injection**
- [ ] Use LDAP search filters
- [ ] Try LDAP Injection for access control bypass
**Testing For XML Injection**
- [ ] Check if the application is using XML for processing
- [ ] Identify the XML Injection point by XML metacharacter
- [ ] Construct XSS payload on top of XML
**Test For Server Side Includes**
- [ ] Use Google dorks to find the SSI
- [ ] Construct RCE on top of SSI
- [ ] Construct other injections on top of SSI
- [ ] Test Injecting SSI on login pages, header fields, referrer, etc
**Test For XPATH Injection**
- [ ] Identify XPATH Injection point
- [ ] Test for XPATH Injection
**Test For IMAP SMTP Injection**
- [ ] Identify IMAP SMTP Injection point
- [ ] Understand the data flow
- [ ] Understand the deployment structure of the system
- [ ] Assess the injection impact
**Test For Local File Inclusion**
- [ ] Look for LFI keywords
- [ ] Try to change the local path
- [ ] Use the LFI payload list
- [ ] Test LFI by adding a null byte at the end
**Test For Remote File Inclusion**
- [ ] Look for RFI keywords
- [ ] Try to change the remote path
- [ ] Use the RFI payload list
**Test For Command Injection**
- [ ] Identify the Injection points
- [ ] Look for Command Injection keywords
- [ ] Test Command Injection using different delimiters
- [ ] Test Command Injection with payload list
- [ ] Test Command Injection with different OS commands
**Test For Format String Injection**
- [ ] Identify the Injection points
- [ ] Use different format parameters as payloads
- [ ] Assess the injection impact
**Test For Host Header Injection**
- [ ] Test for HHI by changing the real Host parameter
- [ ] Test for HHI by adding X-Forwarded Host parameter
- [ ] Test for HHI by swapping the real Host and X-Forwarded Host parameter
- [ ] Test for HHI by adding two Host parameters
- [ ] Test for HHI by adding the target values in front of the original values
- [ ] Test for HHI by adding the target with a slash after the original values
- [ ] Test for HHI with other injections on the Host parameter
- [ ] Test for HHI by password reset poisoning
**Test For Server Side Request Forgery**
- [ ] Look for SSRF keywords
- [ ] Search for SSRF keywords only under the request header and body
- [ ] Identify the Injection points
- [ ] Test if the Injection points are exploitable
- [ ] Assess the injection impact
**Test For Server Side Template Injection**
- [ ] Identify the Template injection vulnerability points
- [ ] Identify the Templating engine
- [ ] Use the tplmap to exploit
- **ERROR HANDLING TESTING**
**Test For Improper Error Handling**
- [ ] Identify the error output
- [ ] Analyze the different outputs returned
- [ ] Look for common error handling flaws
- [ ] Test error handling by modifying the URL parameter
- [ ] Test error handling by uploading unrecognized file formats
- [ ] Test error handling by entering unrecognized inputs
- [ ] Test error handling by making all possible errors
- **WEAK CRYPTOGRAPHY TESTING**
**Test For Weak Transport Layer Security**
- [ ] Test for DROWN weakness on SSLv2 protocol
- [ ] Test for POODLE weakness on SSLv3 protocol
- [ ] Test for BEAST weakness on TLSv1.0 protocol
- [ ] Test for FREAK weakness on export cipher suites
- [ ] Test for Null ciphers
- [ ] Test for NOMORE weakness on RC4
- [ ] Test for LUCKY 13 weakness on CBC mode ciphers
- [ ] Test for CRIME weakness on TLS compression
- [ ] Test for LOGJAM on DHE keys
- [ ] Ensure the digital certificates should have at least 2048 bits of key length
- [ ] Ensure the digital certificates should have at least SHA-256 signature algorithm
- [ ] Ensure the digital certificates should not use MDF and SHA-1
- [ ] Ensure the validity of the digital certificate
- [ ] Ensure the minimum key length requirements
- [ ] Look for weak cipher suites
- **BUSINESS LOGIC TESTING**
**Test For Business Logic**
- [ ] Identify the logic of how the application works
- [ ] Identify the functionality of all the buttons
- [ ] Test by changing the numerical values into high or negative values
- [ ] Test by changing the quantity
- [ ] Test by modifying the payments
- [ ] Test for parameter tampering
**Test For Malicious File Upload**
- [ ] Test malicious file upload by uploading malicious files
- [ ] Test malicious file upload by putting your IP address on the file name
- [ ] Test malicious file upload by right to left override
- [ ] Test malicious file upload by encoded file name
- [ ] Test malicious file upload by XSS payload on the file name
- [ ] Test malicious file upload by RCE payload on the file name
- [ ] Test malicious file upload by LFI payload on the file name
- [ ] Test malicious file upload by RFI payload on the file name
- [ ] Test malicious file upload by SQL payload on the file name
- [ ] Test malicious file upload by other injections on the file name
- [ ] Test malicious file upload by Inserting the payload inside of an image by the bmp.pl tool
- [ ] Test malicious file upload by uploading large files (leads to DOS)
- **CLIENT SIDE TESTING**
**Test For DOM Based Cross Site Scripting**
- [ ] Try to identify DOM sinks
- [ ] Build payloads to that DOM sink type
**Test For URL Redirect**
- [ ] Look for URL redirect parameters
- [ ] Test for URL redirection on domain parameters
- [ ] Test for URL redirection by using a payload list
- [ ] Test for URL redirection by using a whitelisted word at the end
- [ ] Test for URL redirection by creating a new subdomain with the same as the target
- [ ] Test for URL redirection by XSS
- [ ] Test for URL redirection by profile URL flaw
**Test For Cross Origin Resource Sharing**
- [ ] Look for “Access-Control-Allow-Origin” on the response
- [ ] Use the CORS HTML exploit code for further exploitation
**Test For Clickjacking**
- [ ] Ensure “X-Frame-Options” headers are enabled
- [ ] Exploit with iframe HTML code for POC
- **OTHER COMMON ISSUES**
**Test For No-Rate Limiting**
- [ ] Ensure rate limiting is enabled
- [ ] Try to bypass rate limiting by changing the case of the endpoints
- [ ] Try to bypass rate limiting by adding / at the end of the URL
- [ ] Try to bypass rate limiting by adding HTTP headers
- [ ] Try to bypass rate limiting by adding HTTP headers twice
- [ ] Try to bypass rate limiting by adding Origin headers
- [ ] Try to bypass rate limiting by IP rotation
- [ ] Try to bypass rate limiting by using null bytes at the end
- [ ] Try to bypass rate limiting by using race conditions
**Test For EXIF Geodata**
- [ ] Ensure the website is striping the geodata
- [ ] Test with EXIF checker
**Test For Broken Link Hijack**
- [ ] Ensure there is no broken links are there
- [ ] Test broken links by using the blc tool
**Test For SPF**
- [ ] Ensure the website is having SPF record
- [ ] Test SPF by nslookup command
**Test For Weak 2FA**
- [ ] Try to bypass 2FA by using poor session management
- [ ] Try to bypass 2FA via the OAuth mechanism
- [ ] Try to bypass 2FA via brute-forcing
- [ ] Try to bypass 2FA via response manipulation
- [ ] Try to bypass 2FA by using activation links to login
- [ ] Try to bypass 2FA by using status code manipulation
- [ ] Try to bypass 2FA by changing the email or password
- [ ] Try to bypass 2FA by using a null or empty entry
- [ ] Try to bypass 2FA by changing the boolean into false
- [ ] Try to bypass 2FA by removing the 2FA parameter on the request
**Test For Weak OTP Implementation**
- [ ] Try to bypass OTP by entering the old OTP
- [ ] Try to bypass OTP by brute-forcing
- [ ] Try to bypass OTP by using a null or empty entry
- [ ] Try to bypass OTP by response manipulation
- [ ] Try to bypass OTP by status code manipulation
<p align="center">
<img width="1200" height="370" src="https://github.com/Hari-prasaanth/Web-App-Pentest-Checklist/blob/main/Images/Title.png">
</p>
<img align="left" width="370" height="370" src="https://github.com/Hari-prasaanth/Web-App-Pentest-Checklist/blob/main/Images/Cat.png">
<img align="right" width="420" height="590" src="https://github.com/Hari-prasaanth/Web-App-Pentest-Checklist/blob/main/Images/Subcat.png">
### Shaped by: Hariprasaanth R
**Reach Me: [LinkedIn](https://www.linkedin.com/in/hariprasaanth) [Portfolio](https://hariprasaanth.blogspot.com/) [Github](https://github.com/Hari-prasaanth)**