CVE-2026-27066

Live sales notification for WooCommerce <= 2.3.46 - Missing Authorization

mediumMissing Authorization
5.3
CVSS Score
5.3
CVSS Score
medium
Severity
Unpatched
Patched in
N/A
Time to patch

Description

The Live sales notification for WooCommerce plugin for WordPress is vulnerable to unauthorized access due to a missing capability check on a function in versions up to, and including, 2.3.46. This makes it possible for unauthenticated attackers to perform an unauthorized action.

CVSS Vector Breakdown

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N
Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
None
Confidentiality
Low
Integrity
None
Availability

Technical Details

Affected versions<=2.3.46
PublishedJanuary 11, 2026
Last updatedMarch 7, 2026
Research Plan
Unverified

This research plan outlines the process for investigating and exploiting **CVE-2026-27066**, a missing authorization vulnerability in the **PiWeb Live sales notification for WooCommerce** plugin. ## 1. Vulnerability Summary The **Live sales notification for WooCommerce** plugin (versions <= 2.3.46)…

Show full research plan

This research plan outlines the process for investigating and exploiting CVE-2026-27066, a missing authorization vulnerability in the PiWeb Live sales notification for WooCommerce plugin.

1. Vulnerability Summary

The Live sales notification for WooCommerce plugin (versions <= 2.3.46) suffers from a missing authorization vulnerability. Specifically, a function responsible for performing sensitive actions (likely updating settings or managing notification data) is accessible via a WordPress hook (such as admin_init or a wp_ajax_nopriv_ action) without a sufficient capability check (e.g., current_user_can( 'manage_options' )). This allows unauthenticated attackers to modify plugin configurations or perform unauthorized actions by sending crafted HTTP requests.

2. Attack Vector Analysis

  • Endpoint: wp-admin/admin-ajax.php (if AJAX-based) or any page (if hooked to admin_init or init).
  • Action: To be identified (look for pi_lsn_, lsn_, or piweb_ prefixes).
  • Authentication: None (Unauthenticated).
  • Vulnerability Type: Missing Authorization (Missing current_user_can check).
  • Payload: POST parameters aimed at modifying plugin options (e.g., update_option).

3. Code Flow

  1. Entry Point: An unauthenticated user sends a request to admin-ajax.php or a frontend page.
  2. Hook Registration: The plugin registers a callback using add_action('wp_ajax_nopriv_[ACTION_NAME]', ...) or add_action('admin_init', ...).
  3. Missing Check: The callback function is invoked. It lacks a check for current_user_can() to verify administrative privileges.
  4. Action Execution: The function processes user-supplied input (from $_POST or $_GET) and performs an action, such as calling update_option() or modifying database records via $wpdb.

4. Nonce Acquisition Strategy

If the vulnerable endpoint requires a nonce, the researcher must identify where the nonce is generated and exposed.

  1. Identify Localization: Look for wp_localize_script in the plugin source (often in a class handling assets or frontend displays).
  2. Target Variable: Look for a JS object like pi_lsn_ajax_object or lsn_vars containing a nonce or security key.
  3. Extraction Method:
    • Identify a shortcode that loads the plugin assets (e.g., [piweb_live_sales_notification] - inferred).
    • Create a test page: wp post create --post_type=page --post_status=publish --post_content='[SHORTCODE]'.
    • Navigate to the page and use browser_eval("window.LSN_VARS?.nonce") to retrieve the token.
  4. Bypass Check: If the vulnerable function uses check_ajax_referer with the die parameter set to false and doesn't check the return value, the nonce is irrelevant.

5. Exploitation Strategy

Step 1: Identification

Search for the vulnerable action/hook:

# Search for AJAX actions
grep -rn "wp_ajax_nopriv_" .

# Search for settings-related AJAX or admin_init hooks
grep -rn "add_action.*admin_init" .
grep -rn "update_option" .

Step 2: Payload Crafting

If an action like lsn_save_settings (inferred) is found hooked to wp_ajax_nopriv_:

  • URL: http://[TARGET]/wp-admin/admin-ajax.php
  • Method: POST
  • Headers: Content-Type: application/x-www-form-urlencoded
  • Body: action=lsn_save_settings&lsn_option_name=new_value&security=[NONCE]

Step 3: Execution

Use the http_request tool to send the crafted payload to the target.

6. Test Data Setup

  1. Install WooCommerce: The plugin depends on WooCommerce to function.
  2. Install Plugin: Install version <= 2.3.46 of live-sales-notifications-for-woocommerce.
  3. Identify Options: Use WP-CLI to identify the option names used by the plugin:
    wp option list --search="*lsn*"
    wp option list --search="*piweb*"
    

7. Expected Results

  • Successful Exploit: The server returns a success code (e.g., 200 OK or a JSON {"success":true}).
  • Impact: The targeted WordPress option (e.g., lsn_settings) is modified with the attacker's value, which could be used to disable notifications, change the message to include malicious links, or perform XSS if the settings are output unescaped.

8. Verification Steps

After sending the exploit request, verify the change using WP-CLI:

# Check if the targeted option was updated
wp option get [VULNERABLE_OPTION_NAME]

9. Alternative Approaches

  • Settings Injection: If the plugin doesn't have a specific "save settings" AJAX action, check for a generic one that might allow calling update_option dynamically.
  • Import/Export: Look for unauthenticated import/export actions (e.g., wp_ajax_nopriv_lsn_import_settings) which might allow overwriting the entire plugin configuration with a JSON payload.
  • Direct Option Manipulation: If the vulnerability is in an admin_init hook, check if simply visiting wp-admin/admin-ajax.php?action=... or wp-admin/admin-post.php with specific GET/POST parameters triggers the state change.
Research Findings
Static analysis — not yet PoC-verified

Summary

The PiWeb Live sales notification for WooCommerce plugin for WordPress is vulnerable to unauthorized access and settings modification in versions up to, and including, 2.3.46. This is due to missing capability checks on functions accessible via AJAX or admin hooks, allowing unauthenticated attackers to perform unauthorized actions such as updating plugin configurations.

Exploit Outline

The exploit involves identifying a vulnerable AJAX action registered via the 'wp_ajax_nopriv_' hook (or an 'admin_init' hook) that processes administrative settings. An unauthenticated attacker sends a POST request to '/wp-admin/admin-ajax.php' with the 'action' parameter corresponding to the vulnerable hook and payload parameters containing the target configuration values. If the endpoint requires a nonce, it can typically be retrieved from a public-facing page by extracting localized JavaScript variables (such as 'LSN_VARS') where the plugin is active.

Check if your site is affected.

Run a free security audit to detect vulnerable plugins, outdated versions, and misconfigurations.