SystemVll/CVE-2026-21858

GitHub: SystemVll/CVE-2026-21858

CVE-2026-21858 概念验证工具,用于检测 n8n 平台因表单工作流输入验证不足导致的未授权远程代码执行漏洞。

Stars: 3 | Forks: 0

# CVE-2026-21858 ## n8n 工作流自动化平台 - 远程代码执行 一个用于检测 CVE-2026-21858 的安全研究工具,该漏洞是 n8n 工作流自动化平台中的一个严重远程代码执行漏洞。 ## 目录 - [漏洞概述](#vulnerability-summary) - [受影响版本](#affected-versions) - [技术分析](#technical-analysis) - [前置条件](#prerequisites) - [安装说明](#installation) - [使用方法](#usage) - [输出参考](#output-reference) - [检测方法](#detection-methodology) - [缓解与修复](#mitigation-and-remediation) - [入侵指标](#indicators-of-compromise) - [法律免责声明](#legal-disclaimer) - [参考资料](#references) - [致谢](#credits) ## 漏洞概述 | 字段 | 值 | |-------|-------| | CVE 标识符 | CVE-2026-21858 | | CVSS v3.1 评分 | 10.0(严重) | | CVSS 向量 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H | | CWE 分类 | CWE-94: 代码生成控制不当 | | 供应商 | n8n GmbH | | 产品 | n8n 工作流自动化 | | 披露日期 | 2026年1月 | | 补丁状态 | 已提供(v1.121.0+) | ### 执行摘要 n8n 1.65.0 到 1.120.x 版本中存在一个严重漏洞,允许未经身份验证的远程攻击者在底层服务器上执行任意代码。该漏洞通过特制的基于表单的工作流被利用,从而导致未经授权的文件系统访问和命令执行。 ### 影响评估 - **机密性**:系统数据完全泄露 - **完整性**:任意文件修改和代码执行 - **可用性**:可能导致系统被完全接管或拒绝服务 - **影响范围**:已改变 - 利用该漏洞可能会影响受漏洞组件以外的资源 ## 受影响版本 | 版本范围 | 状态 | |---------------|--------| | < 1.65.0 | 不受影响 | | 1.65.0 - 1.120.x | 存在漏洞 | | >= 1.121.0 | 已修复 | ## 技术分析 ### 漏洞根本原因 该漏洞源于基于表单的工作流执行引擎中输入验证不足。当通过表单触发器处理用户提供的数据时,n8n 在将输入参数传递给内部执行上下文之前未能正确进行清理。 ### 攻击向量 1. 攻击者发现一个可公开访问的 n8n 实例 2. 利用目标基于表单的工作流端点 3. 通过表单输入字段注入恶意 payload 4. 该 payload 以 n8n 服务账户的权限执行 5. 实现任意文件读取/写入和命令执行 ### 利用复杂性 - **前置条件**:具有对目标 n8n 实例的网络访问权限 - **身份验证**:不需要 - **用户交互**:无 - **攻击复杂性**:低 ## 前置条件 ### 系统要求 - Python 3.12 或更高版本 - 具有与目标 n8n 实例的网络连接 - 具有执行 Python 脚本的足够权限 ### 依赖项 | 包名 | 最低版本 | 用途 | |---------|-----------------|---------| | requests | 2.31.0 | HTTP 请求处理 | | urllib3 | 2.0.0 | URL 和连接管理 | | packaging | 23.0 | 版本比较逻辑 | ## 安装说明 ### 方法 1:使用 uv(推荐) [uv](https://github.com/astral-sh/uv) 是一个快速的 Python 包安装和解析工具。 ``` # Clone the repository git clone https://github.com/SystemVll/CVE-2026-21858.git cd CVE-2026-21858 # 安装依赖并创建虚拟环境 uv sync # 运行工具 uv run python main.py -u https://target.example.com ``` ### 方法 2:使用 pip ``` # Clone the repository git clone https://github.com/SystemVll/CVE-2026-21858.git cd CVE-2026-21858 # 创建虚拟环境(推荐) python3 -m venv venv source venv/bin/activate # Linux/macOS # 或 .\venv\Scripts\activate # Windows # 安装依赖 pip install requests>=2.31.0 urllib3>=2.0.0 packaging>=23.0 # 运行工具 python main.py -u https://target.example.com ``` ### 方法 3:手动安装 ``` # 确保已安装 Python 3.12+ python3 --version # 安装所需的包 pip install requests urllib3 packaging # 下载并运行 curl -O https://raw.githubusercontent.com/SystemVll/CVE-2026-21858/main/main.py python3 main.py -u https://target.example.com ``` ## 使用方法 ### 命令行界面 ``` Usage: python main.py -u Scan single target python main.py -l Scan multiple targets from file Arguments: -u Single target URL -l Path to file containing target URLs (one per line) ``` ### 单目标扫描 测试单个 n8n 实例是否存在漏洞: ``` python main.py -u https://n8n.example.com ``` ``` python main.py -u http://192.168.1.100:5678 ``` ### 批量目标扫描 从文件扫描多个目标: ``` python main.py -l targets.txt ``` **目标文件格式** (`targets.txt`): ``` https://n8n.company-a.com https://n8n.company-b.com:5678 http://10.0.0.50:5678 n8n.company-c.com 192.168.1.100:5678 ``` 注意事项: - 每行一个目标 - 没有协议前缀的 URL 默认使用 `https://` - 空行将被忽略 - 使用多线程并发扫描目标 ## 输出参考 ### 状态指示器 | 指示器 | 颜色 | 描述 | |-----------|-------|-------------| | `[VULNERABLE]` | 绿色 | 目标运行存在漏洞的 n8n 版本 (1.65.0 - 1.120.x) | | `[SAFE]` | 蓝色 | 目标运行已修复的版本 (>= 1.121.0 或 < 1.65.0) | | `[WARNING]` | 黄色 | 检测到 n8n 实例,但版本提取失败 | | `[ERROR]` | 红色 | 连接失败、超时或非 n8n 目标 | ## 检测方法 ### 版本指纹识别过程 该工具通过以下步骤采用被动版本检测: 1. **端点请求**:向 `/signin` 端点发送 HTTP GET 请求 2. **实例验证**:验证目标是否为 n8n 安装 3. **配置提取**:在 HTML 中定位 `n8n:config:sentry` meta 标签 4. **Base64 解码**:解码内嵌的 Sentry 配置 5. **版本解析**:提取匹配 `n8n@X.Y.Z` 模式的版本字符串 6. **漏洞评估**:将提取的版本与已知的受影响范围进行比较 ### 请求详情 ``` GET /signin HTTP/1.1 Host: target.example.com User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9 Accept-Language: en-US,en;q=0.5 Connection: close ``` ## 缓解与修复 ### 立即采取的行动 1. **升级 n8n**:立即更新至 1.121.0 或更高版本 # 使用 npm npm update -g n8n # 使用 Docker docker pull n8nio/n8n:latest 2. **网络隔离**:限制对 n8n 实例的访问 - 实施防火墙规则,限制仅受信任的 IP 范围可以访问 - 将 n8n 置于具有身份验证的 VPN 或反向代理之后 3. **工作流审计**:审查所有现有的工作流 - 识别并暂时禁用基于表单的工作流 - 审计 webhook 端点是否存在未经授权的访问 ### 长期建议 | 行动 | 优先级 | 描述 | |--------|----------|-------------| | 补丁管理 | 严重 | 为 n8n 建立自动更新程序 | | 访问控制 | 高 | 对所有 n8n 端点实施身份验证 | | 网络隔离 | 高 | 将 n8n 与公共网络隔离 | | 监控 | 中 | 部署针对 n8n 活动的日志记录和告警 | | 最小权限 | 中 | 以最低要求的权限运行 n8n | | 备份 | 中 | 定期备份工作流配置 | ### 补丁修复后的验证 ``` # 在更新后验证 n8n 版本 n8n --version # 或者通过此工具检查 python main.py -u https://your-n8n-instance.com # 预期:[SAFE] ... 版本:1.121.0+(不易受攻击) ``` ## 入侵指标 ### 日志分析 检查 n8n 和 Web 服务器日志中是否存在以下模式: - 针对表单触发器端点的异常 POST 请求 - 表单字段中包含编码 payload 的请求 - 试图通过表单数据访问敏感文件路径的尝试 - 来自 n8n 服务器的意外外部连接 ### 文件系统痕迹 - n8n 工作目录中的未经授权文件 - 已修改的工作流配置文件 - 意外的脚本或可执行文件 ### 网络指标 - 连接到未知的外部主机 - 数据泄露模式 - 源自 n8n 进程的反向 shell 连接 ## 法律免责声明 **重要提示:使用前请阅读** 本工具仅严格用于: - 授权的安全评估 - 获得书面授权的渗透测试 - 教育和研究目的 - 防御性安全操作 **禁止的用途:** - 未经授权访问计算机系统 - 未经明确书面同意利用系统漏洞 - 任何违反适用法律或法规的活动 **责任:** 作者和贡献者不对本软件的误用承担任何责任。用户需自行确保遵守所有适用的法律,并在进行任何安全测试之前获得适当的授权。 **法律通知:** 在大多数司法管辖区,未经授权访问计算机系统属于犯罪行为,包括但不限于违反美国的《计算机欺诈和滥用法》(CFAA)、英国的《计算机滥用法》以及全球范围内的类似立法。 ## 参考资料 ### 官方资源 - [n8n 官方网站](https://n8n.io) - [n8n GitHub 代码库](https://github.com/n8n-io/n8n) - [n8n 安全公告](https://github.com/n8n-io/n8n/security/advisories) ### 漏洞数据库 - [NVD - CVE-2026-21858](https://nvd.nist.gov/vuln/detail/CVE-2026-21858) - [MITRE CVE 记录](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-21858) ### 相关文档 - [CWE-94: 代码生成控制不当](https://cwe.mitre.org/data/definitions/94.html) - [OWASP 代码注入](https://owasp.org/www-community/attacks/Code_Injection) ## 更新日志 | 版本 | 日期 | 变更 | |---------|------|---------| | 1.0.0 | 2026-01-20 | 初始发布 | ## 许可证 本项目按“原样”提供,仅用于授权的安全研究目的。不提供任何明示或暗示的保证。使用风险自负,并需遵守适用的法律。
标签:Maven, n8n, PoC, 安全漏洞, 暴力破解, 漏洞验证, 网络安全审计, 逆向工具