复现地址: https://a_j89r6gwvkw4.v7.demo-cn.nocobase.com/admin/1bxifptcy4n
先在数据源中设置了附件MIME类型只允许 image/*,application/pdf
然后在上传时选择所有文件,选中php一句话木马上传成功,并且可以下载
我发现还上传木马,以及勒索病毒,服务器还要做隔离
确实存在一定的安全隐患,虽然配置了 MIME 类型,但并不是严格限制,只要修改文件后缀就可能绕过 MIME 类型的校验;更严谨的做法,是通过代码读取文件的实际内容,从而判断其真实的 MIME 类型。
如果要做得更灵活一些,建议 nocobase 在配置附件字段的表单中增加一个选项,例如 “是否严格校验文件类型”,当勾选该选项时,系统就会通过代码解析文件的真实类型,并与 MIME 类型输入框中允许的类型进行比对,从而实现更安全的文件上传控制。
希望nocobase团队可以修复这个问题,确实存在安全隐患,是否可以考虑:
- 在上传阶段进行简单的校验。
- 在表单点击提交,上传前不要把文件直接提交到服务器,而是先暂存在本地,在本地先校验,校验通过后,在用户点击提交按钮时,再上传。
- 在后台加入文件上传限制的功能,让用户去自己调整哪些文件可以上传。可以参考1Panel的waf中文件上传限制功能。
毕竟即便部署在内部服务器上,外部的威胁降低,但是内部的威胁依旧存在。本人不太懂技术,建议仅供参考。
在文件管理器中设置MIME

