漏洞描述
本质是在进行文件上传操作时未对文件类型进行检测或检测功能不规范导致被绕过,从而使攻击者上传的可执行脚本(WebShell)被上传至服务器并成功解析
漏洞危害
常见文件上传方式
在Java开发中,文件上传的方式有多种,通常用以下三种:
- 通过文件流的方式上传
- 通过ServletFileUpload方式上传
- 通过MultipartFile方式上传
我用得最多的是springboot的MultipartFile接口
常见的漏洞场景
- org.apache.commons.fileupload
- java.io.File
- MultipartFile
- MultipartFileHttpServletRequest
- CommonsMultipartResolver
- ……
漏洞修复建议
- 采取白名单策略限制运行上传的类型;
- 对文件名字进行重命名;
- 去除文件名中的特殊字符;
- 上传图片时,通过图片库检测上传文件是否为图片。
