ALITEQ.

run WordPress? stop and update right now this bug hands your entire site to a stranger

no login. no plugin. no weird setup. one anonymous request and a stranger owns a default WordPress site. the fix is out — here's exactly what to check before you assume you're safe.

Priya NairUpdated Jul 225 min readWeb story
Lines of HTML code on screen

WordPress shipped emergency releases 6.9.5 and 7.0.2 on July 17 for a bug researchers named wp2shell — a pre-authentication remote code execution flaw that needs no login, no plugin, and no misconfiguration. A completely default install is exploitable through a single anonymous HTTP request. We ran this site on WordPress for years before this rebuild, so a core-level bug like this one isn't an abstract story for us.

0.0/ 10

CVSS severity: Critical

Rated 9.8 by WPScan — near the maximum a vulnerability can score.

REST API batch route confusion

CVE-2026-63030

the entry point

SQL injection in WP_Query

CVE-2026-60137

author__not_in parameter — the payload

6.9.0–6.9.4, 7.0.0–7.0.1

Affected

fixed in 6.9.5 / 7.0.2

None

Auth required

anonymous, default install, no plugins

How the chain actually works, in plain terms

The REST API's batch endpoint gets confused about which route a request is actually meant for, letting an anonymous request get processed as something more privileged than it should be. That mis-routed request reaches WP_Query's author__not_in parameter, which turns out to be vulnerable to SQL injection. Chain the two together and an attacker with no account at all can get code execution on the server. Neither half of the chain touches a plugin — this is core WordPress, on a stock install. If you want the step-by-step version of how that misrouting reaches the SQL injection, we broke down how wp2shell works in detail.

How the wp2shell chain reaches code execution
  1. Anonymous request

    One HTTP call to the REST API batch endpoint. No login, no plugin.

  2. Route confusion

    wp_parse_url() fails mid-batch, so later requests run under the wrong handler (CVE-2026-63030).

  3. SQL injection

    The misrouted request reaches WP_Query's author__not_in parameter (CVE-2026-60137).

  4. Code execution

    Database write is escalated to running the attacker's own code — a shell.

  5. Full takeover

    The attacker controls the site and the server under it.

Each stage feeds the next — neither half is a full takeover alone. That's what makes it a chain.

What to actually verify — not just "did it update"

  1. Log into wp-admin → Updates and confirm the version reads 6.9.5 or 7.0.2. Don't assume a background auto-update silently succeeded.
  2. If a host or a security plugin disables core auto-updates on your site, it did not get the automatic fix — that site needs a manual update now. (This is exactly the gap the forced auto-update can miss — and why managed vs self-hosted sites fared so differently.)
  3. Managing a site without direct login access? wp2shell.com hosts a public checker researchers published alongside the disclosure.
  4. Running an affected version that sat unpatched through the disclosure window? Treat it as potentially compromised — check for unfamiliar admin accounts or files, don't just patch and move on. Our 10-minute security audit walks through checking for compromise.

Discovered by Adam Kues at Assetnote (Searchlight Cyber), reported through WordPress's HackerOne program — the kind of responsible disclosure that got a fix shipped before mass exploitation, not after.

WordPress.org has turned on forced automatic updates for sites running affected versions, which will quietly close this for most of the web. The gap that matters is the sites where auto-updates are disabled by a host, a plugin, or an admin setting — that's exactly who this piece is for.

wp2shell: quick answers

What versions of WordPress does wp2shell affect?
The full remote-code-execution chain affects WordPress 6.9.0–6.9.4 and 7.0.0–7.0.1. It's fixed in 6.9.5 and 7.0.2. Versions 6.8.0–6.8.5 have only the SQL-injection half and need a facilitating plugin; 6.8 and earlier lack the vulnerable batch endpoint. Update to a patched version regardless of which you run.
How do I know if I'm already patched?
Log into wp-admin and check the version in the footer, or go to Dashboard → Updates. 6.9.5, 7.0.2 or higher means you're safe. Don't assume a background auto-update ran — if your host or a plugin disabled core auto-updates, you need to update manually. Our security audit covers verifying this properly.
What does 'wp2shell' mean?
It's a nickname: 'WordPress to shell,' where a shell is the ability to run commands on a server. It refers to going from an anonymous web request to full code execution. The official identifiers are CVE-2026-63030 and CVE-2026-60137. We explain the full picture in what is wp2shell.

For the complete picture, start with what is wp2shell — the plain-English overview — or the technical how it works breakdown. And if you run login or SSO plugins, note a separate critical WordPress flaw landed the same week that updating core does nothing for.

Software & Systems Editor

Priya Nair

Priya has daily-driven more Linux distros than she can name and treats her setup like a workshop. She covers the operating systems, apps and settings worth your time — and cheerfully calls out the 'optimizations' that just quietly break your machine.

Work out the hardware

The Aliteq brief

The tech worth knowing — hardware, AI, gaming, deals. No spam, unsubscribe anytime.

Keep reading