wp2shell: Critical WordPress RCE Without Login Actively Exploited

Step by step
How the wp2shell attack unfolded
Click a phase for details – or let the animation play through.
PHASE 1/6 · Initial Access

An anonymous attacker reaches the publicly exposed REST-API batch endpoint of a WordPress instance without any login.

T1190 – Exploit Public-Facing Application
  • Target: publicly reachable endpoint /wp-json/batch/v1
  • Affected: WordPress 6.9.0–6.9.4 and 7.0.0–7.0.1 (full RCE chain)
  • No authentication, no plugin, no user interaction required
  • Per Wiz, 25% of organizations exposed a vulnerable server directly to the internet
PHASE 2/6 · Defense Evasion / Auth Bypass

A route-confusion bug in the batch API bypasses permission checks and invokes an internal handler without validation.

T1211 – Exploitation for Defense Evasion
  • CVE-2026-63030 (CVSS 9.8, Critical) – REST-API route confusion
  • Faulty update of internal lists when a subrequest fails validation
  • Subsequent requests run under the wrong handler without parameter checks
PHASE 3/6 · Execution / Injection

Through the bypassed validation, a manipulated parameter is injected unsanitized into a database query.

T1190 – Exploit Public-Facing Application
  • CVE-2026-60137 (CVSS 7.5, High) – SQL injection
  • Parameter author__not_in passed as a string instead of a number list
  • Value lands unsanitized directly in the database query
PHASE 4/6 · Privilege Escalation

By poisoning the object cache, the attacker temporarily assumes administrator identity.

T1068 – Exploitation for Privilege Escalation
  • Cache poisoning via oEmbed cache and customizer changesets
  • Abuse of a cycle-detection component
  • Precondition: no persistent object cache active
PHASE 5/6 · Persistence

A previously rejected request now successfully creates a new administrator account as a backdoor.

T1136.001 – Create Account: Local Account
  • New admin account created (HTTP status 201)
  • Over 100 backdoor administrator accounts observed in the wild
  • Attacker logs in with the new account
PHASE 6/6 · Impact

The attacker installs a malicious plugin and executes arbitrary code with webserver privileges – full server takeover.

T1505.003 – Server Software Component: Web Shell
  • Installation of a malicious plugin for code execution
  • First probes just 6 hours after patch (23:29 UTC, 2026-07-17)
  • watchTowr reports tens of thousands of exploitation attempts in honeypots
  • 60% of WordPress organizations had at least one vulnerable instance
Short & clear answers
Frequently asked questions about this incident
Am I affected by wp2shell?
Affected versions are WordPress 6.8.0–6.8.5 (SQL injection only), 6.9.0–6.9.4 and 7.0.0–7.0.1 (full RCE chain). You can find your version in the dashboard under "Dashboard → Updates". Alternatively, check your installation automatically using the public checker at https://wp2shell.com.
What do I need to do right now?
Update WordPress immediately to a patched version: 6.8.6, 6.9.5 or 7.0.2. WordPress has force-enabled automatic updates for affected versions, but don't rely on that alone—verify manually. Treat any unpatched, publicly reachable site as an active emergency, as the flaw has been exploited in the wild since July 17, 2026.
How can I tell if my website has already been hacked?
Check "Users → All Users" for unknown, recently created administrator accounts, and "Plugins → Installed Plugins" for unfamiliar or suspicious plugins. Search your web server logs for POST requests to /wp-json/batch/v1 or ?rest_route=/batch/v1, especially with response codes 207, 201 or 200. Also inspect wp-content/uploads/ and wp-content/plugins/ for unknown PHP files, which often contain eval(...).
Is updating enough if I've already been attacked?
No. An update closes the vulnerability but does not remove backdoors that have already been planted. After successful exploitation, over 100 backdoor administrator accounts and malicious plugins were observed. If there are signs of compromise, you must remove all unknown admin accounts and plugins, reset passwords, and ideally perform a clean restore.
Do I have to report a data breach if my site was compromised?
If personal data may have been affected in the compromise, the EU notification obligation under Art. 33 GDPR applies: the incident must generally be reported to the competent data protection authority within 72 hours. Since wp2shell enables full server takeover, you should assume potential data exfiltration in case of compromise. When in doubt, seek legal or data protection advice.
More security news
You might also be interested in
Critical Elementor Pro Flaw: Attackers Can Fully Take Over WordPress Sites
A file upload bug in Elementor Pro up to 4.2.1 allows RCE without login. Version 4.2.2 fixes the flaw – update now!
Pods Plugin: Critical Flaw Enables Admin Takeover, No Login
A critical flaw in the WordPress plugin Pods lets attackers overwrite admin passwords without login. Over 100,000 sites are affected.
miniOrange SAML SSO: Critical Bypass Turns Attackers Into Admins
Two critical auth bypasses in the miniOrange SAML SSO plugin allow forged SAML assertions—up to full WordPress admin access.