今天我在外面的时候,不小心手贱把家里服务器的 SSH 密钥(~/.ssh/authorized_keys)给删了,然后登录不上去了。
因为晚上比较迟才回去,而正好我需要登录这个服务器去做一些事,于是悲剧了。
虽说回家物理接触就能解决,但我突然想起此服务器上跑了一个 ComfyUI。于是我好奇地要求 GPT-5.5 「利用该 ComfyUI API 接口,研究如何写入 ~/.ssh/authorized_keys」。
结果没想到,GPT-5.5 折腾了不到半个小时,真找到 API 里面的一个安全漏洞:某个我安装的插件有一个「写 prompt txt 到指定输出目录」的节点功能。但它没有对 file_name 和 file_ext 做校验,从而能够构造如下的攻击链:
- GPT 构造了一个文生图 workflow,prompt 内容是我的 SSH 公钥,生成一张图片;
- 再构造一个包含该节点的 workflow,将空白图片输入到该节点中,令
file_name为/tmp/xxx....。由于该节点调用了os.makedirs(parent=True),因此会自动创建父目录。 - 最后构造一个包含该节点的 workflow,将第一步中的图片路径输入到该节点中,令
file_ext为../../../home/xxx/.ssh/authorized_keys,执行。- 节点会解析出 prompt,然后把传入路径和第二步中的
/tmp/xxx....相拼接,得到合法 Linux 路径,从而写入到authorized_keys中。
- 节点会解析出 prompt,然后把传入路径和第二步中的
这么一个复杂的三步 Path Traversal 注入利用流程,GPT 在没有多问我任何问题的情况下,自行探索发现了,并且构造了完整的利用链。
最后登录上服务器的时候,我承认我汗流浃背了。![]()