wp2shell: One Request, No Login, Full Control of WordPress Core
A chained flaw dubbed wp2shell lets an unauthenticated attacker take over WordPress Core with a single web request, combining a REST API batch-route confusion bug, CVE-2026-63030, with a SQL injection flaw, CVE-2026-60137, for full remote code execution on WordPress 6.9 and 7.0.
TA2026205 July 20, 2026TA2026205A1CVE-2026-63030, CVE-2026-601376.8.x, 6.9.x, 7.0.x, 7.1 beta9.1 (CVE-2026-60137)Summary
First Seen: July 2026
Affected Products: WordPress Core 6.8.x, 6.9.x, and 7.0.x (7.1 beta also affected)
WordPress Core, which powers more than 500 million websites, is exposed to a serious flaw chain called wp2shell that lets a remote attacker take over a site with a single web request, with no login or plugins needed. wp2shell combines two bugs: CVE-2026-63030, a REST API batch-route confusion introduced in WordPress 6.9, and CVE-2026-60137, a SQL injection in the author__not_in parameter of WP_Query. On WordPress 6.9 and 7.0, the two chain together into full remote code execution. WordPress released fixes (7.0.2, 6.9.5, 6.8.6, and 7.1 beta2) on July 17, 2026, and switched on forced auto-updates, but working exploits are already circulating on GitHub, so any WordPress Core site not yet confirmed on a patched version should be updated immediately.
CVEs at a Glance
| CVE | Name | Affected Product |
|---|---|---|
CVE-2026-63030 | wp2shell (WordPress Remote Code Execution Vulnerability) | WordPress Core |
CVE-2026-60137 | wp2shell (WordPress SQL Injection Vulnerability) | WordPress Core |
Vulnerability Details
#1 — A Zero-Precondition Chain in WordPress Core
wp2shell is not a single vulnerability but a chain of two distinct weaknesses in WordPress core that, when combined, allow an anonymous attacker to move from an ordinary web request to remote code execution. Researchers describe an attack with no preconditions: it needs no login, no plugins, and no special settings, only a reachable WordPress Core site running an affected version. That combination of zero prerequisites and a target base measured in the hundreds of millions of sites is what makes the wp2shell chain so significant.
#2 — CVE-2026-63030: REST API Batch-Route Confusion
The first flaw in the chain, CVE-2026-63030, is a REST API batch-route confusion weakness that WordPress rates as critical. The batch endpoint is a long-standing feature that has shipped since WordPress 5.6 and lets clients bundle several REST calls into one request, but a change introduced in the WordPress 6.9 release created a route-handling confusion that an unauthenticated caller can abuse.
#3 — CVE-2026-60137: SQL Injection in WP_Query
The second flaw, CVE-2026-60137, is a SQL injection vulnerability in the author__not_in parameter of the WP_Query class, mapped to CWE-89 and scored CVSS 3.1 9.1. WordPress does not properly sanitize this parameter, so untrusted input reaching it can be used to inject arbitrary SQL, driven by the potential to both read and modify database contents over the network without authentication. The vendor's own advisory labels this issue as moderate in isolation, reflecting that, on its own, it depends on how a given WordPress Core site exposes the parameter.
#4 — How the Chain Interlocks
On WordPress 6.9 and later, the batch-route confusion gives an anonymous request a way to reach code paths that feed the vulnerable query logic, turning the SQL injection into a remotely triggerable primitive that ultimately yields code execution. On WordPress 6.8 the SQL injection is present but cannot be chained this way, because the batch-route confusion bug did not exist before 6.9, so 6.8 sites face data exposure rather than full compromise.
#5 — Scope, Fixed Versions, and Forced Updates
The complete wp2shell remote code execution chain affects WordPress 6.9.0 through 6.9.4 and 7.0.0 through 7.0.1, while the SQL injection issue alone reaches back to 6.8.0 through 6.8.5. Fixes landed in WordPress 7.0.2 and 6.9.5, with 6.8.6 addressing the SQL injection on the older branch and 7.1 beta2 covering the pre-release line. The 7.0.2 update touched three core files tied to REST request handling and query construction, and WordPress enabled forced background updates so that many affected sites would be patched automatically.
#6 — Public Proof-of-Concept Exploits
Multiple proof-of-concept exploits for wp2shell were posted to GitHub. Some abuse the SQL injection to extract WordPress password hashes, crack an administrator credential offline, then log in, upload a malicious plugin, and run commands, while others claim true pre-authentication code execution against WordPress Core without any credentials, matching the researchers' original description.
Affected Versions, CPEs, and CWEs
| CVE ID | Affected Products | Affected CPE | CWE ID |
|---|---|---|---|
CVE-2026-63030 | WordPress Core (Version before 6.9.5 and 7.0.2) | cpe:2.3:a:wordpress:wordpress:*:*:*:*:*:*:*:* | CWE-436 |
CVE-2026-60137 | WordPress Core (Version before 6.9.5 and 7.0.2) | cpe:2.3:a:wordpress:wordpress:*:*:*:*:*:*:*:* | CWE-89 |
Recommendations
Move every affected WordPress Core site to 7.0.2 or 6.9.5 without delay, and update 6.8 sites to 6.8.6 to close the SQL injection issue on that branch. This is the only complete fix for the wp2shell chain, and with public exploits already circulating, patching is the single most important action to take right now.
WordPress enabled forced auto-updates, but do not assume the push reached every site, especially those with automatic updates disabled. Check the actual version each WordPress Core site is running from the dashboard rather than trusting that the update applied, and manually update any instance still on a vulnerable release.
If updating is not immediately possible, block anonymous access to the batch endpoint as an emergency stopgap. At the WAF level this means blocking both /wp-json/batch/v1 and the ?rest_route=/batch/v1 query-string route, since a rule covering only the first path leaves the second exposed. Alternatively, restrict or disable unauthenticated REST API access with a suitable plugin.
On any WordPress Core site that may have been exposed, reset administrator and database passwords and force re-authentication, since the SQL injection can expose stored password hashes. Remove any account you cannot account for and confirm that remaining privileged users are legitimate.
Potential MITRE ATT&CK TTPs
T1190Exploit Public-Facing ApplicationT1059Command and Scripting InterpreterT1110Brute ForceT1110.002: Password CrackingT1588Obtain CapabilitiesT1588.006: VulnerabilitiesT1078Valid AccountsT1505Server Software ComponentReferences & Patch Links
Patch Link
References
July 20, 2026 • 07:30 AM © 2026 All Rights are Reserved by Hive Pro 