CVE-2026-82187
Critical

CVE-2026-82187: Unrestricted File Upload in Web to Print Online Designer WordPress Plugin Enables Unauthenticated RCE

CVE ID
CVE-2026-82187
Severity
CRITICAL
CVSS
9.8
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Published
September 28, 2026
Updated
September 28, 2026

Summary

CVE-2026-82187 is a critical vulnerability in the Web to Print Online Designer WordPress plugin, affecting all versions prior to 2.15.0. The plugin fails to validate the type or extension of files uploaded through its functionality, and critically, it hands the token that is supposed to protect those uploads to any visitor who requests it. The combination of these two flaws allows unauthenticated, remote attackers to upload arbitrary files—including PHP files—to the server and execute arbitrary code. The vulnerability carries a CVSS v3.1 base score of 9.8 (Critical) with the vector CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H, reflecting a network-accessible, low-complexity attack that requires no privileges, no user interaction, and results in full compromise of confidentiality, integrity, and availability. The weakness is classified under CWE-434, Unrestricted Upload of File with Dangerous Type.

Technical Analysis

The vulnerability described in CVE-2026-82187 is composed of two distinct but interdependent flaws within the Web to Print Online Designer WordPress plugin. Understanding how these flaws interact is essential for appreciating why this CVE received a near-maximum CVSS score and why it represents one of the most dangerous classes of WordPress plugin vulnerabilities.

Flaw One: Missing File Type and Extension Validation

The first flaw is a textbook example of CWE-434: Unrestricted Upload of File with Dangerous Type. According to the description, the plugin does not validate the type or extension of uploaded files. In a properly designed file upload mechanism, the server should enforce a strict allowlist of permitted MIME types and file extensions—typically restricting uploads to the specific file formats the application actually needs to process, such as images (JPEG, PNG, GIF) or design files relevant to a print-on-design product.

When this validation is absent, an attacker can submit any file they wish through the upload endpoint. This includes files with executable extensions such as .php, .phtml, .php5, .php7, .pht, or any other extension that the web server is configured to pass through the PHP interpreter. The description explicitly confirms that PHP files are among the arbitrary files that can be uploaded, which is the most dangerous outcome of this flaw because it directly enables server-side code execution.

It is worth noting that file type validation can be implemented at multiple layers: client-side (trivially bypassed), at the application layer via MIME type checking (which can be spoofed), at the extension level (which can be bypassed via double extensions, case manipulation, or null bytes in older PHP versions), and at the content level via magic byte inspection. The description does not specify which of these checks, if any, are partially present. It states plainly that the plugin does not validate the type or extension, suggesting that even basic extension allowlisting is not enforced.

Flaw Two: Token Disclosure to Unauthenticated Visitors

The second flaw is what elevates this vulnerability from a typical authenticated file upload issue to a critical, unauthenticated remote code execution. The description states that the plugin hands the token protecting those uploads to any visitor who asks for it.

This indicates that the plugin implements some form of token-based protection on its upload endpoint—likely a nonce or a custom token intended to ensure that only legitimate users of the plugin’s design interface can submit file uploads. However, this token is made available to any visitor who requests it, regardless of whether they are authenticated or even interacting with the plugin’s intended user interface. This effectively neutralizes the token as a security control.

In the WordPress ecosystem, nonces are commonly used to protect against CSRF and to add a layer of intent verification to AJAX actions. However, WordPress nonces are not authentication tokens—they are time-limited and can be generated by any user, including unauthenticated ones, if the nonce action is accessible. If the plugin’s token mechanism follows a similar pattern, or if it simply returns the token through an endpoint that does not check authentication, then the token provides no meaningful barrier to an attacker.

The Combined Attack Chain

Neither flaw alone would necessarily produce a 9.8 CVSS score. An unrestricted file upload that requires authentication might still be serious, but it would not score as high on the Privileges Required metric. A token disclosure that does not lead to a dangerous action would be a lower-severity information exposure issue. The critical severity emerges from the combination:

  1. The attacker, with no credentials and no prior interaction with the target, requests and receives the upload protection token.
  2. The attacker then submits a file upload request containing a PHP web shell or other malicious script, using the token to pass the plugin’s (ineffective) protection check.
  3. The server accepts the file without validating its type or extension and stores it in a web-accessible location.
  4. The attacker accesses the uploaded PHP file via its URL, causing the web server to execute the contained code.

This chain requires only network access to the target, has low attack complexity, needs no user interaction, and results in full server compromise—exactly matching the CVSS vector components of AV:N, AC:L, PR:N, UI:N, S:U, and C:H/I:H/A:H.

CVSS Vector Breakdown

The CVSS v3.1 vector CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H provides a precise characterization of the vulnerability’s properties:

  • Attack Vector: Network (AV:N) — The vulnerability is exploitable over the network, meaning any attacker who can reach the WordPress site over the internet can attempt exploitation.
  • Attack Complexity: Low (AC:L) — Exploitation is straightforward. The attacker does not need to perform complex timing, race conditions, or special preparations. Request a token, upload a file, access the file.
  • Privileges Required: None (PR:N) — No authentication is needed. The token is given to any visitor, and the upload endpoint does not require a logged-in session.
  • User Interaction: None (UI:N) — The attack does not require any action from a legitimate user of the system. No social engineering, no clicking of links, no accepting of prompts.
  • Scope: Unchanged (S:U) — The vulnerability does not directly breach a security boundary beyond the vulnerable component. The exploited PHP execution occurs within the same security scope as the WordPress installation, though in practice this often means full server compromise.
  • Confidentiality: High (C:H) — Code execution on the server grants access to all data processed by the server, including database credentials, user data, and configuration files.
  • Integrity: High (I:H) — The attacker can modify any data on the server, alter website content, inject malicious scripts, and tamper with stored files.
  • Availability: High (A:H) — The attacker can disrupt or completely deny access to the service, delete files, crash processes, or consume server resources.

CWE-434 Context

CWE-434, Unrestricted Upload of File with Dangerous Type, is one of the most well-known and impactful weaknesses in web application security. It appears consistently in vulnerability databases and has been associated with numerous high-profile compromises. The fundamental problem is that the application allows users to upload files without adequately verifying that the files are of a type that is safe to accept and store. When the uploaded file can be executed by the server—either because it is placed in a web-accessible directory and has an executable extension, or because the server is misconfigured—the result is arbitrary code execution.

In the WordPress plugin ecosystem, this CWE is particularly prevalent because plugins frequently implement custom upload handlers that bypass or supplement WordPress’s core media handling functions. When a plugin developer creates a custom upload endpoint for a specific feature—such as a design tool that accepts user-created images or templates—they may inadvertently create a path that does not inherit the security checks present in WordPress core. This appears to be exactly what happened with the Web to Print Online Designer plugin.

Affected Software and Versions

The vulnerability affects the Web to Print Online Designer WordPress plugin in all versions before 2.15.0. The description identifies version 2.15.0 as the fixed version, implying that the patch was applied in that release. The specific vendor name and product identifier beyond the plugin name are not provided in the available data.

WordPress plugins are distributed through the WordPress Plugin Directory and can be installed on any WordPress installation. The Web to Print Online Designer plugin, as its name suggests, is designed to provide online design capabilities for print products—a common feature for e-commerce sites selling custom printed items such as business cards, t-shirts, posters, and promotional materials. This type of plugin typically requires file upload functionality so that users can upload their own images or designs to be incorporated into print products, which explains the presence of an upload endpoint that could be abused.

Site administrators running versions of this plugin prior to 2.15.0 should consider their installations critically vulnerable and take immediate action. The exact number of affected installations is not specified in the provided data, but WordPress plugins in the e-commerce and design space often have significant deployment bases, potentially numbering in the thousands or tens of thousands of sites.

It should be noted that the vulnerability is not listed in CISA’s Known Exploited Vulnerabilities (KEV) catalog according to the provided data, which indicates that there is no confirmed evidence of active exploitation in the wild at the time of this writing. However, the ease of exploitation and the severity of impact make this a prime candidate for opportunistic attacks, and the absence of KEV listing does not imply that the vulnerability is not being exploited.

Impact

The impact of CVE-2026-82187 is severe and comprehensive. Successful exploitation grants the attacker the ability to execute arbitrary PHP code on the web server hosting the vulnerable WordPress installation. From this position, the attacker can achieve the following:

Complete Data Compromise: PHP code running on the web server can access the WordPress database using the credentials stored in wp-config.php. This grants access to all posts, pages, user accounts, password hashes, email addresses, e-commerce transaction data, and any other information stored in the WordPress database. For an e-commerce site using a print design plugin, this may include customer order histories, shipping addresses, and potentially payment-related metadata.

Server-Level Access: PHP code execution can be leveraged to spawn reverse shells, execute operating system commands, and pivot to other services running on the same server. If the web server process has sufficient privileges, the attacker may be able to read sensitive system files, modify server configurations, or establish persistence.

Website Defacement and Content Manipulation: With database access and file system write permissions, the attacker can modify or delete website content, inject malicious JavaScript into pages served to visitors, and replace legitimate content with attacker-controlled material.

Malware Distribution: The compromised site can be turned into a platform for distributing malware. Attackers can upload additional payloads, create phishing pages, or inject drive-by download code that targets the site’s legitimate visitors.

Blacklisting and Reputation Damage: Sites compromised through this vulnerability may be flagged by search engines and security vendors as malicious, leading to loss of traffic, customer trust, and potential revenue impact for e-commerce businesses.

Lateral Movement: If the WordPress installation shares infrastructure with other applications or databases, the attacker may be able to pivot from the initial foothold to compromise additional systems and services.

Full Availability Disruption: The attacker can delete files, corrupt the database, or consume server resources to the point where the website becomes completely unavailable. The CVSS availability impact rating of High reflects this capability.

Exploitation Scenario

The following is a hypothetical, illustrative exploitation scenario derived directly from the vulnerability description. It is presented to help security researchers and bug bounty hunters understand the attack flow. It does not represent a specific observed attack and does not contain a working exploit.

Scenario: Unauthenticated Remote Code Execution via Token Retrieval and PHP Upload

An attacker identifies a WordPress site running the Web to Print Online Designer plugin in a version prior to 2.15.0. The attacker has no credentials on the target site and no prior relationship with it.

Step 1: The attacker interacts with the plugin’s functionality as a normal visitor would—browsing to a page or endpoint where the design tool is available. Because the plugin hands its upload protection token to any visitor who asks for it, the attacker is able to obtain the token without authentication. This might involve visiting a specific page that initializes the design tool, calling an AJAX endpoint that returns the token, or inspecting the page source where the token is embedded for the plugin’s JavaScript frontend.

Step 2: With the token in hand, the attacker crafts an HTTP request to the plugin’s file upload endpoint. The request includes the token (which passes the plugin’s protection check) and a file payload. Because the plugin does not validate file type or extension, the attacker includes a file with a .php extension containing PHP code—for example, a minimal web shell that accepts commands via HTTP parameters.

Step 3: The server processes the upload request, accepts the PHP file, and stores it in a directory within the WordPress installation that is web-accessible. The exact storage location depends on the plugin’s implementation, but common locations include subdirectories of wp-content/uploads/ or a plugin-specific directory.

Step 4: The attacker sends an HTTP request to the URL of the uploaded PHP file. The web server, recognizing the .php extension, passes the file through the PHP interpreter. The attacker’s code executes on the server, and the response is returned to the attacker. At this point, the attacker has achieved remote code execution and can proceed to interact with the server as if they had direct shell access.

This entire scenario requires only standard HTTP requests, no authentication, and no interaction from any legitimate user of the site. The attack can be executed from a single machine with basic tools such as a web browser, curl, or a simple scripting language. The low attack complexity reflected in the CVSS vector is consistent with this straightforward exploitation path.

Detection and Mitigation

Detection

Detecting exploitation of CVE-2026-82187 involves monitoring for the two key phases of the attack: the token retrieval and the file upload. Security teams should consider the following detection approaches:

Web Server Access Log Analysis: Examine access logs for requests to the plugin’s upload endpoint originating from unauthenticated sessions. Look for POST requests containing file data, particularly those resulting in HTTP 200 responses. Requests to the upload endpoint that do not correspond to legitimate user sessions on the design tool pages may indicate malicious activity.

File System Monitoring: Monitor the WordPress upload directories—particularly any directories specific to the Web to Print Online Designer plugin—for the appearance of files with executable extensions (.php, .phtml, .php5, .php7, .pht, .phar). The presence of any such files in an upload directory is a strong indicator of exploitation, as legitimate design file uploads should be restricted to image and document formats.

Token Endpoint Monitoring: If the plugin exposes a specific endpoint or mechanism for retrieving the upload token, monitor for requests to that endpoint from sources that do not correspond to legitimate design tool usage patterns. High volumes of token requests, or token requests from IP addresses that do not subsequently engage with the design tool, may indicate reconnaissance or automated exploitation.

Web Application Firewall Rules: Deploy WAF rules that block file uploads with executable extensions to the plugin’s upload endpoint. Additionally, rules that detect PHP file content in upload payloads (such as signatures for common web shell patterns) can provide an additional layer of detection.

Mitigation

Immediate Action — Update the Plugin: The primary and most effective mitigation is to update the Web to Print Online Designer plugin to version 2.15.0 or later. The description identifies 2.15.0 as the version that addresses the vulnerability, and updating should be performed immediately on all affected installations.

Disable the Plugin if Updating is Not Immediately Possible: If updating cannot be performed immediately, disabling the Web to Print Online Designer plugin removes the vulnerable upload endpoint and token disclosure mechanism from the attack surface. While this will disable the plugin’s functionality, it eliminates the vulnerability until an update can be applied.

Restrict Upload Directory Access: As a defense-in-depth measure, configure the web server to prevent execution of PHP files within upload directories. For Apache, this can be achieved with php_flag engine off in a .htaccess file within the upload directory. For nginx, configuration directives can be used to deny execution of PHP files in specific paths. While this does not fix the underlying vulnerability, it can prevent uploaded PHP files from being executed even if they are successfully uploaded.

Implement File Upload Validation at the Web Server Level: Configure the web server or a reverse proxy to inspect uploaded file content and reject files with executable extensions or PHP content, regardless of the application’s own validation logic.

Monitor for Post-Exploitation Activity: If the plugin has been running in a vulnerable version, assume that compromise may have already occurred. Perform a thorough audit of the WordPress installation, including checking for unexpected PHP files in upload directories, reviewing the database for unauthorized changes, examining user accounts for unauthorized additions or privilege escalations, and scanning for backdoors or web shells.

Bug Bounty Angle

For bug bounty hunters and offensive security researchers, CVE-2026-82187 offers several valuable lessons and opportunities for finding similar vulnerabilities in other WordPress plugins and web applications.

Pattern Recognition

This vulnerability follows a pattern that is extremely common in WordPress plugins: a custom file upload endpoint protected by a token or nonce that is trivially accessible to unauthenticated users. When hunting for vulnerabilities in WordPress plugins, researchers should systematically examine every file upload mechanism, paying particular attention to:

  • Whether the upload endpoint requires authentication beyond a nonce or token check
  • Whether the nonce or token can be obtained by an unauthenticated visitor
  • Whether the file type and extension validation is performed server-side with a strict allowlist
  • Whether uploaded files are stored in web-accessible directories
  • Whether the web server is configured to execute files with the uploaded extensions

Token and Nonce Analysis

The token disclosure flaw in this CVE highlights a broader issue in WordPress plugin security. Many plugins use WordPress nonces as a primary protection mechanism for AJAX endpoints, but nonces are not authentication tokens. They can be generated by any visitor, including unauthenticated ones, as long as the nonce action name is known or can be discovered. When a plugin relies on a nonce as the sole protection for a sensitive action like file upload, the protection is effectively non-existent for unauthenticated attackers.

Researchers should test whether tokens or nonces protecting sensitive endpoints can be obtained without authentication. This can be as simple as visiting the page where the plugin’s JavaScript is loaded and extracting the token from the page source, or calling the endpoint that generates the token directly.

File Upload Testing Methodology

When testing file upload functionality, researchers should attempt to upload files with a variety of executable extensions, not just .php. Different server configurations may execute different extensions, including .phtml, .php5, .php7, .pht, .phar, .shtml, and others. Additionally, researchers should test bypass techniques such as double extensions (file.php.jpg), case variations (file.PHP), and null byte injection in older PHP versions (file.php%00.jpg).

It is also important to verify where uploaded files are stored and whether they can be directly accessed via a URL. Some plugins store uploads in directories that are not directly web-accessible or that have execution disabled, which would prevent code execution even if a PHP file is uploaded. However, as this CVE demonstrates, many plugins do store uploaded files in accessible locations.

Program Scope Considerations

When participating in bug bounty programs that include WordPress sites, researchers should check whether the target site runs plugins with file upload functionality. E-commerce plugins, design tools, form builders, and media management plugins are all common sources of file upload vulnerabilities. The Web to Print Online Designer plugin falls into the e-commerce and design tool category, which is a rich hunting ground for this class of vulnerability.

Researchers should also be aware that many bug bounty programs may have restrictions on uploading actual executable payloads. In such cases, researchers can demonstrate the vulnerability by uploading a file with an executable extension but containing only benign content (such as a simple phpinfo() call or a text string), and then demonstrating that the file is accessible and executed by the server. This proves the vulnerability without deploying an actual web shell.

Responsible Disclosure

Given the critical severity of this class of vulnerability, researchers who discover similar issues should report them promptly through the appropriate channels. For WordPress plugins, the WordPress Plugin Security Team and plugins team can be contacted, and many plugin vendors have their own security contact mechanisms. The WPScan database, which is referenced in this CVE, is also a valuable resource for tracking WordPress plugin vulnerabilities and may accept vulnerability reports.

References

Responsible use: this analysis is published for security research, authorized testing, defensive security and education. Only test or attempt exploitation on systems you are explicitly authorized to assess. Unauthorized access to computer systems is illegal.

Leave a Reply

Your email address will not be published. Required fields are marked *