CVE-2026-32931Chamilo LMS是一款学习管理系统。在1.11.38和2.0.0-RC.3之前的版本中,练习声音上传功能存在不受限制的文件上传漏洞。经过身份认证的教师可以通过伪造Content-Type头部为audio/mpeg,上传保留原.php扩展名的恶意文件。该文件被放置在Web可访问目录中,导致攻击者能够以Web服务器用户身份执行任意代码,从而控制服务器。
该漏洞的核心在于Chamilo LMS处理练习模块音频文件上传时的逻辑缺陷。系统仅依赖HTTP请求头中的Content-Type字段来判断文件类型,未结合文件扩展名白名单或文件内容(Magic Bytes)进行双重验证。攻击者利用经过身份认证的教师权限,构造包含恶意PHP代码的文件(如webshell),将文件名保留为.php后缀,但在上传包中将Content-Type伪装为audio/mpeg。服务器错误地接收并保存了该文件,且未对其进行重命名或移动到非Web目录。由于文件保留了可执行的.php后缀且位于Web根目录下,攻击者只需通过HTTP请求直接访问该文件,即可触发服务器端解析执行PHP代码,从而获得服务器控制权。此时攻击者身份通常为Web服务器运行用户(如www-data),可进一步渗透内网或窃取数据。