漏洞简介
天锐绿盾审批系统是一款专注于企业数据安全与合规管理的智能审批平台,深度融合文档加密、权限管控与流程自动化,为企业提供从文件创建、流转到归档的全生命周期安全管控。
在其 importDate.do 接口中存在一个不安全的解压缩漏洞。攻击者可以利用“Zip Slip”技术,通过构造恶意的压缩文件,在系统解压缩时,利用文件路径遍历的缺陷,将文件写入到任意指定位置。
这可能导致敏感文件被覆盖、恶意文件被植入,进而引发远程代码执行、系统功能破坏或数据泄露等严重安全风险。
影响版本
可通过访问 /trwfe/exports/config.ini 获取版本信息
V3.53.240913
V7.05.240904
fofa语法
app="TIPPAY-绿盾审批系统"
漏洞分析
先看importDate.do的实现

跟进configService.importDate 看下实现逻辑

接收一个文件上传的file参数内容

处理用户上传的 zip 压缩包,该功能旨在实现数据库的导入恢复。它首先将上传的 MultipartFile 保存为临时 zip 文件,然后调用 ZipUtil.getInstance().unZip() 方法将该 zip 文件解压到服务器上的一个临时目录中。
由于代码在解压 zip 文件之前,完全没有对压缩包内的文件名进行合法性校验,特别是没有检查文件名中是否包含目录遍历序列(如 ../),造成了致命的 Zip Slip 漏洞。攻击者可以精心构造一个 zip 压缩包,其中包含一个文件名形如 ../../../../../../../../tmp/pwned.txt 的文件。当 ZipUtil.unZip() 方法解压这个文件时,它会跳出预设的临时解压目录 tempPath,将 pwned.txt 文件写入到服务器的文件系统根目录下的 /tmp 目录中。通过这种方式,攻击者可以在服务器上任意位置写入任意内容的文件,例如上传一个 WebShell、覆盖关键配置文件、或写入一个定时任务脚本。
漏洞复现
创建一个带有目录穿越文件名的压缩包,只需要向上跳一级即可跳到根目录

访问解压到根目录的测试文件test.jsp

成功执行打印随机uuid后,删除自身,完成Zip Slip漏洞利用。

