n8n CVE-2025-65964 远程代码执行漏洞检测工具

0 阅读3分钟

🛡️ n8n CVE-2025-65964 漏洞检测工具

CVE-2025-65964 是 n8n 自动化平台中的一个高危远程代码执行漏洞,CVSS 评分高达 9.4。本工具提供了一种快速、安全的检测方法,帮助您识别 n8n 实例是否受此漏洞影响。

该漏洞源于 Git 节点允许工作流设置任意的 Git 配置值(包括 core.hooksPath)。恶意工作流可通过此漏洞将 Git 钩子重定向至攻击者控制的脚本,从而在服务器上执行任意代码

✨ 功能特性

  • 🚀 一键检测:通过简单的命令行即可快速检测目标 n8n 实例的版本。
  • 🔍 版本识别:精准提取并解析 n8n 版本号。
  • ⚠️ 漏洞判定:自动判断版本是否在受影响范围(0.123.1 → 1.119.1)内。
  • 🛡️ 安全无害:工具仅读取公开的版本信息,不会触发漏洞或对目标造成任何影响。
  • 📋 清晰输出:提供直观的检测结果和升级建议。

📦 安装指南

系统要求

  • Python 3.6 或更高版本
  • pip 包管理器

安装步骤

  1. 下载检测脚本

    safe_cve-2025-65964_checker.py 保存到您的本地目录。

  2. 安装依赖库

    脚本仅依赖 requests 库,使用以下命令安装:

    pip install requests
    

📖 使用说明

基础用法

在终端中执行以下命令,将目标 URL 替换为您的 n8n 实例地址:

python safe_cve-2025-65964_checker.py https://your-n8n.example.com

如果 n8n 实例使用非默认端口,请指定端口号:

python safe_cve-2025-65964_checker.py https://n8n.example.org:5678

输出示例

检测到存在漏洞的版本:

[+] Detected version: n8n/1.118.0
[-] VULNERABLE to CVE-2025-65964 → Upgrade NOW!

检测到已修复的版本:

[+] Detected version: n8n/1.123.5
[+] SAFE - version is already patched

无法检测版本信息:

[?] Version string hidden or endpoint blocked

典型使用场景

  • 安全自查:定期扫描企业内部部署的 n8n 实例,确保所有实例都已升级至安全版本。
  • 渗透测试:在获得授权的前提下,对目标 n8n 系统进行漏洞验证。
  • 应急响应:漏洞披露后,快速排查受影响系统并采取相应措施。

💻 核心代码

版本检测与漏洞判断

以下是检测工具的核心实现,通过访问目标 URL 的 /webhook/test 路径获取版本信息,并基于版本号判断漏洞状态:

import requests
import sys

def check_n8n_version(url):
    """
    检测 n8n 实例版本并判断是否存在 CVE-2025-65964 漏洞
    
    Args:
        url: n8n 实例的基础 URL
    """
    try:
        # 向目标发送请求,获取响应内容
        r = requests.get(f"{url.rstrip('/')}/webhook/test", timeout=10, verify=False)
        
        # 从响应文本中提取版本号
        if "n8n/" in r.text:
            version = r.text.split("n8n/")[1].split('"')[0]
            print(f"[+] Detected version: n8n/{version}")
            
            # 解析版本号并判断是否在受影响范围内
            major, minor, patch = map(int, version.split('.'))
            # 漏洞版本范围:0.123.1 ≤ 版本 ≤ 1.119.1,或主版本号小于1
            if (major == 1 and minor <= 119 and patch <= 1) or (major < 1):
                print("[-] VULNERABLE to CVE-2025-65964 → Upgrade NOW!")
            else:
                print("[+] SAFE - version is already patched")
        else:
            print("[?] Version string hidden or endpoint blocked")
    except Exception as e:
        print(f"[!] Connection failed: {e}")

if __name__ == "__main__":
    # 检查命令行参数
    if len(sys.argv) != 2:
        print("Usage: python safe_cve-2025-65964_checker.py https://your-n8n.example.com")
        sys.exit(1)
    
    # 执行检测
    check_n8n_version(sys.argv[1])

受影响版本范围

根据漏洞公告,受影响版本及修复版本范围如下:

状态版本范围
受影响版本n8n 0.123.1 → 1.119.1
已修复版本1.119.2 及以上版本FINISHED
6HFtX5dABrKlqXeO5PUv/84SoIo+TE3firf/5vX8AZ58m0DJYSOTBQ6vj8fXxStw