Live sales notification for WooCommerce <= 2.3.46 - Missing Authorization
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:NTechnical Details
<=2.3.46This 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 toadmin_initorinit). - Action: To be identified (look for
pi_lsn_,lsn_, orpiweb_prefixes). - Authentication: None (Unauthenticated).
- Vulnerability Type: Missing Authorization (Missing
current_user_cancheck). - Payload: POST parameters aimed at modifying plugin options (e.g.,
update_option).
3. Code Flow
- Entry Point: An unauthenticated user sends a request to
admin-ajax.phpor a frontend page. - Hook Registration: The plugin registers a callback using
add_action('wp_ajax_nopriv_[ACTION_NAME]', ...)oradd_action('admin_init', ...). - Missing Check: The callback function is invoked. It lacks a check for
current_user_can()to verify administrative privileges. - Action Execution: The function processes user-supplied input (from
$_POSTor$_GET) and performs an action, such as callingupdate_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.
- Identify Localization: Look for
wp_localize_scriptin the plugin source (often in a class handling assets or frontend displays). - Target Variable: Look for a JS object like
pi_lsn_ajax_objectorlsn_varscontaining anonceorsecuritykey. - 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.
- Identify a shortcode that loads the plugin assets (e.g.,
- Bypass Check: If the vulnerable function uses
check_ajax_refererwith thedieparameter set tofalseand 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
- Install WooCommerce: The plugin depends on WooCommerce to function.
- Install Plugin: Install version <= 2.3.46 of
live-sales-notifications-for-woocommerce. - 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 OKor 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_optiondynamically. - 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_inithook, check if simply visitingwp-admin/admin-ajax.php?action=...orwp-admin/admin-post.phpwith specific GET/POST parameters triggers the state change.
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.