Infrastructure & DevOps Testing

Prior to testing the application itself, our team of researchers will conduct a comprehensive assessment of the security measures in place for the cloud infrastructure hosting the application, as well as any supporting technology implemented as part of Development Operations.

Infrastructure & DevOps Testing

Reverse Proxy Testing

Abusing Hop Headers

Summary - Adding known Hop-by-Hop Headers to the "Connection:" header values can force misconfigured reverse-proxy servers and/or load balancers to remove these Hop-by-Hop Headers, producing unpredictable responses.

Goal(s):

  • Bypass access controls
  • Fingerprint back-end technology/services
  • Infer valuable information about how the application processes requests.
  • Produce error messages
  • Bypass WAF (or other defense mechanisms)

Web Cache Poisoning

Summary - Web Cache Poisoning occurs when the attacker forces the web cache to store malicious content and serve that malicious content to victim clients. Web Cache Poisoning is more a means of delivering attacks instead of an attack itself, and can be used to build impact for vulnerabilities like XSS.

Goal(s):

  • Force the application to send a response that includes a dangerous payload (Ex: XSS).
  • Cache the malicious response and force the victim to access the malicious response from the web cache.

Web Cache Deception

Summary - Web Cache Deception occurs when the attacker forces the web cache to store sensitive content belonging to another user in the cache, allowing the attacker to retreive that sensitive data.

Goal(s):

  • Access the sensitive information of other users by forcing the web cache to store and serve a page with sensitive data.

HTTP Request Smuggling

Summary - HTTP Request Smuggling occurs when the attacker sends a specially crafted request that causes the front-end proxies and back-end servers to desynchronize. This vulnerability occurs when the front-end proxies interpret the request as a single request while the back-end servers interpret it as two separate requests (or vice versa).

Goal(s):

  • Byass front-end security controls (Ex: Access /admin endpoint that would normally return a 403).
  • Reveal changes the front-end makes to incoming requests.
  • Capture the requests of other users.
  • Increase the impact of reflected XSS by using HTTP request smuggling to deliver the XSS payload.
  • Increase the impact of an internal open-redirect to a wide-open redirect.
  • Leverage HTTP request smuggling to perform web cache poisoning/deception.

H2C Smuggling

Summary - HTTP/2 cleartext (h2c) is a variant of the HTTP/2 protocol that doesn't use encryption, allowing for faster communication but without the security benefits of HTTPS. It's generally used in situations where security isn't a primary concern, although its use is less recommended due to potential vulnerabilities.

Using H2C Smuggling, the attacker exploits a misconfiguration in the Reverse Proxy to establish a malicious H2C connection. This connection allows the attacker to bypass security controls implemented in the reverse proxy, most notably Access Controls and Web Application Firewall (WAF) Rules.

Goal(s):

  • Bypass security controls (Ex: Access /admin endpoint that would normally return a 403).
  • Bypass Web Application Firewall (WAF) Rules
  • Access Internal/Privileged Web Applications
  • Reveal changes the front-end makes to incoming requests.
  • Capture the requests of other users.
  • Increase the impact of reflected XSS by using HTTP request smuggling to deliver the XSS payload.
  • Increase the impact of an internal open-redirect to a wide-open redirect.
  • Leverage HTTP request smuggling to perform web cache poisoning/deception.

XSLT Server-Side Injection

Summary - Extensible Stylesheet Language Transformations (XSLT) is a programming language used for transforming and manipulating XML documents into different formats, such as HTML, text, or other XML structures. It enables developers to define templates and rules to extract and rearrange data from XML documents, facilitating the conversion of data between different representations.

The most used frameworks are: Libxslt (Gnome), Xalan (Apache) and Saxon (Saxonica).

If an attacker is able to inject malicious XSL tags into a response from a web application that uses XSLT, they can exploit this mechanism to access sensitive files or even execute malicious commands on the target server.

Goal(s):

  • Force the target server to make unintended HTTP requests, resulting in a Server-Side Request Forgery (SSRF)
  • Read the contents of sensitive files on the target server
  • Execute arbitrary commands on the target server, gaining Remote Code Execution (RCE)

Edge Side Inclusion (ESI) Injection

Summary - Edge-Side Includes (ESI) is a web acceleration standard that enables dynamic content assembly at the edge of a content delivery network (CDN). It allows different components of a web page to be fetched and combined in real-time from various sources, improving page load times and reducing the load on the origin server.

Edge Side Includes (ESI) requests are processed by a content delivery network (CDN) server, specifically at the Load Balancers of the CDN. If an attacker is able to inject an ESI element into a response from a web application that uses ESI, they can exploit this mechanism to access sensitive files or even execute malicious commands on the target server.

Goal(s):

  • Steal valid cookies from a target victim to gain privilege escalation and/or unauthorized access to the victim's account
  • Read Environmental Variables used on the target server
  • Read the contents of sensitive files on the target server
  • Execute arbitrary commands on the target server, gaining Remote Code Execution (RCE)

Host Header Poisoning

Summary - The HTTP Host Header is used by web servers, reverse proxies, and load balancers to route HTTP requests sent to an IP address to a specific application identified by an FQDN. Misconfigurations in how the HTTP Host Header is handled can be exploited in a variety of ways.

Goal(s):

  • Discover hidden/internal applications.
  • Leverage misconfigurations to execute a web cache poisoning attack.
  • Find buisness logic flaws and/or authentication bypass vulnerabilities.
  • Leverage misconfigurations to execute a Server-Side Request Forgery (SSRF) attack.
  • Client-side vulnerabilities resulting from a reflected host header (XSS, SSTI, HTMLi, etc.)
  • Server-side injection vulnerabilities resulting from the host header being passed to database queries (SQLi, NoSQLi, etc.)

IP Address Spoofing

Summary - Most reverse proxies capture the IP Address of the client and use that value in some way. In same cases, the proxy will also use header values or other sources to modify the value of the client's IP in some way. If an attacker is able to manipulate this behavior and control their Remote Socket IP Address within the context of the application, they can cause unexpected behavior and potentially bypass security controls.

Goal(s):

  • Bypass brute-force restrictions based on IP Address
  • Access privileged areas within the application restricted by IP Address
  • Access internal applications restricted by IP Address

Infrastructure & DevOps Testing

Cloud-Specific Testing

AWS S3 Bucket Misconfiguration

Summary - Amazon S3 buckets are scalable and secure storage containers in Amazon Web Services that store and manage data, files, and objects, accessible via unique URLs.

Goal(s):

  • Read sensitive data stored on the S3 bucket
  • Upload malicious files to the S3 bucket
  • Modify the contents of critical data stored on the S3 bucket
  • Delete critical data/files stored on the S3 bucket
  • Exfiltrate backup files containing sensitive data
  • Enumerate hidden S3 bucket names

AWS CloudFront Misconfiguration

Summary - AWS CloudFront is a content delivery service provided by Amazon Web Services in collaboration with Cloudflare, designed to distribute and accelerate content, videos, applications, and APIs to users globally with low latency and high transfer speeds.

Goal(s):

  • Deliver content from a malicious AWS CloudFront instance owned by the attacker, taking advantage of an old DNS record to gain a Subdomain Takeover.

AWS IAM/STS Misconfiguration

Summary - AWS IAM (Identity and Access Management) is a service that controls access to AWS resources by managing users, groups, permissions, and authentication. AWS STS (Security Token Service) is a service that provides temporary credentials for accessing AWS resources, helping to enhance security by minimizing the exposure of long-term credentials. AWS IAM sets up user identities and their permissions, while AWS STS issues temporary security tokens to these authenticated users, ensuring secure and limited access to resources without requiring long-term credentials.

Goal(s):

  • Enumerate cross account roles and users without proper authentication/authorization

AWS Elastic Beanstalk Misconfiguration

Summary - AWS Elastic Beanstalk is a Platform-as-a-Service (PaaS) that simplifies the deployment and management of web applications and services. It automatically handles the underlying infrastructure, such as provisioning, scaling, load balancing, and application health monitoring, allowing developers to focus solely on their code.

Goal(s):

  • Gain public access to internal Elastic Beanstalk instances
  • Bypass security/access controls configured through the Elastic Beanstalk
  • Access application code stored on public S3 buckets in Elastic Beanstalk applications

AWS API Gateway Misconfiguration

Summary - AWS API Gateway is a managed service that enables the creation, deployment, and management of RESTful APIs to securely connect and expose backend services and functions for applications.

Goal(s):

  • Bypass restrictions on API endpoints by abusing logic flaws in the IAM Syntax for access controls

AWS Cognito Misconfiguration

Summary - AWS Cognito is a fully managed service that provides authentication, authorization, and user management for web and mobile applications. It allows developers to easily add user sign-up and sign-in functionality, as well as integrate with third-party identity providers like Google, Facebook, and Amazon.

Goal(s):

  • Enumerate Identity Pool IDs, which can be relatively easy to find, to exploit IAM roles assigned to both unauthenticated users and authenticated users accessing the Identity Pool, allowing them to abuse the associated privileges.

AWS Exposed Sensitive DocumentDB

Summary - AWS DocumentDB is a fully managed, scalable NoSQL database service compatible with MongoDB, designed to provide high performance and availability for storing, querying, and managing document-oriented data.

Goal(s):

  • Establish an unauthorized connection to a misconfigured instance of DocumentDB

AWS EC2 Misconfiguration

Summary - An AWS EC2 (Elastic Compute Cloud) instance is a virtual server within Amazon Web Services that allows users to rent scalable computing resources, such as processing power and memory, to run applications and services on-demand in the cloud.

Goal(s):

  • Download the Amazon Machine Image (AMI) file of a misconfigured private EC2
  • Brute-force Public URL Templates to potentially bypass security controls
  • Enumerate private EC2 instances misconfigured with a public IP address

AWS SNS Misconfiguration

Summary - AWS SNS (Simple Notification Service) is a fully managed messaging service that enables the sending of notifications and alerts to a variety of endpoints, such as email, SMS, and application endpoints.

Goal(s):

  • Bypass access control restrictions to Publish or Subscribe to an internal SNS topic

AWS RDS Misconfiguration

Summary - AWS RDS (Relational Database Service) is a cloud service that simplifies database management by handling tasks like setup, scaling, and maintenance for various relational database engines, letting users concentrate more on building applications.

Goal(s):

  • Establish an unauthorized connection to a misconfigured RDS instance
  • Enumerate and download internal/sensitive RDS snapshots

Infrastructure & DevOps Testing

Web Server Testing

Common Vulnerabilities and Exposures (CVE's)

Summary - CVE stands for Common Vulnerabilities and Exposures. It is a system used to identify and reference publicly known information security vulnerabilities and exposures. In essence, CVEs are used to track and catalog vulnerabilities in various software systems, hardware devices, and other technological components that can potentially be exploited by attackers. Of the over 200,000 registered CVE's, thousands are known to effect common web applications used today.

Goal(s):

  • Unauthorized access to systems or networks.
  • Theft of sensitive data, such as personal and financial information.
  • Execution of ransomware to encrypt victim's data and demand a ransom.
  • Gain control over compromised systems for malicious purposes.
  • Escalation of privileges within a compromised system.
  • Launch distributed denial of service (DDoS) attacks to disrupt services.
  • Delivery of malware payloads through vulnerabilities.
  • Establishment of stealthy backdoors for persistent access.
  • Access to privileged accounts and critical information.
  • Disruption of systems through crashes or instability.
  • Reconnaissance of target networks for planning further attacks.
  • Propagation to interconnected systems for wider influence.
  • Financial gain through unauthorized access to financial systems.
  • Theft of intellectual property and proprietary software.
  • Espionage for political, economic, or military intelligence.

Exposed Configuration Files

Summary - Configuration files are employed by web servers to define parameters and behaviors, allowing administrators to tailor the server's operations and establish security measures for how the server interfaces with its surroundings. Misconfigurations on the web server can cause these files to be publicly accessible, providing a wealth of valuable information to attackers.

Goal(s):

  • Exfiltrate database connection strings or credentials from database configuration files like application.properties
  • Read sensitive data stored in environmental variable files like env.js or .env
  • Exploit logic flaws to bypass security controls implemented in the web server's routing configured in files like httpd.conf or .htaccess
  • Files with encryption keys, certificates, and decryption configurations in files like keystore.jks or openssl.cnf

Server Side Includes (SSI) Injection

Summary - Server Side Includes (SSI) is a web server technology that enables the embedding of dynamic content within web pages. It allows for the inclusion of external files or data into the HTML output, facilitating easier site-wide updates and content reuse.

If an attacker is able to injection HTML content into a web application that uses SSI, they can exploit this mechanism to access sensitive files or even execute malicious commands on the target server.

Goal(s):

  • Read or set Environmental Variables used on the target server
  • Read the contents of sensitive files on the target server
  • Execute arbitrary commands on the target server, gaining Remote Code Execution (RCE)

Information Disclosure

Summary - Some web servers are configured with custom rulesets that can cause information valuable to an attacker to leak in HTTP responses returned to the client.

Goal(s):

  • Exfiltrate a fraction of the directory structure and source code through stack traces
  • Exfiltrate hard-coded credentials from source code
  • Identify version numbers associated with known CVE's
  • Exfiltrate sensitive or valuable information through verbose custom error messaging

Infrastructure & DevOps Testing

Domain Name System (DNS) Testing

DNS Rebinding

Summary - DNS rebinding is a technique where an attacker tricks a victim's browser into making requests to a malicious website's domain that resolves to the attacker's controlled IP address initially and later changes to a victim's local network address. This enables the attacker to bypass the browser's same-origin policy and potentially interact with local network devices or services.

Goal(s):

  • Bypass the same-origin policy, allowing an attacker to access or manipulate resources on a victim's local network, potentially compromising security and privacy.
  • Exploit vulnerabilities in network-connected devices or services running on the victim's network.

Subdomain Takeover

Summary - A subdomain takeover attack occurs when an attacker identifies a dormant or unclaimed subdomain pointing to a third-party service (like a cloud provider), and then gains control of that service. By doing so, the attacker can potentially manipulate the subdomain's content or abuse its trust relationships for malicious purposes.

Goal(s):

  • Leverage the compromised subdomain to carry out sophisticated and highly effective phishing campaigns
  • Inject malicious content into any web application that utilizes the subdomain
  • Steal valid session cookies from user accounts on any web application that utilizes the compromised subdomain
  • Register a malicious MX Record to an external mail server to carry out sophisticated and highly effective phishing campaigns

Core Application Testing

During this phase of the evaluation, our researchers will test for the vulnerability classes that often come to mind when most people envision attacks on a web application.

Using both manual testing and custom automation scripts, our researchers quickly and effectively build a map of possible attack vectors against the application. These attack vectors are thoroughly fuzzed, ensuring they are not vulnerable to the wide range of exploits covered in this phase of testing.

Core Application Testing

Global Application Config Testing

Content Security Policy (CSP)

Summary - A Content Security Policy (CSP) defines rules a browser will following to determine what resources (images, frames, JavaScript, etc.) can be loaded and where they can be loaded from. Misconfigurations can be abused and/or exploited.

Goal(s):

  • Identify misconfigurations in the CSP that open up the possibility of exploiting other vulnerabilities.
  • Identify misconfigurations that can be exploited directly (Ex: XSS).

Cross-Origin Resource Sharing (CORS)

Summary - CORS is used to control what resources outside pages can access from a specific FQDN. If misconfigured, an attacker can build a malicous webpage that uses JavaScript to access sensitive data and relay that data (via GET request) to the attacker's server. The sensitive data can then be read in the logs of the attacker's server.

Goal(s):

  • Access sensitive data by building a malicious webpage that sends a request using the victim's cookie to a vulnerable application.
  • Exploit lax CORS settings to launch CSRF attacks, tricking authenticated users into executing unwanted actions on a different domain.

Dependency Confusion / Abuse

Summary - Dependency confusion or abuse is a issue where attackers exploit the naming conventions of public and private package repositories to trick developers into unknowingly downloading malicious code or unauthorized packages during software development. This occurs when a developer's local environment fetches a dependency from a public repository despite intending to use an internal package, potentially leading to compromised software supply chains.

Goal(s):

  • Create a malicious package with the same name as an internal dependency and upload it to a public repository for developers to install unknowingly.
  • Craft a package with a version number resembling a legitimate one to exploit version range configurations.
  • Register similar domain or package names to exploit developer typos.
  • Create packages with names resembling legitimate dependencies to deceive developers.
  • Develop a package that appears harmless but depends on vulnerable packages for future attacks.
  • Use social engineering tactics like phishing to extract sensitive information.
  • Compromise a software supplier to inject malicious code into widely-used packages.
  • Design packages to steal sensitive credentials in the execution environment.
  • Craft packages for data theft and exfiltration.
  • Exploit vulnerabilities in introduced packages for remote code execution.

JSON Web Token (JWT) Misconfiguration

Summary - JSON Web Tokens (JWTs) are a compact and self-contained way to represent information between parties as a JSON object. They are commonly used for authentication and authorization in web applications, where the token contains claims that provide information about the user and their permissions.

Goal(s):

  • Attempt to change the signing algorithm in the token header to make it appear unsigned, potentially gaining unauthorized access.
  • Craft a token with a manipulated or invalid signature to exploit weak signature validation.
  • Exploit misconfigured token validation to extract the private key used for signing tokens, enabling the generation of valid but malicious tokens.
  • Manipulate the token payload to alter user roles or permissions for privilege escalation.
  • Modify the token's expiration time to extend its validity indefinitely.
  • Change the audience claim to target a different resource or service for unauthorized access.
  • Forge the issuer claim to impersonate a trusted entity and gain trust from the system.
  • Tamper with data within the token payload to perform unauthorized actions or access sensitive information.
  • Reuse a valid token multiple times for replay attacks, potentially causing unintended actions or repeated data access.
  • Exploit weak input validation during token processing to inject malicious data into the payload, leading to potential code execution or other vulnerabilities in the application.

Missing Security Headers

Summary - Security headers are HTTP response headers that web servers use to enhance the security of web applications. These headers provide instructions to the browser on how to handle various security-related aspects, such as content loading, script execution, and communication policies, helping to mitigate potential vulnerabilities and attacks like cross-site scripting (XSS) and clickjacking.

Goal(s):

  • Embed the web application within an iframe on a malicious site due to the absence of the X-Frame-Options header.
  • Take advantage of missing X-Content-Type-Options headers to perform content sniffing, potentially executing unexpected scripts or content.
  • Execute actions on behalf of authenticated users without their consent due to missing CSRF protection headers like SameSite and X-Requested-With.
  • Manipulate serialized data by exploiting the absence of security headers like Content-Type, potentially leading to remote code execution.
  • Gather information about the web application's technologies, infrastructure, or vulnerabilities because of the lack of security headers.
  • Set session cookies or hijack user sessions by exploiting missing session management headers.
  • Trick users into downloading malicious files by manipulating responses due to the absence of headers like Content-Disposition.
  • Intercept and tamper with communication between the user and the web application by exploiting the lack of HTTP Strict Transport Security (HSTS) headers.
  • Cause outdated or malicious content to be cached by intermediaries or the user's browser by manipulating responses due to missing Cache-Control or Pragma headers.

Core Application Testing

Client-Side Codebase Testing

Content Injection

Summary - Content injection refers to a type of web vulnerability where attackers manipulate a website's content by injecting malicious code or data into the site's input fields, comments, or other interactive elements. This can lead to the unauthorized display of altered content, using malicious URLs for phishing sophisticated attacks, or the dissemination of harmful links or scripts to unsuspecting users.

Goal(s):

  • Modify web page content to deface the user interface, display offensive material, or deliver political or ideological messages.
  • Craft deceptive messages or alerts within the injected content to trick users into taking malicious actions.
  • Inject false information or fake news articles to spread disinformation, deceive users, or manipulate public opinion.
  • Impersonate a legitimate brand or website to potentially damage the reputation of the target organization.
  • Modify web page content to manipulate user decisions, encourage unwanted actions, or promote unethical behavior.
  • Alter or replace legitimate content with fraudulent or misleading information, potentially causing confusion or harm.

Reflected Cross-Site Scription (XSS)

Summary - An attacker forces their victim to execute malicious JavaScript they did not intend to execute. This malicious JavaScript code is injected through a user-controlled input vector and later reflected in the vulnerable server's response.

Reflected XSS attacks are most commonly delivered through a malicious link either through a Phishing or Watering Hole attack.

Goal(s):

  • Steal users' session cookies to impersonate them and gain unauthorized access.
  • Phish for login credentials through injected fake login forms.
  • Redirect users to phishing or malicious sites for further exploitation or data theft.
  • Capture keystrokes to record sensitive information like login credentials or credit card numbers.
  • Overlay legitimate web elements with malicious content to trick users into clicking on unexpected actions.
  • Craft deceptive messages or alerts to trick users into taking actions that benefit the attacker.

Client-Side Prototype Pollution (CSPP)

Summary - Client-side prototype pollution is a vulnerability where an attacker manipulates JavaScript objects' prototypes in a web application to inject malicious properties or behaviors, potentially leading to unauthorized data access or code execution. This occurs when a web application does not properly validate or sanitize user-supplied data that affects the prototype chain of JavaScript objects.

Learn More

Goal(s):

  • Modify authentication-related objects or functions to bypass login checks or gain unauthorized access.
  • Steal or impersonate user sessions by manipulating client-side objects, accessing sensitive user data, or performing actions on their behalf.
  • Inject malicious scripts into the DOM via prototype pollution to execute arbitrary code within the context of the target website, potentially leading to data theft or session hijacking.
  • Trigger denial-of-service (DoS) conditions by modifying critical client-side objects, causing application crashes or unresponsiveness.
  • Modify client-side elements to deface the user interface, potentially causing reputational damage to the target website or application.
  • Expose sensitive information, such as API keys, credentials, or proprietary data, by manipulating client-side objects.
  • Elevate user privileges by modifying client-side objects related to user roles or permissions, potentially gaining unauthorized access to admin functionalities.
  • Deliver client-side malware to users' devices by injecting and executing malicious scripts through prototype pollution.
  • Craft deceptive user interfaces or messages by manipulating client-side elements, potentially leading to phishing attacks or tricking users into divulging sensitive information.

Client-Side Template Injection (CSTI)

Summary - Client-side template injection is a security vulnerability where untrusted user input is injected into templates processed on the client side, often resulting in the execution of unintended template code, manipulation of the user interface, and potential data exposure. This occurs when the application fails to properly validate or sanitize user input before using it in template rendering, allowing attackers to control template expressions and their outcomes.

Goal(s):

  • Exploit CSTI vulnerabilities to extract sensitive data from the client-side, such as user information, configuration details, or proprietary data.
  • Inject malicious scripts into templates to execute code within the context of the target website, potentially leading to data theft or further attacks.
  • Trigger denial-of-service (DoS) conditions by injecting templates that disrupt the functionality of the target application or website.
  • Modify templates to deface the user interface, potentially causing reputational damage to the target website or application.
  • Inject templates to expose sensitive information, such as API keys, credentials, or proprietary data, to attackers.

Dangling Markup

Summary - A dangling markup refers to markup elements, such as HTML or XML tags, that exist in a web page's source code but do not result in any visible content on the page when rendered. These unused or hidden markup elements might lead to unintended consequences, including misinterpretation by web crawlers or search engines.

A dangling markup attack is a type of web vulnerability where an attacker injects malicious content into a web page's markup that remains invisible to users but can be parsed by search engines or other automated processes, leading to unintended content indexing or manipulation of search results. This can be exploited to deceive search engines or affect how a website appears in search results.

Goal(s):

  • Exploit improperly closed HTML tags or incomplete markup to inject malicious code into the DOM, potentially leading to cross-site scripting (XSS) vulnerabilities.
  • Insert deceptive or malicious content that can trick users into taking unintended actions, such as disclosing sensitive information or clicking on harmful links.
  • Manipulate dangling markup to alter the presentation of web pages, potentially defacing the user interface or causing content to render incorrectly.
  • Attempt to inject scripts or payloads into the DOM through dangling markup, allowing for the execution of arbitrary code within the context of the target application.
  • Abuse incomplete markup to disrupt the rendering of web pages, potentially causing confusion or discouraging users from interacting with the application.
  • Inject malicious links or redirect users to malicious websites by taking advantage of dangling markup vulnerabilities.

DOM-Based Cross-Site Scription (XSS)

Summary - An attacker forces their victim to execute malicious JavaScript they did not intend to execute. This malicious JavaScript code is often injected through "Sinks", or methods that capture user-controlled input and feed that data to client-side JavaScript during runtime, and delivered to a separate JavaScript method that allows for malicious execution.

DOM-Based XSS attacks are most commonly delivered through a malicious link either through a Phishing or Watering Hole attack.

Goal(s):

  • Steal sensitive user data, such as cookies or personally identifiable information, by exploiting client-side JavaScript code.
  • Capture and misuse session tokens or authentication credentials stored in the Document Object Model (DOM), enabling attackers to impersonate users.
  • Redirect users to malicious or phishing websites through manipulation of the DOM, potentially exposing them to further exploitation.
  • Inject malicious content into the DOM, altering the presentation of web pages or spreading deceptive information.
  • Implement tracking mechanisms by injecting code into the DOM to monitor users' interactions and behaviors on the compromised page.
  • Modify or intercept data submitted through web forms by manipulating the DOM, potentially leading to unauthorized actions or data theft.
  • Tamper with the DOM to manipulate user interface elements, potentially causing users to perform actions they did not intend.
  • Attempt to exploit vulnerabilities in client-side libraries or scripts through DOM manipulation, potentially compromising the user's system or browser.
  • Capture and transmit user login credentials entered on compromised pages to the attacker-controlled server.
  • Inject phishing content into the DOM to trick users into divulging sensitive information or taking malicious actions.
  • Manipulate the DOM to perform actions on behalf of the user, potentially leading to unauthorized operations or data manipulation.
  • Inject and execute malicious scripts in the DOM, potentially leading to the delivery of client-side malware to users' devices.

DOM-Based Open Redirect

Summary - A DOM-based open redirect is a web security vulnerability that arises when a web application's client-side JavaScript code modifies the Document Object Model (DOM) to redirect users to an external, untrusted URL supplied by an attacker. By manipulating the DOM, attackers can trick users into visiting malicious websites or performing actions they didn't intend, potentially leading to phishing attacks or other unauthorized activities.

Goal(s):

  • Craft malicious URLs that manipulate the DOM to redirect users to phishing websites or malicious domains.
  • Abuse open redirect vulnerabilities in client-side applications to perform client-side attacks or facilitate further exploitation.
  • Exploit open redirects to disguise phishing attacks, making malicious URLs appear as legitimate ones.
  • Manipulate user interfaces to induce user interactions that trigger a DOM-Based Open Redirect, potentially leading to malicious actions or information leakage.

Client-Side JavaScript Injection

Summary - An attacker forces their victim to execute malicious JavaScript they did not intend to execute without writing to the DOM. This malicious JavaScript code is often injected through "Sinks", or methods that capture user-controlled input and feed that data to client-side JavaScript during runtime, and delivered to a separate JavaScript method that evaluates the user-controlled string as JavaScript code.

Client-Side JavaScript Injection attacks are most commonly delivered through a malicious link either through a Phishing or Watering Hole attack.

Goal(s):

  • Steal sensitive user data, such as cookies or personally identifiable information, by exploiting client-side JavaScript code.
  • Capture and misuse session tokens or authentication credentials stored in the Document Object Model (DOM), enabling attackers to impersonate users.
  • Redirect users to malicious or phishing websites through manipulation of the DOM, potentially exposing them to further exploitation.
  • Inject malicious content into the DOM, altering the presentation of web pages or spreading deceptive information.
  • Implement tracking mechanisms by injecting code into the DOM to monitor users' interactions and behaviors on the compromised page.
  • Modify or intercept data submitted through web forms by manipulating the DOM, potentially leading to unauthorized actions or data theft.
  • Tamper with the DOM to manipulate user interface elements, potentially causing users to perform actions they did not intend.
  • Attempt to exploit vulnerabilities in client-side libraries or scripts through DOM manipulation, potentially compromising the user's system or browser.
  • Capture and transmit user login credentials entered on compromised pages to the attacker-controlled server.
  • Inject phishing content into the DOM to trick users into divulging sensitive information or taking malicious actions.
  • Manipulate the DOM to perform actions on behalf of the user, potentially leading to unauthorized operations or data manipulation.
  • Inject and execute malicious scripts in the DOM, potentially leading to the delivery of client-side malware to users' devices.

PostMessage Vulnerabilities

Summary - postMessage() is a method in JavaScript that enables communication between different windows or frames within a web application, even if they are from different origins (domains). It allows cross-origin communication by sending messages along with target origin information, facilitating data sharing and coordination between different parts of a web application.

Goal(s):

  • Craft malicious messages to target vulnerable PostMessage listeners and execute arbitrary code on the recipient's side.
  • Exploit overly permissive origins in the targetOrigin parameter to allow messages from unintended or malicious sources.
  • Attempt to flood the PostMessage channel with a high volume of messages to disrupt legitimate communication or cause performance issues.
  • Manipulate the source property of PostMessage events to impersonate trusted senders or inject unauthorized messages.
  • Bypass inadequate message validation or sanitization on the recipient's side to inject malicious scripts or content.
  • Exploit wildcard * origins in targetOrigin to bypass origin checks entirely, potentially leading to cross-site scripting (XSS) or other attacks.
  • Abuse misconfigured message handling logic to escalate privileges, access restricted resources, or perform unauthorized actions.
  • Utilize misconfigured listeners to extract sensitive information from the recipient's environment or the parent window.
  • Launch phishing attacks by sending deceptive messages to trick users into taking unintended actions, such as revealing sensitive data or granting permissions.
  • Manipulate the data parameter in messages to inject malicious payloads or payloads with encoded attacks.
  • Exploit open redirect vulnerabilities by manipulating PostMessage URLs to redirect users to phishing or malicious sites.
  • Attempt to perform clickjacking by manipulating the PostMessage content to overlay legitimate user interfaces with deceptive content.
  • Exploit the lack of proper message filtering to inject unwanted or harmful content into the recipient's application.
  • Abuse PostMessage misconfigurations to establish a channel for data exfiltration or covert communication between a compromised client and an attacker-controlled server.

Information Disclosure

Summary - Sensitive information can inadvertently leak through client-side code in various ways, such as storing confidential data in the state or props of a React front end. Neglecting proper data handling practices could expose critical details to potential attackers, compromising the security of the application.

Goal(s):

  • Attackers can obtain names, addresses, and contact details, which are valuable for identity theft and various types of fraud.
  • Gaining access to bank balances and transaction histories can lead to financial fraud and unauthorized access to accounts.
  • Health data exposure can have severe privacy implications and may lead to identity theft, medical fraud, or discrimination.
  • Obtaining precise user location information can facilitate stalking, tracking, and other invasive activities, compromising user safety and privacy.
  • Accessing a user's browsing history allows attackers to gain insights into their interests, behaviors, and potential vulnerabilities.

Privileged Credentials Exposed

Summary - Sensitive information can be inadvertently exposed through client-side JavaScript files when developers embed secrets like API keys or passwords directly into the code, making them accessible to anyone who views the source. Additionally, insufficient input validation or inadequate security measures can enable attackers to manipulate JavaScript code to extract confidential data or launch attacks.

Goal(s):

  • Intercept and store user authentication data when transmitted without encryption.
  • Extract and misuse access keys from client-side code for unauthorized access.
  • Expose authorization tokens for unauthorized resource access.
  • Discover and misuse keys used for secure remote access.
  • Uncover and misuse cryptographic keys for malicious purposes.
  • Exploit exposed database access credentials for unauthorized data access.
  • Illegally transfer tokens for unauthorized access to resources.
  • Capture and misuse personal identification numbers (PINs) for unauthorized actions.
  • Exploit exposed biometric credentials for unauthorized access.

Insecure Data Storage

Summary - Insecure storage of data in client-side code, like storing credentials in the localStorage, can expose sensitive information to potential attackers as it's stored in plain text and is accessible through JavaScript. This makes it susceptible to theft or exploitation, compromising the security of user accounts or sensitive data.

Goal(s):

  • Storing sensitive data in JavaScript variables, which may persist in memory and be accessible to attackers through memory inspection or debugging.
  • Using custom data attributes in HTML elements to store sensitive data, which can be viewed or modified by attackers.
  • Passing sensitive data as URL parameters, potentially exposing it in browser history or logs.
  • Adding sensitive data as hidden form fields on web pages, which can be viewed or manipulated by attackers using browser tools.
  • Creating cookies with JavaScript that store sensitive data without securing it properly.
  • Using the Web Storage API (localStorage or sessionStorage) without encryption or access controls for sensitive information.
  • Storing sensitive data in client-side IndexedDB databases without proper access controls, enabling attackers to retrieve the data.
  • Encrypting sensitive data on the client-side without strong encryption or proper key management, making it vulnerable to decryption.

Denial of Service (DoS)

Summary - Modern web applications feature intricate front-end designs, involving distributed systems with asynchronous communication, which can inadvertently trigger unforeseen interactions exploited by attackers for malicious purposes. Attackers can exploit weaknesses in a web application's client-side code to disrupt its normal operation and gain unauthorized access, potentially causing the application to break or malfunction.

Goal(s):

  • Exploiting flaws in client-side scripts or improperly handled resources to cause excessive memory usage, slowing down or crashing the client's browser.
  • Introducing scripts that execute resource-intensive operations on the client's machine, such as infinite loops or heavy computations, leading to high CPU usage and unresponsiveness.
  • Injecting malicious code to trigger browser crashes or hangs, disrupting the user's browsing experience.
  • Opening a large number of tabs or pop-ups simultaneously to overwhelm the browser and cause it to become unresponsive.
  • Leveraging vulnerabilities in a specific browser to execute malicious code that degrades performance or causes the browser to crash.
  • Sending a large number of asynchronous requests to overload server resources, potentially causing service degradation or disruption.
  • Manipulating WebSocket connections to flood the server with excessive messages, consuming server resources.
  • Injecting malicious scripts into input fields or user-generated content, which can be executed by other users, leading to potential performance issues.
  • Forcing the client to download large, unnecessary files repeatedly, consuming bandwidth and potentially causing slow performance.

Core Application Testing

Server-Side Codebase Testing

Command Injection

Summary - Server-side command injection is a web vulnerability where attackers manipulate input data that's misinterpreted by server-side components, often prevalent in languages like PHP, Python, and CGI scripts, enabling the execution of unintended commands on the server.

Goal(s):

  • Inject malicious commands through user inputs to execute arbitrary code on the server.
  • Exfiltrate sensitive data from the server using command injection, such as database contents or configuration files.
  • Manipulate or delete files on the server by injecting commands, potentially disrupting operations or deleting critical files.
  • Gain unauthorized shell access to the server through command injection, allowing further exploration and control.
  • Elevate privileges on the server by exploiting vulnerabilities or misconfigurations, expanding control.
  • Overload the server with resource-intensive commands, causing unresponsiveness or crashes (Denial of Service).
  • Deliver and install malware on the server via command injection, compromising it and other systems.
  • Execute commands to scan the internal network, identifying other vulnerable systems.
  • Establish a reverse shell connection to the attacker's machine, enabling remote server control.
  • Corrupt or manipulate data within the application or database using command injection, causing data integrity issues.
  • Gather information about the server's configuration, running services, or user accounts by injecting commands.
  • Deface web pages by injecting commands, potentially damaging the target organization's reputation.

Stored Cross-Site Scripting (XSS)

Summary - Stored cross-site scripting (XSS) is a web security vulnerability where malicious scripts are injected into a website's permanent storage, like databases or comment sections, which are then served to users, causing the scripts to run in their browsers. This can lead to attackers stealing sensitive user data, session hijacking, or spreading malware through infected web pages.

Goal(s):

  • Steal session cookies to gain unauthorized access to accounts or sessions.
  • Harvest sensitive information like usernames, passwords, and credit card numbers from victims.
  • Perform unauthorized actions on behalf of users, such as changing account settings or making unauthorized purchases.
  • Create convincing phishing pages to trick users into revealing their credentials or personal information.
  • Capture keystrokes entered by victims, potentially obtaining sensitive data like passwords or credit card numbers.
  • Exploit browser vulnerabilities through injected scripts to compromise users' browsers or devices.

Blind Cross-Site Scripting (XSS)

Summary - Blind cross-site scripting (XSS) is a type of web vulnerability where malicious scripts are injected into a web application, but their impact isn't immediately visible to users. These scripts execute when another user, often an administrator or privileged user, interacts with the infected page, potentially leading to unauthorized actions or data compromise.

Goal(s):

  • Inject scripts to silently exfiltrate sensitive data like cookies or tokens, transmitting it to a controlled server, all while the attacker remains unaware of the output.
  • Utilize injected scripts to silently capture keystrokes, enabling attackers to record user input, including usernames and passwords, without needing direct visibility of the results.
  • Exploit the vulnerability to manipulate a user's email address, then initiate a password reset, allowing the attacker to seize control of the victim's account while remaining blind to the output.
  • Leverage the vulnerability to launch Cross-Site Request Forgery (CSRF) attacks, compelling users to perform actions on another site without their consent, all without the need for the attacker to see the results.

Code Injection

Summary - Server-side code injection is a web vulnerability where attackers inject malicious code into a web application's input fields or parameters, manipulating the server to execute unintended code. This vulnerability is commonly found in web applications using technology stacks like PHP, Java, ASP.NET, and Ruby on Rails, where improper input validation can lead to the execution of arbitrary code on the server.

Goal(s):

  • Inject malicious code into user-controlled input, triggering the execution of server-side code in the application's tech stack (e.g., using eval() in a Node.js backend).
  • Gain control over the application's server-side logic by injecting code that allows attackers to modify or disrupt functionality.
  • Exploit code injection to subvert authentication mechanisms and gain unauthorized access to the application or server.
  • Inject code that modifies the behavior of the application or alters the output presented to users.
  • Leverage code injection to disrupt the server's functionality or cause unexpected behaviors in the application.

Server-Side Prototype Pollution (SSPP)

Summary - Server-side prototype pollution is a web security vulnerability where attackers manipulate input data to modify the prototype of objects on the server, potentially leading to unauthorized actions or data manipulation. This vulnerability is often found in applications that process user input without proper validation, affecting languages like JavaScript on the server side or frameworks that use deserialization, like Node.js.

Goal(s):

  • Inject malicious data to manipulate and pollute server-side prototypes, potentially affecting the behavior of core application objects.
  • Exploit prototype pollution to tamper with server-side libraries and modules, leading to unintended consequences in the application's functionality.
  • Forge and modify prototype properties, potentially enabling unauthorized access to sensitive server-side resources or data.
  • Exploit prototype pollution to trigger arbitrary server-side code execution, potentially compromising the entire system.
  • Exploit prototype pollution to introduce vulnerabilities that lead to data leaks, causing a Denial of Service (DoS) attack by overloading server resources and rendering the application unresponsive, disrupting normal operations and potentially affecting users.
  • Tamper with request or response objects' prototypes to manipulate data flows and interactions within the application to exfiltrate sensitive data.
  • Inject data that affects the control flow of server-side logic, potentially leading to unauthorized actions or data leakage.
  • Exploit prototype pollution to escalate privileges and gain unauthorized access to sensitive application features or resources, compromising security.
  • Manipulate prototype properties to subvert authentication mechanisms or bypass security checks, gaining unauthorized access.

Insecure Deserialization

Summary - Insecure deserialization is a web vulnerability where attackers exploit improperly handled serialized data, potentially leading to the execution of arbitrary code or unauthorized actions. This vulnerability is often prevalent in languages like Java, Python, and PHP, where de-serialized data isn't properly validated, allowing attackers to manipulate serialized objects to their advantage.

Goal(s):

  • Tamper with serialized data to execute arbitrary code during deserialization, potentially compromising the application.
  • Exploit insecure deserialization to manipulate application objects and gain unauthorized access to sensitive resources.
  • Craft malicious payloads to escalate privileges and gain unauthorized access to restricted areas or data.
  • Exploit insecure deserialization to cause application crashes or denial of service conditions.
  • Modify serialized data to bypass authentication or authorization mechanisms and access unauthorized functionality.
  • Forge serialized objects that enable data manipulation, potentially leading to data corruption or unauthorized changes.
  • Craft payloads to trigger application logic flaws, causing unintended behaviors or actions.
  • Exploit insecure deserialization to launch remote attacks on other systems or services.

LDAP Injection

Summary - LDAP injection is a web security vulnerability where attackers manipulate input data in a way that leads to unintended interactions with a Lightweight Directory Access Protocol (LDAP) server. By exploiting this vulnerability, attackers can potentially retrieve unauthorized information from the server, modify data, or execute arbitrary commands.

Goal(s):

  • Inject crafted LDAP queries to manipulate directory searches, potentially extracting sensitive data.
  • Exploit LDAP injection to bypass authentication, gaining unauthorized access to the application.
  • Forge malicious input to execute arbitrary commands on the LDAP server, potentially compromising it.
  • Manipulate LDAP queries to modify or delete directory entries, causing data loss or disruption.
  • Inject payloads to escalate privileges and gain administrative access to the LDAP server.
  • Exploit LDAP injection to exfiltrate sensitive information from the directory, potentially compromising user data.
  • Craft payloads to search for specific entries or attributes within the LDAP directory.
  • Inject input that causes unintended LDAP queries, potentially revealing sensitive directory information.
  • Forge LDAP queries to access or manipulate user accounts, potentially leading to unauthorized actions.
  • Exploit LDAP injection to enumerate users, groups, or permissions within the directory.
  • Manipulate queries to search for or modify application configurations stored in the LDAP directory.
  • Inject payloads to impersonate users or groups within the directory, potentially gaining unauthorized privileges.
  • Exploit LDAP injection to disrupt directory services, potentially causing denial of service conditions.
  • Craft LDAP queries to facilitate data validation bypass or abuse within the application.
  • Inject input that triggers directory errors or exceptions, potentially revealing valuable information.

Server-Side Request Forgery (SSRF)

Summary - Server-side request forgery (SSRF) is a web vulnerability where attackers manipulate a web application to make unauthorized requests to internal resources or external servers on behalf of the application. This can lead to data leakage, unauthorized access to internal systems, or potential exploitation of vulnerabilities in third-party services.

Goal(s):

  • Forge HTTP requests to internal services or resources to extract sensitive information.
  • Exploit SSRF to scan and enumerate the internal network or discover hidden services.
  • Manipulate SSRF to bypass security controls and access restricted data or functionality.
  • Redirect internal requests to external malicious servers, facilitating data exfiltration.
  • Craft SSRF payloads to perform unauthorized actions on behalf of legitimate users.
  • Make malicious HTTP Requests on behalf of the organization to damage their reputation and ultimately lead to financial loss.

File Inclusion / Path Traversal

Summary - Local file inclusion (LFI) is a web vulnerability where attackers manipulate input to include and execute local files on a web server, potentially exposing sensitive information. Path traversal is a similar vulnerability where attackers manipulate input to traverse directory paths, potentially accessing files outside the intended scope, which can lead to unauthorized data exposure or code execution.

Goal(s):

  • Exploit path traversal to access sensitive files outside the web root, such as configuration files or system logs.
  • Manipulate file inclusion to read or exfiltrate confidential data, including user accounts or private documents.
  • Abuse path traversal to gain unauthorized access to restricted areas, such as admin panels or user profiles.
  • Redirect file inclusion to execute system commands on the server, compromising its security.
  • Exploit file inclusion to disclose source code, exposing application vulnerabilities or proprietary information.
  • Forge requests to include remote files, potentially facilitating remote code execution attacks.

XPATH Injection

Summary - XPath injection is a web vulnerability where attackers manipulate input data to modify XPath queries in XML-based applications, potentially leading to unintended data access or manipulation. This can result in unauthorized data exposure or even remote code execution, depending on the application's security measures.

Goal(s):

  • Inject malicious XPath queries to access unauthorized data within XML documents.
  • Exploit XPath Injection to bypass authentication mechanisms and gain unauthorized access.
  • Manipulate XPath queries to extract sensitive information from XML-based databases or files.
  • Forge XPath queries to modify XML data or execute unauthorized actions within the application.
  • Redirect XPath queries to exfiltrate sensitive data from the server or application.
  • Exploit XPath Injection to escalate privileges and gain administrative access.
  • Craft XPath queries to trigger application errors or unintended behaviors.
  • Inject malicious XPath expressions to disrupt XML parsing or application functionality.
  • Abuse XPath Injection to enumerate user accounts, potentially aiding in further attacks.
  • Manipulate XPath queries to reveal server-specific information or configurations.
  • Forge XPath queries to search for specific entries or patterns within XML data.
  • Exploit XPath Injection to execute arbitrary code on the server, potentially compromising it.
  • Redirect XPath queries to access confidential XML documents or resources.
  • Inject XPath expressions to facilitate data validation bypass or abuse within the application.

Unrestricted File Upload

Summary - An unrestricted file upload vulnerability allows attackers to upload various file types to a web application without proper checks, even if they can't directly achieve remote code execution or upload a web shell. This can still lead to potential security risks like storing malware-infected files, exploiting server misconfigurations, or enabling further attacks through creative abuse of the uploaded content.

Goal(s):

  • Bypass existing filters to upload files outside of the allowed types, sizes or naming conventions.
  • Upload files to a directory outside of the intended location.

Web Shell via File Upload

Summary - In an unrestricted file upload vulnerability, if the attacker manages to upload a web shell or execute malicious code, they can gain unauthorized remote access (RCE) to the targeted system or web application. This can lead to complete control over the system, data breaches, and potentially severe security breaches.

Goal(s):

  • Execute arbitrary commands through the web shell, potentially compromising the entire system.
  • Use the web shell to steal sensitive data from the server or database.
  • Gain persistent access to the application, allowing for long-term exploitation.
  • Inject backdoors or malware into the server, facilitating further attacks.
  • Escalate privileges by exploiting vulnerabilities or misconfigurations.
  • Conceal malicious activities by modifying logs or altering access controls.
  • Launch attacks on other internal systems or network resources from the compromised server.
  • Establish a command-and-control (C2) channel for remote control and management.
  • Exploit the compromised server to launch attacks on external targets or neighboring systems.
  • Upload and execute ransomware to encrypt data and demand a ransom for decryption.

Server-Side Template Injection (SSTI)

Summary - Server-side template injection is a web vulnerability where attackers manipulate input data to inject malicious template code into a web application's server-side templates, potentially leading to the execution of unintended code and exposing sensitive information. This can occur when input isn't properly validated or sanitized before being inserted into the template rendering process.

Goal(s):

  • Inject malicious template code that allows for the execution of arbitrary commands on the server. This can compromise the entire server infrastructure and potentially lead to full server control.
  • Exploit SSTI to access and exfiltrate sensitive server-side data, including confidential user information, database contents, or configuration files. Attackers can use this stolen data for malicious purposes or to gain insights into the application's architecture.
  • Craft template injections to gain unauthorized access to restricted areas or sensitive user data. By escalating privileges, attackers can compromise the security of the application and access data they shouldn't have access to.
  • Exploit the initial SSTI vulnerability to facilitate secondary attacks on the server or other connected systems. This can include launching attacks on other applications, pivoting to other parts of the network, or compromising additional assets.
  • Manipulate templates to disrupt application functionality or crash the server, causing service interruptions or degradation in performance.

XML External Entity (XXE)

Summary - XML External Entity (XXE) attacks are a web vulnerability where attackers manipulate input data to exploit XML parsers, potentially leading to the disclosure of sensitive information, server-side request forgery (SSRF), or remote code execution. By injecting malicious XML entities, attackers can abuse the way the application processes XML data, causing unintended behaviors.

Goal(s):

  • Exploit XXE to read sensitive server data, like configuration files or credentials, for malicious purposes.
  • Craft malicious XML to trigger XXE, causing a DoS by overloading server resources.
  • Use XXE for SSRF attacks, revealing internal network details or exfiltrating data.
  • Escalate XXE to execute arbitrary code on the server, potentially leading to full compromise.
  • Manipulate app parameters or configs via XXE to alter behavior, access resources, or perform unauthorized actions.

WebSocket Injection

Summary - WebSocket injection is a web security vulnerability where attackers manipulate data sent through WebSocket connections, potentially leading to unauthorized data modification or the insertion of malicious content into the communication stream. By exploiting this vulnerability, attackers can disrupt communication, inject malicious scripts, or even compromise the integrity of the transmitted data.

Goal(s):

  • Inject malicious or unexpected data into WebSocket messages, potentially disrupting communication or exploiting vulnerabilities.
  • Forge WebSocket messages to impersonate a legitimate client or server, potentially deceiving other clients or the server into taking unintended actions.
  • Intercept WebSocket traffic to steal sensitive information transmitted between clients and the server, including credentials, session tokens, or other confidential data.
  • Modify WebSocket messages in transit to manipulate the data being exchanged, potentially causing incorrect processing on the server or clients.
  • Inject malicious code or commands into WebSocket messages, which, if executed on the server, can lead to remote code execution or unauthorized access.
  • Overwhelm WebSocket connections with a high volume of malicious requests, leading to server resource exhaustion or communication disruption.
  • Exploit WebSocket vulnerabilities to hijack user sessions, enabling attackers to impersonate legitimate users and perform actions on their behalf.
  • Manipulate WebSocket protocol-specific behaviors or features to carry out attacks that abuse WebSocket functionality, potentially leading to application vulnerabilities.
  • Trick users into establishing WebSocket connections to malicious servers, potentially exposing sensitive information or performing actions on behalf of the victim.

Core Application Testing

Database Operation Testing

SQL Injection

Summary - SQL injection is a web vulnerability where attackers manipulate input data to insert malicious SQL queries into a web application's database query statements, potentially allowing them to view, modify, or delete data in the database. This can result in unauthorized access to sensitive information, data breaches, or even the complete compromise of the application's backend.

Goal(s):

  • Extract sensitive data from the application's database, such as user credentials or financial records.
  • Manipulate the application's authentication mechanisms to gain unauthorized access to user accounts or restricted areas.
  • Modify, delete, or insert unauthorized data into the database, causing data corruption or unauthorized changes.
  • Hijack user sessions by tampering with session identifiers, allowing attackers to impersonate legitimate users.
  • Overload the database server with resource-intensive requests, leading to denial-of-service (DoS) conditions.
  • Execute arbitrary code on the server, potentially gaining full control over the application and infrastructure.
  • Expose vulnerabilities or proprietary information stored in the database, which can be leveraged for competitive advantage or further attacks.
  • Inject malicious data or malware payloads into the database, potentially causing harm to users or the application.

NoSQL Injection

Summary - NoSQL injection is a web vulnerability where attackers manipulate input data to exploit weaknesses in NoSQL database queries, potentially leading to unauthorized access, data manipulation, or even remote code execution. This can occur in databases like MongoDB, Cassandra, or Couchbase, when user input isn't properly validated before being used in queries.

Goal(s):

  • Extract sensitive data from the application's NoSQL database, including user profiles, credentials, or confidential information.
  • Manipulate NoSQL queries to bypass authentication, potentially gaining unauthorized access to user accounts or admin areas.
  • Modify or insert unauthorized data into the NoSQL database, causing data corruption, integrity issues, or unauthorized changes.
  • Hijack user sessions via NoSQL injection, allowing attackers to impersonate legitimate users.
  • Craft malicious NoSQL queries that overload the database server, causing denial-of-service (DoS) or slowing application responsiveness.

GraphQL Injection

Summary - GraphQL injection is a web vulnerability where attackers manipulate input data to exploit weaknesses in GraphQL queries, potentially leading to unauthorized data access, exposure of sensitive information, or even denial of service. This can occur when input validation or query parsing is insufficiently implemented in GraphQL-based applications.

Goal(s):

  • Retrieve sensitive data from the database, including user information, passwords, or confidential records.
  • Manipulate queries to bypass authentication mechanisms and gain unauthorized access to user accounts or restricted resources.
  • Modify or insert unauthorized data into the database, potentially causing data corruption or unauthorized changes.
  • Craft malicious queries that overload the server's resources, causing denial-of-service (DoS) conditions and rendering the application unresponsive.
  • Gain code execution on the server, allowing attackers to control the application and underlying infrastructure.
  • Expose vulnerabilities, proprietary information, or data stored in the database, which can be leveraged for malicious purposes.
  • Hijack user sessions by tampering with tokens or credentials in queries, enabling attackers to impersonate legitimate users.
  • Manipulate queries to abuse application logic, potentially disrupting critical functionalities or causing unintended behavior.

Denial of Service (DoS)

Summary - In a denial of service (DoS) attack targeting a web application's database, an attacker could flood the database with an overwhelming volume of malicious requests, such as complex and resource-intensive queries or large data uploads. This excessive load can cause the database to become unresponsive or slow down significantly, disrupting the application's normal functionality and potentially rendering it inaccessible to legitimate users.

Goal(s):

  • Store unusually large amounts of data in the database, using expected behavior and mechanisms, to overload the database and disrupt normal operations.
  • Send an unusually large amount of requests ton the database, using expected behavior and mechanisms, to overload the database and disrupt normal operations.

Information Disclosure

Summary - Sensitive information aside from data can include configuration files, access credentials, session tokens, or internal system details that, when improperly secured, might be accessible to attackers. Additionally, error messages or debug information might unintentionally reveal insights about the application's architecture or vulnerabilities, aiding attackers in their exploit attempts.

Goal(s):

  1. Database Credentials: This includes usernames and passwords used to access the database. These credentials should be kept confidential to prevent unauthorized access.
  2. Database Connection Strings: Details such as the database server's address, port, and authentication parameters should be protected.
  3. API Keys and Tokens: If the database is accessed through an API or web service, any API keys or access tokens used for authentication should be kept private.
  4. Database Encryption Keys: If the database employs encryption, the encryption keys used to secure data should be safeguarded to maintain data confidentiality.
  5. Database Schema and Structure: Exposing the structure and schema of the database may aid potential attackers in understanding the database's architecture and could lead to security vulnerabilities.
  6. Backup and Restore Procedures: Information about database backup and restore processes, including storage locations and schedules, should be kept confidential to prevent data loss or unauthorized recovery.
  7. Database Management System (DBMS) Version: Disclosing the specific version and software used for the DBMS may expose the database to known vulnerabilities.
  8. Query Logs and Execution Plans: Detailed query logs and execution plans can reveal insights into database performance and potentially sensitive information about the application's data access patterns.
  9. Database Access Control Lists (ACLs): Information about who has access to the database, their roles, and permissions should be controlled and not disclosed.
  10. Database Monitoring and Audit Logs: Logs that track database activity, user access, and security events should be protected to maintain security and compliance.
  11. Database Administrator Credentials: Login credentials for database administrators should be restricted to authorized personnel and kept confidential.
  12. Database Configuration Files: Configuration files, such as those specifying database settings, should be secured to prevent tampering or exposure.
  13. Data Encryption and Hashing Algorithms: Details about the encryption and hashing algorithms used to secure data should be protected to maintain data integrity and confidentiality.
  14. Network Configuration: Information about how the database server is connected to the network, including firewall rules and routing details, should be kept confidential to prevent potential attacks.

Creative Application Testing

In our final phase of testing, we "take a step back" and evaluate the security posture of the application's logic. By exploiting the way various complex systems work with one another, our researchers use their years of experience (along with a healthy dose of creativity and passion) to find high impact vulnerabilities that automated scanners miss.

Creative Application Testing

External Identity Access Management (IAM) Testing

OAuth Misconfiguration

Summary - OAuth is an open standard protocol that allows secure authorization for third-party applications to access a user's resources, such as their data or functionalities, without exposing their credentials. It enables users to grant limited permissions to external services without sharing their login credentials, enhancing security and user control in API interactions.

Security Assertion Markup Language (SAML) Misconfiguration

Summary - SAML (Security Assertion Markup Language) is an XML-based standard used for exchanging authentication and authorization data between parties, typically enabling Single Sign-On (SSO) functionality in web applications. It allows users to access multiple applications with a single set of credentials, enhancing user experience and security.

Google Firebase IAM Misconfiguration

Summary - Google Firebase IAM (Identity and Access Management) is a service that controls user access to Firebase resources, allowing administrators to manage permissions for users and groups. It enables fine-grained access control to Firebase services and data, enhancing security and governance in Firebase applications.

Keycloak IAM Misconfiguration

Summary - Keycloak IAM (Identity and Access Management) is an open-source solution that provides authentication, authorization, and Single Sign-On (SSO) capabilities for applications and services. It allows users to manage access to resources, ensuring secure and seamless interactions within the application ecosystem.

Creative Application Testing

Application Logic Testing

Indirect Object Reference (IDOR)

Summary - Objects in web applications are used to represent and manipulate various elements, data, and functionalities, allowing developers to organize and interact with components like user interfaces, databases, and server requests in a structured and efficient manner.

An Indirect Object Reference (IDOR) occurs when a user can manipulate a parameter, such as a URL or form field, to access data or functionality they are not authorized to, often by changing a numerical identifier. This vulnerability can lead to unauthorized data exposure or actions within the application.

Insufficient Access Controls

Summary - Access Controls are implemented to ensure a client only has access to the parts of the application the developers intended them to access.

Access Controls are often applied to the client based on the individual user (accessing a profile page), the user's session (accessing authenticated pages), and the user's role (accessing an admin panel). These rules dictate what the client is "allowed" to do in the application and can be applied with high granularity. For example, one Access Control may prevent a user from accessing an entire application, while another may only prevent the use of an additional parameter against a POST request.

When a finding of "Insufficient Access Controls" is discovered in an application, it means the developers failed to enforce these rules altogether.

Bypass Access Controls

Summary - Access Controls are implemented to ensure a client only has access to the parts of the application the developers intended them to access.

Access Controls are often applied to the client based on the individual user (accessing a profile page), the user's session (accessing authenticated pages), and the user's role (accessing an admin panel). These rules dictate what the client is "allowed" to do in the application and can be applied with high granularity. For example, one Access Control may prevent a user from accessing an entire application, while another may only prevent the use of an additional parameter against a POST request.

When a finding of "Bypass Access Controls" is discovered in an application, it means the developers have implemented a security control to prevent unauthorized users from accessing a mechanism but an attacker can bypass that control using a payload delivered from the client-side.

2FA/MFA Bypass

Summary - Two-factor authentication (2FA) requires users to provide two forms of identification to access an account, typically something they know (e.g., a password) and something they have (e.g., a mobile device for receiving a verification code), while multi-factor authentication (MFA) extends this concept by adding additional authentication factors beyond just two, such as something they are (e.g., biometric data like fingerprint or facial recognition).

Captcha Bypass

Summary - Captcha is used in web applications to distinguish between human users and automated bots by presenting challenges that are easy for humans to solve but difficult for bots. Bypassing this mechanism can allow bots to access and potentially exploit web applications, leading to various security risks, such as data scraping, fraudulent activities, or unauthorized access to sensitive information.

Rate Limiting / Brute-force Protection Bypass

Summary - Rate limiting controls restrict the number of requests a user or IP address can make within a certain time frame, while brute force protections are mechanisms that detect and block repeated login attempts to prevent unauthorized access or credential guessing attacks in web applications.

Bypass Registration Restrictions

Summary - Restrictions on registration in a web application can include enforcing unique email addresses or usernames, requiring strong passwords, implementing email verification, and limiting the number of accounts from the same IP address; if an attacker successfully bypasses these restrictions, they can potentially create multiple fraudulent accounts, misuse the application for malicious purposes, or engage in spam activities, compromising the application's integrity and user experience.

Bypass Payment Process Restrictions

Summary - Attackers can manipulate the logic in the payment process of a web application by intercepting and modifying payment requests, exploiting vulnerabilities to bypass payment, or tampering with transaction amounts or beneficiaries. The impact of these attacks includes financial loss for the application owner, fraudulent transactions, unauthorized access to sensitive payment information, damage to the application's reputation, and legal consequences.

Bypass Authentication Restrictions

Summary - A login mechanism in a web application is a system that enables users to authenticate themselves by providing valid credentials (typically a username and password) to gain access to their accounts or specific resources within the application.

Bypass Password Reset Restrictions

Summary - Attackers can weaponize vulnerabilities in a password reset mechanism of a web application by exploiting flaws such as inadequate authentication checks, predictable reset tokens, or email account compromise to initiate unauthorized password resets for a victim's account, subsequently gaining control of the account by setting a new password and locking out the legitimate user.

Race Conditions

Summary - Attackers can exploit race conditions in a web application by manipulating the timing of requests or operations to gain unauthorized access or perform unintended actions. For example, they may submit multiple simultaneous requests to change account settings or make transactions, causing conflicts that lead to unintended outcomes or unauthorized data access. The impact can include unauthorized data disclosure, financial losses, or account takeovers, potentially compromising the integrity and security of the web application and its users.

Username Enumeration

Summary - Attackers can employ various unintended methods to enumerate usernames in a web application. These include brute force attacks, observing user enumeration responses, exploiting account registration, testing the "Forgot Password" function, scraping public user profiles, querying usernames through search functionality, leveraging user-generated content, and potentially accessing user information through unprotected API endpoints. The consequences of successful username enumeration can range from unauthorized account access to data scraping and targeted attacks.

Creative Application Testing

Public Repository & OSINT Testing

Internal Source Code on Public Repository

Summary - Private source code can inadvertently end up on public repositories in GitHub and similar platforms due to developers mistakenly pushing code to the wrong repository settings. This can occur when developers forget to mark a repository as private or accidentally include sensitive files when pushing updates.

There are also cases where developers push company code to public repositories on their personal accounts, either by accident or intentionally. Our researchers are genuinely shocked at how often this occurs.

Attackers can then discover and access this exposed source code, potentially leading to security vulnerabilities, data leaks, or unauthorized use of proprietary software.

Internal/Privileged Credentials on Public GitHub Repository

Summary - Privileged credentials can be exposed on public repositories in GitHub and similar platforms when developers accidentally include configuration files or scripts containing sensitive information, such as API keys, passwords, or access tokens. These credentials may be intended for development or testing purposes but are inadvertently committed to a public repository. Malicious actors or automated scanners can then discover and misuse these exposed credentials, potentially leading to unauthorized access or data breaches.

Internal Source Code Found in Web Scraping

Summary - Private source code can be discovered through web scraping when attackers or automated bots target web applications or websites where the source code is inadvertently exposed or leaked. This can happen due to misconfigured web servers or insecure development practices that allow direct access to source code files. Attackers can scrape the HTML and JavaScript of these web pages, potentially exposing proprietary code, algorithms, or sensitive information, which could lead to intellectual property theft or security vulnerabilities if the code contains flaws.

Internal/Privileged Credentials Found in Web Scraping

Summary - Internal credentials and API keys can be discovered through web scraping when attackers or automated tools scan publicly accessible web pages or directories for hardcoded or embedded credentials within the HTML source code or configuration files. This can occur due to developer oversight or insecure coding practices. When discovered, these credentials can be misused to gain unauthorized access to internal systems, compromise data, or perform malicious actions, potentially leading to security breaches or unauthorized access to sensitive resources.