
CVE-2026-33017 - Langflow 未认证远程代码执行漏洞利用
编码:Xer0TLabs x Persephrak Decentralized Syndicate
本文档是对所提供 Python 程序的高级解析,供审查、事件响应和防御性分析使用。本文档有意不包含操作说明、目标选择指南、载荷示例或获取系统访问权限的流程。
该脚本自称是针对所声称的 Langflow 未认证远程代码执行漏洞的利用程序。本 README 仅描述该代码试图执行的操作;它不独立验证 CVE 标识符、受影响版本、端点行为、厂商公告或脚本的有效性。
该程序被构建为一个命令行自动化工具,试图向 Langflow HTTP 端点发送特制的 JSON 数据。其预期前提是,嵌入在流程定义中的用户可控 Python 代码将被远程应用程序处理。
如果该前提在目标上成立,该脚本被设计为将其转化为任意操作系统命令执行。除了基本的执行检查外,它还包含旨在建立持久化、创建交互式远程会话、运行侦察命令以及在本地生成 SSH 密钥对的例程。
由于这些功能可能在未经授权的情况下危害系统,该代码应被视为潜在恶意或双重用途工具。除非活动已明确授权并受既定测试范围约束,否则不应针对系统运行该代码。
该程序导入标准 Python 模块,用于参数解析、JSON 处理、HTTP 请求、套接字、线程、子进程执行和文件访问。
它通过 ssl._create_unverified_context 全局禁用正常的 TLS 证书验证。这使得 HTTPS 请求接受无效或不受信任的证书。虽然这在测试代码中有时可见,但在生产环境中是不安全的,因为它削弱了针对拦截和冒充的保护。
Colors 定义了用于打印彩色输出的 ANSI 终端转义序列。
Logger 是一个小型工具类,用于打印信息、成功、警告和错误消息。其 banner() 方法显示脚本的标题、所声称的漏洞、所声称的受影响产品范围、严重级别以及 CISA KEV 状态。这些声明是程序中的展示文本,并非声明准确性的证明。
这是主类。初始化时,它会:
http:// 前缀则添加该前缀。默认流程 ID 是一个固定的 UUID 风格值。该程序允许通过命令行选项覆盖它。
_build_malicious_payload(command) 创建一个类似流程图的 JSON 对象,其中包含一个节点。该节点被标记为 CustomComponent,并在 code 字段中包含 Python 源代码。
插入的源代码尝试调用操作系统命令。它首先尝试一种 Python API,如果发生错误则回退到子进程调用。然后 JSON 结构被返回给请求发送代码。
这是核心利用逻辑:它假设接收服务在处理图时会执行提交的代码。
_send_exploit_request(payload_data) 将载荷序列化为 JSON,并向构造的端点发起 HTTP POST 请求。它包含常规的浏览器风格请求头,并返回响应正文文本和 HTTP 状态码。
HTTP 错误会被捕获并返回,而不是终止程序。其他异常(如连接失败或超时)会被转换为字符串并以状态码 0 返回。
check_vulnerability() 发送包含标记命令的载荷,然后将成功的 HTTP 响应或任何包含 error 一词的响应视为目标“疑似存在漏洞”的证据。
这不是可靠的验证方法。200 响应、500 响应或应用程序错误可能由许多与代码执行无关的原因引起。该脚本不独立观察标记的输出,因此可能产生误报。
execute_command(command) 将提供的命令包装在恶意流程载荷中并发送。它将 HTTP 200 或 500 解释为可能的成功结果。
同样,仅凭状态码并不能证明远程命令执行。从防御性代码审查的角度来看,此方法试图通过允许操作员提供任意操作系统命令来使工具更加灵活。
_build_ssh_payload() 和 inject_ssh_key() 被设计用于修改远程 SSH 配置和授权密钥文件。尝试的操作包括创建 SSH 目录、添加 SSH 公钥、更改权限、修改 SSH 守护进程设置、重启 SSH 服务、创建基于 cron 的持久化机制以及删除 shell 历史记录痕迹。
这些是持久化和防御规避行为,而非良性的漏洞检查。该程序可能仅基于 HTTP 状态码就声称成功,而不确认任何文件或服务是否实际被更改。
_build_reverse_shell_payload() 组装多种回退机制,旨在使目标发起指向操作员控制的主机和端口的出站网络连接。
spawn_reverse_shell() 在后台线程中启动本地 TCP 监听器,短暂等待,发送远程载荷,然后等待连接。
_start_listener() 接受连接并提供简单的交互式命令循环。这是一种远程访问能力。其错误处理有限,不认证传入连接,不适合安全的管理或合法的测试基础设施。
full_exploit_chain() 组合多种行为:
侦察列表旨在揭示身份、权限、操作系统信息、文件、进程、监听服务、账户和计划任务。这是入侵后枚举的典型特征。
generate_ssh_key_pair(key_path) 调用本地 ssh-keygen 程序,在请求的文件不存在时创建 4096 位 RSA 密钥对。
它创建一个引用所声称 CVE 的密钥注释,旨在支持 SSH 持久化功能。这影响的是运行脚本本身的机器,而非远程目标。
main() 定义命令行选项,用于目标选择、流程 ID、单命令执行、SSH 密钥处理、反向 Shell 设置、完整攻击链执行、自动密钥生成和详细输出。
该代码仅执行有限的验证。例如,反向 Shell 和完整攻击链模式需要本地主机和端口。它不验证授权、范围、目标所有权、URL 安全性,或目标是否实际上是 Langflow 实例。
encoded_key 变量被计算但从未使用。审查此代码的安全团队应将以下内容视为尝试利用或入侵后活动的指标:
对于修复决策,请依赖官方 Langflow 安全公告、发布说明以及您组织的漏洞管理流程,而非此脚本中嵌入的版本和严重级别声明。
不要将此程序作为部署或访问工具运行或重新分发。如果在系统上发现该程序,请将其作为证据保存,记录哈希和时间戳,限制副本的访问权限,检查相关的服务和网络日志,并遵循组织的事件响应流程。
对于合法的授权评估,请使用书面范围、非破坏性验证计划、明确的停止条件和以修复为导向的报告。避免持久化、反向 Shell、凭据更改、历史记录删除或任何可能破坏系统或留下未授权访问后门的操作。