Checklist

  • URL bruteforce to discover accessible files or pages

    • URL bruteforce for pages (.html, .php, .jsp, .do, .js)

      • .stm, .shtm or .shtml

        • SSI

      • Bypass authentication by navigating directly to the pages

      • Hidden administrative pages or control panels

      • Common frameworks (Wordpress, Joomla, Laravel, Apache control panel, PHP)

      • Default/Simple access credentials

    • URL bruteforce for folders (can be used for storing and accessing payloads)

    • URL bruteforce for files (set extension as .txt, .bak, .json, .conf, .cnf)

      • Check for backup files

        • Check for interesting files

          • robots.txt

          • htaccess

    • Check for git repositories

  • Fingerprint web application

    • Check HTTP headers and cookies for server/webapp specific strings

    • Check pages

      • Check header/footer

      • Check comments

      • Check for exposed licenses or other framework specific files

        • Try to make the server display an error page

          • 404 Error - navigate to a non existing page

          • 403 Error - navigate to a protected resource

        • Try causing an error and see if the application displays a stack trace

        • Enumerate the underlying server by checking the page format and extension

  • Search possible vulnerabilities

    • Custom application on common framework

      • Search for CVEs for given framework and version

      • Potential vulnerable plugins

      • Default credentials

    • Commercial/Open Source webapp

      • Search for known CVEs

      • Search for project repository on GitHub/GitLab

        • Default configurations

        • If the application is deployed via container such as Docker it may contain plaintext credentials for the web server or database

  • Manual testing

    • Check for vulnerable libraries

    • Check for requests to other pages or services

    • Check requests for plaintext credentials or session tokens

    • Login forms

      • Check if its is possible to create a new user

        • Enumerate password requirements to create custom dictionaries for bruteforce attacks (i.e. allowed characters, max and min length)

        • Enumerate username types (email, free value, auto-generated by the application)

      • Remember me functionality

        • XSS to session hijack

      • Exploitable password reset functionality

        • Input field allows to enumerate usernames or emails

        • Arbitrary password reset to known values

      • Default credentials

      • Guessable passwords such as the application name or easy words such as admin, pass, letmein, ...

      • Check if the failed login message allows to detect existing users

      • Password bruteforce

        • Scrape the site to create a custom dictionary

    • Check input and request fields. Remember to check both on client side by interacting with the application and server side by replicating the request with proxy tools such as Burp Suite or OWASP ZAP

      • Check if input fields are managed by third-party components such as rich text editors

        • Check for CVEs and/or custom bypass techniques

      • SQL Injection

        • Retrieve credentials and hashes

        • Enumerate type and version of DB for possible CVEs

          • Code Execution

          • Arbitrary file read/write

      • XSS

      • SSTI

      • RCE

        • Reverse shell

        • Arbitrary file read/write

      • RFI

        • Upload and execute a reverse shell

        • Upload and execute a webshell

      • LFI

        • Enumerate underlying OS by reading typical files (/etc/passwd or C:\\boot.ini)

        • Read arbitrary files

        • Trigger the execution of payloads loaded by exploiting other services or a vulnerable upload functionality

      • Email fields

        • SMTP injection to user enumeration

      • Fields with non-standard inputs

        • Regex vulnerabilities

        • XPath injection

        • Fields that allow to send commands to the underlying machine

    • Check for upload functionality

      • Upload webapp packages for installation (war, php, .net,...)

      • Weak file restrictions

      • File upload functionality delegated to third-party library

        • Check for known CVEs

      • Arbitrary file upload

      • Vulnerabilities in interpreted file names

        • SQL Injection

        • RCE

        • SSI

      • XXE

        • SSRF

        • Exfiltrate arbitrary files

Last updated