XHack Logo
XHack
Products
Services
Compliance
Pricing
Resources
Company
Sign upLogin
XHack Logo
XHackOffensive Security

Certified offensive security team delivering penetration testing evidence written for your auditor.

OSCP+OSCPC-AI/MLPenCASA
support@xhack.io

24/7 SOC Operations

XHack Status
Under attack? Get help now
Services
  • VAPT Services
  • Red Teaming
  • SOC Services
  • Threat Intelligence
  • Incident Response
  • Managed Testing
Pricing
  • Platform Plans
  • Services Pricing
Compliance
  • SOC 2
  • PCI DSS
  • ISO 27001
  • GDPR
  • HIPAA
  • ISO 42001
  • AI Maturity Assessment
  • TX-RAMP
  • NBFC / SECP
  • All Frameworks
Products
  • Vulnerability Assessment
  • GitGuard
  • AI Probe
  • SOC Dashboard
  • AI Agent
  • Cloud Investigation
Comparison
  • XBOW vs XHack
  • Horizon3 vs XHack
  • Strix vs XHack
  • Pentera vs XHack
Resources
  • Platform Tour
  • All Features
  • Install the Agent
  • XHack AI
  • Documentation
  • Blog
  • Case Studies
  • Documents
  • FAQ
Company
  • About Us
  • Our Team
  • Certifications
  • Security and Trust
  • VAPT Explained
  • Contact

© 2026 XHack. All rights reserved.

Security & TrustVulnerability DisclosurePrivacy PolicyTerms of ServiceRefund Policy
Blog/News

CVE-2026-27540: The WooCommerce Plugin With Two Roads to Admin

XHack

XHack

Author

September 29, 2026

13 min read

CVE-2026-27540: The WooCommerce Plugin With Two Roads to Admin

Table of contents

17

What WooCommerce Wholesale Lead Capture Does, and Why Its Registration Form Matters

What CVE-2026-27540 Actually Is

How the Exploit Actually Works

The Companion Bug: CVE-2026-27542 Skips the Guessing Game Entirely

Exploited Since June, Still Ongoing

Are You Exposed to CVE-2026-27540?

Fixing CVE-2026-27540 (and CVE-2026-27542)

Hunting for CVE-2026-27540 Compromise

How XHack Reads CVE-2026-27540

FAQ: CVE-2026-27540 Questions Answered

What is CVE-2026-27540?

Is CVE-2026-27540 being exploited?

Why do some sources say CVE-2026-27540 is CVSS 9.8 instead of 9.0?

What is CVE-2026-27542, and how does it relate?

How do I fix CVE-2026-27540?

Who is at risk from CVE-2026-27540?

The Bottom Line

By Salman Khan, OSCP+, Founder of XHack, SRT (Synack Red Team member)

Read this in 30 seconds: CVE-2026-27540 is an unauthenticated file-upload bug in the WooCommerce Wholesale Lead Capture plugin, and Wordfence has blocked over 100,000 exploitation attempts against it since June, months after the patch shipped.

  • The registration form is the entry point, not an admin screen. An unauthenticated AJAX action meant to accept a lead’s document upload has no login check at all, and its file-type allowlist is read from a parameter the visitor controls.
  • This plugin has two unauthenticated bugs, not one, patched together. CVE-2026-27542, a straight privilege-escalation flaw in the same registration flow, lets an attacker self-register as a full WordPress administrator with no file upload and no guessing required.
  • NVD scores the file-upload bug 9.0, not the 9.8 you’ll see repeated elsewhere. The reason is specific: exploiting it means guessing a folder name PHP generates from the current time, which knocks the attack complexity from Low to High. The companion privilege-escalation bug has no such barrier and is the more dangerous of the two.
  • The patch has existed since February 20, and attackers are still finding unpatched sites in bulk. 100,000-plus blocked attempts since June, with fresh attempts logged in the 24 hours before this was written.
  • The dropped webshell isn’t the end of the visit. It reports host details back and offers a browser-based form for uploading more files, built for a second trip.

A plugin built to capture wholesale leads is instead capturing WordPress installs.

WooCommerce Wholesale Lead Capture, a premium plugin from Rymera Web Co with roughly 6,000 active installs, shipped a fix for two unauthenticated, unrelated-looking bugs back on February 20, 2026. Seven months later, Wordfence is still counting exploitation attempts in the tens of thousands, and a public proof-of-concept tool now automates both attack paths end to end.

Here’s how the file-upload bug actually works, why its companion privilege-escalation bug is arguably worse, and what to check if you run this plugin.

CVE-2026-27540 severity summary: WooCommerce Wholesale Lead Capture plugin, CVSS 9.0, unauthenticated file upload, over 100,000 exploitation attempts blocked by Wordfence since June 2026
CVE-2026-27540 at a glance: an unauthenticated upload with a hidden companion bug

What WooCommerce Wholesale Lead Capture Does, and Why Its Registration Form Matters

WooCommerce Wholesale Lead Capture is a premium add-on for WooCommerce stores that run a wholesale sales channel alongside a normal retail one. Its core job is a public registration form: a prospective wholesale buyer fills it in, optionally attaches a document like a resale certificate, and the store owner approves or rejects the application before granting wholesale pricing access.

That form is unauthenticated by design, because the whole point is to let a stranger apply. Both bugs in this article, CVE-2026-27540 chief among them, live inside the code that handles what an unauthenticated stranger is allowed to submit through it.

What CVE-2026-27540 Actually Is

Here’s NVD’s description:

“Unrestricted Upload of File with Dangerous Type vulnerability in Rymera Web Co Pty Ltd. Woocommerce Wholesale Lead Capture woocommerce-wholesale-lead-capture allows Using Malicious Files. This issue affects Woocommerce Wholesale Lead Capture: from n/a through <= 2.0.3.1.”

  • CWE: CWE-434, unrestricted upload of a dangerous file type.
  • Score: CVSS 3.1 9.0, Critical, vector AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:H/A:H, scored by Patchstack as the CVE Numbering Authority. Note the AC:H (attack complexity: high), the reason this scores lower than the “9.8” figure that circulates in a lot of secondary coverage. More on why below.
  • Affected: all known versions through 2.0.3.1. Patched: 2.0.3.2, released February 20, 2026.

How the Exploit Actually Works

WordPress plugin vulnerability write-ups for a CVE-2026-27540-style bug usually get to point to a public commit diff. This one can’t: WooCommerce Wholesale Lead Capture is a paid plugin distributed directly by Rymera Web Co, not through the public wordpress.org repository, so there’s no public source or patch diff to link. What follows is reconstructed from Wordfence’s and Patchstack’s published descriptions and a public proof-of-concept tool, not from reading the plugin’s own source, and it’s labeled that way throughout.

The CVE-2026-27540 vulnerable code path is an AJAX action called wwlc_file_upload_handler, registered so that it’s reachable by anyone, logged in or not, the same way the registration form itself has to be. The handler is meant to accept a resale certificate or similar document and check its file type before saving it. According to Wordfence’s and Patchstack’s descriptions, that check reads its allowed-extensions list from a request parameter named file_settings, one the visitor supplies, rather than from a fixed, server-side list. In effect, the illustrative shape of the flaw looks like this:

// Illustrative reconstruction, not the plugin's actual source.
// Based on published researcher descriptions of the vulnerable behavior.
function wwlc_file_upload_handler() {
    $settings = json_decode( stripslashes( $_POST['file_settings'] ), true );
    $allowed_extensions = $settings['allowed_types']; // attacker-controlled

    $filename = $_FILES['file']['name'];
    $ext = strtolower( pathinfo( $filename, PATHINFO_EXTENSION ) );

    if ( in_array( $ext, $allowed_extensions ) ) {
        // saved with no further type or content check
        move_uploaded_file( $_FILES['file']['tmp_name'], $upload_dir . '/' . $filename );
    }
}

If that’s an accurate read of the behavior, an attacker just needs to submit a file_settings value that includes php in its own allowlist, alongside a file named something like shell.php, and the handler saves it. A public PoC tool does exactly this: it POSTs a multipart request to /wp-admin/admin-ajax.php with a forged file_settings parameter and a PHP payload.

The file lands in wp-content/uploads/, inside a subdirectory the plugin names dynamically using PHP’s uniqid('wwlc-temp-'). That’s the source of the AC:H in the CVE-2026-27540 CVSS score. uniqid() without its extra-entropy flag is derived from the server’s current microtime, which is predictable, not random, but it isn’t handed back to the attacker in the response either. The published PoC tool’s answer is brute force: it tries directory listing first, then pattern-based guesses, then a time-seeded hex search keyed to the observed request timestamp, then random hex, logging up to 100,000 guesses per target. That’s real work compared to a shell that lands at a URL the server just tells you, which is exactly why this bug is scored a full 0.8 points lower than its companion.

The Companion Bug: CVE-2026-27542 Skips the Guessing Game Entirely

Patched in the same 2.0.3.2 release, reported by the same researcher (Teemu Saarentaus, per Patchstack’s advisory), is CVE-2026-27542, an unauthenticated privilege escalation, CVSS 3.1 9.8, AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H. No AC:H here.

The vulnerable code is a second AJAX handler, wwlc_create_user, the one behind the same public registration form. Per the same PoC tool’s documentation, the handler processes registration submissions without adequately validating role-related fields, so a crafted POST that injects wp_capabilities[administrator] directly into the new account’s user metadata is accepted at account-creation time. No brute-forcing, no waiting, no second request: submit the registration form with that field forged in, and the account WordPress creates for you is already a full administrator.

That makes CVE-2026-27542 the more practically dangerous of the pair, even though CVE-2026-27540 is the one that made headlines this week. A skilled attacker with both bugs in hand would almost certainly reach for this one first.

Comparing CVE-2026-27540 and CVE-2026-27542: the file upload bug needs a forged file_settings parameter and up to 100,000 folder-name guesses, while the privilege escalation bug needs only one forged registration request to create a full administrator account
One plugin, two bugs: why CVE-2026-27542 is the one to actually worry about

Exploited Since June, Still Ongoing

Wordfence’s own count: over 100,000 blocked exploitation attempts against CVE-2026-27540 since June 2026, four months after the February patch, with fresh attempts still logged as recently as the 24 hours before this article was researched. That gap, patch available for months, mass exploitation happening anyway, is the same pattern that’s shown up repeatedly in WordPress plugin CVEs this year: a fix exists, but a large share of installs never apply it. Reporting from The Hacker News covers the same exploitation wave, and our own wp2shell writeup and WordPress core template writeup cover two other 2026 WordPress bugs that followed the identical fixed-but-still-exploited shape.

The dropped payload isn’t a one-shot shell. Reporting on the observed attacks describes the uploaded shell.php as reporting host details back to the attacker and providing a browser-based upload form for planting further files, built for repeat visits rather than a single smash-and-grab.

Wordfence’s published indicators include a set of attacker source IPs actively used against this vulnerability: 92.241.13.213, 31.59.129.150, 2a0f:85c1:840:5389::1, 92.241.13.140, 23.137.105.214, 23.180.120.140, 104.194.9.138, 187.75.114.36, 114.10.43.203, and 37.114.144.209.

Are You Exposed to CVE-2026-27540?

You’re exposed to CVE-2026-27540 if both of these are true:

  1. You run WooCommerce Wholesale Lead Capture, version 2.0.3.1 or earlier. Check the plugin’s version under Plugins in wp-admin. Because it’s sold directly rather than through wordpress.org, an out-of-date copy won’t show the usual repository update nag unless your license and update feed are configured correctly, worth checking directly if you’re not sure it’s current.
  2. The plugin’s registration form is reachable from the internet, which for a WooCommerce store almost always means it is, by design.

If you’re running 2.0.3.2 or later, both CVE-2026-27540 and CVE-2026-27542 are patched. If you don’t recognize the plugin name but run WooCommerce, check your plugin list rather than assuming, wholesale add-ons are common enough on B2B storefronts to be easy to forget about.

Fixing CVE-2026-27540 (and CVE-2026-27542)

  1. Update WooCommerce Wholesale Lead Capture to 2.0.3.2 or later immediately to fix CVE-2026-27540. One update closes both the file-upload bug and the privilege-escalation bug, since they were patched together.
  2. Treat this as an emergency update, not a routine one, given the confirmed, ongoing exploitation volume. Don’t wait for a normal patch cycle.
  3. The vendor’s own changelog gives almost nothing away: the 2.0.3.2 entry reads only “security issue fixes and hardening,” with no CVE reference or technical detail. That’s consistent with this being externally researched and disclosed, not something the vendor volunteered, so don’t expect a detailed advisory from Rymera Web Co itself; Wordfence’s and Patchstack’s write-ups are the primary technical sources.
  4. Then hunt, since the exploitation window has run for months before this specific spike in attempts.

Hunting for CVE-2026-27540 Compromise

# Look for uploaded PHP inside the plugin's temp-upload pattern
find /path/to/wordpress/wp-content/uploads -type d -iname 'wwlc-temp-*'
find /path/to/wordpress/wp-content/uploads -type f -iname '*.php' -newer /path/to/wordpress/wp-content/plugins/woocommerce-wholesale-lead-capture

What to check for CVE-2026-27540 specifically:

  • Any wwlc-temp-* directory under wp-content/uploads/ containing a .php file. None should exist; the plugin’s normal file attachments are documents and images, not executable code.
  • Any admin account you don’t recognize creating itself around a wholesale registration, tied to the CVE-2026-27542 path rather than CVE-2026-27540. Check Users in wp-admin against your own hiring and onboarding records, not just against “looks suspicious.”
  • Outbound or inbound traffic involving the IP addresses listed above, in your web server or firewall logs, going back to at least June 2026 if your logs run that far.
  • Requests to /wp-admin/admin-ajax.php with action=wwlc_file_upload_handler or action=wwlc_create_user in access logs, particularly any carrying a file_settings parameter or a wp_capabilities field, which a legitimate wholesale application would never include.
  • If you find a webshell or an unexplained admin account, treat it as full compromise: rotate every credential the site had access to (database, hosting panel, any API keys stored in options tables), not just the WordPress admin password, and consider the standard incident-response step of restoring from a backup that predates June 2026.
What CVE-2026-27540 exploitation looks like on a WordPress site: the wwlc-temp upload path pattern, the two AJAX actions to grep, the shell.php webshell filename, and the June 2026 to ongoing exploitation window
CVE-2026-27540 hunt signals: what to check before you assume the patch cleaned things up

How XHack Reads CVE-2026-27540

The interesting CVE-2026-27540 lesson here isn’t the file upload, it’s the pattern behind both bugs: a form built to accept input from an unauthenticated stranger, where a security-relevant decision, which file types are allowed, or which role a new account gets, was driven by data that same stranger controls. That’s exactly the class of bug a web application penetration test is built to find, and it rarely shows up in an automated scan, because the endpoint looks legitimate and the parameters look like normal form fields.

We’d test a form like this by systematically trying to influence every parameter that looks like it configures behavior rather than carries content, file type allowlists, role fields, redirect targets, not just the ones an attacker is obviously meant to fill in. That’s slower than a scanner and it’s exactly why a scanner missed this class of bug on thousands of sites for months.

Our ultimate penetration testing checklist covers how that kind of engagement is scoped for a WordPress or WooCommerce storefront specifically.

FAQ: CVE-2026-27540 Questions Answered

What is CVE-2026-27540?

CVE-2026-27540 is an unauthenticated arbitrary file-upload vulnerability in the WooCommerce Wholesale Lead Capture plugin, CVSS 9.0. An unauthenticated attacker can submit a file with a forged file_settings parameter to the plugin’s wwlc_file_upload_handler AJAX action, bypassing its file-type allowlist to upload a PHP web shell.

Is CVE-2026-27540 being exploited?

Yes. Wordfence has blocked over 100,000 exploitation attempts against it since June 2026, four months after the February 20 patch, with attempts continuing as of this writing.

Why do some sources say CVE-2026-27540 is CVSS 9.8 instead of 9.0?

NVD and Patchstack score it 9.0 because the uploaded file lands in an unpredictable, dynamically named folder, raising attack complexity to High. The 9.8 figure that circulates in some coverage more likely reflects the companion bug, CVE-2026-27542, which has no such barrier and is scored 9.8.

What is CVE-2026-27542, and how does it relate?

CVE-2026-27542 is an unauthenticated privilege-escalation vulnerability in the same plugin’s registration handler (wwlc_create_user), patched in the same 2.0.3.2 release. It lets an attacker self-register as a full WordPress administrator by injecting a forged capability field into the registration request, with no file upload and no guessing required.

How do I fix CVE-2026-27540?

Update WooCommerce Wholesale Lead Capture to version 2.0.3.2 or later. This also fixes CVE-2026-27542. Treat it as an emergency update given the scale of ongoing exploitation, and check for unauthorized PHP files and unrecognized admin accounts afterward.

Who is at risk from CVE-2026-27540?

Any WordPress site running WooCommerce Wholesale Lead Capture 2.0.3.1 or earlier with its registration form reachable from the internet, which is the plugin’s normal, intended configuration.

The Bottom Line

CVE-2026-27540 and its companion, CVE-2026-27542, both trace back to the same mistake: a public registration form that let the visitor configure security-relevant behavior instead of just submitting an application. One bug needs a lucky folder guess to pay off; the other doesn’t need luck at all.

The patch has existed since February. If you run this plugin and haven’t checked your version since then, do that first, then check your uploads folder and your user list for anything that shouldn’t be there before you assume the update alone cleaned things up.


Categories

News

Previous

CVE-2026-76504: The Cisco SD-WAN Bug That Admin Logs In With One Encoded Letter

Next

DORA TLPT: The Complete 2026 Guide to Threat-Led Penetration Testing

On this page

What WooCommerce Wholesale Lead Capture Does, and Why Its Registration Form Matters

What CVE-2026-27540 Actually Is

How the Exploit Actually Works

The Companion Bug: CVE-2026-27542 Skips the Guessing Game Entirely

Exploited Since June, Still Ongoing

Are You Exposed to CVE-2026-27540?

Fixing CVE-2026-27540 (and CVE-2026-27542)

Hunting for CVE-2026-27540 Compromise

How XHack Reads CVE-2026-27540

FAQ: CVE-2026-27540 Questions Answered

What is CVE-2026-27540?

Is CVE-2026-27540 being exploited?

Why do some sources say CVE-2026-27540 is CVSS 9.8 instead of 9.0?

What is CVE-2026-27542, and how does it relate?

How do I fix CVE-2026-27540?

Who is at risk from CVE-2026-27540?

The Bottom Line

Related articles

Continue reading

CVE-2026-104286: The Critical FortiMail Bug That Writes Files Anywhere on Disk

News

CVE-2026-104286: The Critical FortiMail Bug That Writes Files Anywhere on Disk

CVE-2026-104286 is a CVSS 9.8 unauthenticated arbitrary file-write bug in Fortinet FortiMail, actively exploited. Fortin...

Read article
CVE-2026-76504: The Cisco SD-WAN Bug That Admin Logs In With One Encoded Letter

News

CVE-2026-76504: The Cisco SD-WAN Bug That Admin Logs In With One Encoded Letter

CVE-2026-76504 is a CVSS 9.8 unauthenticated admin-access bug in Cisco SD-WAN Manager, actively exploited. It’s th...

Read article
CVE-2026-88771: The Citrix NetScaler Bug That Turns a Login Field Into Root

News

CVE-2026-88771: The Citrix NetScaler Bug That Turns a Login Field Into Root

CVE-2026-88771 is a CVSS 9.5 unauthenticated RCE in every default Citrix NetScaler ADC/Gateway. Exploited as a zero-day ...

Read article