Open Nav
Sign Up

WordPress Click2Shell Chains Forced Theme Installation to Remote Code Execution

wordpress click2shell

Filip Dimitrov

September 22, 2026

A newly disclosed WordPress vulnerability chain dubbed Click2Shell can allow an unauthenticated attacker to turn a single malicious link opened by a logged-in WordPress administrator into server-side PHP code execution.

The vulnerability was patched by WordPress on September 17, 2026, with the release of WordPress 7.1.1

At the time of writing on September 22, Click2Shell has no assigned CVE identifier, and no exploitation in real-world attacks has been publicly confirmed. Full technical details and proof-of-concept code are nevertheless public, significantly lowering the barrier for attackers targeting unpatched WordPress installations.

Click2Shell Vulnerability Overview

AttributeDetails
VulnerabilityClick2Shell
ProductWordPress Core
Attack typeCrafted URL / selector injection / forced theme installation
Authentication required by attackerNo
Victim interactionLogged-in administrator must open the crafted link
Core impactUnauthorized installation and preview of a WordPress.org theme
Full chained impactRemote PHP code execution
Demonstrated secondary componentMobile Repair Zone 2.5.4
Researcher severityHigh – CVSS 3.1 7.1 for forced installation; Critical – CVSS 3.1 9.3 for the demonstrated RCE chain
CVENot assigned as of September 22, 2026
PatchWordPress 7.1.1 and corresponding security releases for older supported branches
Public PoCYes
Active exploitationNo confirmed exploitation at time of writing

How Click2Shell Works

The vulnerability originates in WordPress’s theme installation interface.

WordPress administrators can normally open a URL containing a theme slug to locate and preview a theme from WordPress.org. The problem was that the supplied value was interpreted differently by two separate components.

The WordPress.org Themes API canonicalized the supplied value into a valid theme slug. Browser-side JavaScript inside the WordPress administration panel, however, reused the original unsanitized value inside a jQuery selector.

This discrepancy allowed an attacker to inject selector syntax into the theme parameter. Instead of selecting only the intended theme card, the manipulated selector could reach the legitimate Install control associated with that theme.

WordPress’s own JavaScript would then trigger the button.

Because the victim was already authenticated as an administrator, their session provided both the authorization and nonce needed to install themes. The attacker therefore did not need to know or bypass either security mechanism.

An attacker could cause WordPress to download and install an attacker-selected theme from the official WordPress.org repository simply by convincing a logged-in administrator to open a specially constructed link.

Importantly, the installed theme remained inactive. The website continued using its existing theme, meaning there might be no obvious visual indication that anything had changed.

From Forced Theme Installation to Remote Code Execution

Installing an inactive theme is not equivalent to arbitrary code execution by itself.

The critical discovery was that inactive themes are not necessarily dormant.

When WordPress creates a theme preview through the Customizer, it can load the inactive theme’s functions.php. That allows the theme to register hooks and AJAX handlers even though another theme remains active on the website.

Researchers demonstrated the attack using Mobile Repair Zone version 2.5.4.

The theme exposed an authenticated AJAX handler designed to install and activate plugins. According to the researchers, the vulnerable handler lacked both an appropriate nonce check and a capability check before processing attacker-controlled plugin information.

Once the inactive theme had been installed through the Click2Shell Core vulnerability, the attacker could trigger a Customizer preview that loaded its PHP code.

The exposed AJAX handler could then be supplied with a URL pointing to a plugin package. WordPress would download the package, unpack it into the plugins directory, and load the specified PHP entry point.

This converted the forced-theme-installation primitive into server-side PHP execution under the WordPress web server account.

The complete attack flow can therefore be summarized as:

Malicious link → logged-in administrator opens link → selector injection → WordPress automatically installs legitimate catalog theme → Customizer loads inactive theme PHP → vulnerable AJAX installer becomes reachable → attacker-supplied plugin is downloaded → PHP executes on the server.

No WordPress account is required for the attacker.

The crucial prerequisite is that an administrator with permission to install themes must open the attacker’s crafted URL while authenticated. Ordinary Author or Editor accounts cannot complete the chain because they do not possess the required theme installation capabilities.

More Than One Theme May Be Relevant

Mobile Repair Zone 2.5.4 was the theme used to demonstrate the complete exploit chain, but the issue is not necessarily limited to that package.

Researchers reported finding more than 40 third-party WordPress themes with similar security weaknesses that could potentially expose PHP functionality before activation.

Mitigation

The most important action is to update WordPress Core immediately.

Administrators should verify the running version rather than assuming that automatic updates completed successfully. WordPress sites should run version 7.1.1 or a corresponding patched security release for their supported branch.

Organizations should also inventory both active and inactive themes and remove components that are unnecessary, abandoned, or cannot be maintained securely.

Reducing the number of accounts with Administrator privileges also limits the pool of users capable of triggering the attack.

Administrators should avoid opening untrusted links while authenticated to WordPress administrative sessions and should use separate browser profiles or hardened administration workstations where practical.

Environments that set DISALLOW_FILE_MODS prevent administrators from installing themes and plugins through the WordPress interface and can therefore interrupt the demonstrated forced-installation chain. This should be treated as additional hardening rather than a replacement for installing the security update.

Organizations exposing /wp-admin directly to the internet may additionally consider restricting administrative access through VPNs, IP allowlists, identity-aware proxies, or comparable access controls.

Stay Safe. Stay Secure

OP Innovate Research Team

Under Cyber Attack?

Fill out the form and we will contact you immediately.