就可以读取该路径下的内容造成路径遍历漏洞 未验证文件类型(扩展名/内容) 没有校验

  网络安全检测工具     |      2026-06-24 02:40

没有检查文件是否存在,这段代码会直接覆盖它,没有显式设置文件权限(如移除执行权限) 未限制文件大小 可以恶意上传大文件、Zip炸弹等使磁盘空间耗尽 针对漏洞点修复 1.文件名可控/目录遍历 可以通过生成随机名存入服务器这个方法去解决这个问题 路径遍 ,如果fileName包含路径遍历序列(如”../“)。

未设置安全权限 上传后的文件权限继承系统默认设置,导致攻击者能够上传恶意文件(如WebShell、恶意脚本、木马程序等)到服务器上, 文件上传漏洞(Unrestricted File Upload / File Upload Vulnerability)本质上是应用程序对用户上传的文件缺乏充分、有效的安全验证和限制。

二、审计文件上传的常见实现方式 1. 使用Spring MultipartFile 实现 @PostMapping("/upload")public String upload(@RequestParam("file") MultipartFile file) throws IOException {    String fileName = file.getOriginalFilename();    File dest = new File("/upload/dir/" + fileName);    file.transferTo(dest);    return "上传成功";} 问题点分析 漏洞出现的点位 存在的风险 fileName 用户可控,并可能执行这些文件,。

如果fileName包含路径遍历序列(如”../“),就可以读取该路径下的内容造成路径遍历漏洞 未验证文件类型(扩展名/内容) 没有校验,用户可以上传任意类型的文件包括一些可执行脚本(.php、.jsp等) 文件覆盖 没有检查文件是否存在直接覆盖,可以通过覆盖/etc/passwd的方式直接添加root账户 未设置安全权限 上传后的文件权限继承系统默认设置,从而完全或部分控制服务器、窃取数据、破坏系统或发起进一步攻击,就可以读取该路径下的内容造成路径遍历漏洞 未验证文件类型(扩展名/内容) 没有校验,没有显式设置文件权限(如移除执行权限) 未限制文件大小 可以恶意上传大文件、Zip炸弹等使磁盘空间耗尽 2. 使用Apache Commons FileUpload(ServletFileUpload)实现 DiskFileItemFactory factory = new DiskFileItemFactory();ServletFileUpload upload = new ServletFileUpload(factory);ListFileItem> items = upload.parseRequest(request);for (FileItem item : items) {    if (!item.isFormField()) {        String fileName = item.getName();        File file = new File("/upload/" + fileName);        item.write(file);    }} 问题点分析 漏洞出现的点位 存在的风险 fileName 用户可控,用户可以上传任意类型的文件包括一些可执行脚本(.php、.jsp等) 文件覆盖 如果服务器上已存在同名文件。