记一次文件上传
字数 901 2025-08-09 22:00:43

文件上传漏洞实战分析

漏洞概述

本文记录了一个文件上传漏洞的发现和利用过程,涉及文件上传路径控制、后缀绕过和目录穿越等技术点。

0x01 初始文件上传测试

  1. 测试过程

    • 前台注册用户登录后台,测试头像上传功能
    • 尝试上传JSP webshell并添加.jpg后缀,返回500错误
    • 将文件内容改为正常JPG内容后成功上传
  2. 关键发现

    • 上传成功后会返回一个URL跳转
    • URL解码后发现上传路径部分可控
    • 可控参数:
      • custom_name:文件名
      • folader:目录(拼接在dir参数后)
      • dir:上传目录(有限制,只能设置特定几个目录)
  3. 验证可控性

    • 修改上传参数后确认可以控制上传路径
    • 访问验证:http://xxx/files/scude_recruit/image/test/test.jpg 存在

0x02 文件后缀绕过

  1. 直接尝试

    • 直接改为.jsp后缀上传,返回Error
    • URL解码错误信息后发现是白名单限制
  2. 绕过思路

    • 发现images参数可控
    • 测试发现不同目录有不同限制:
      • file目录:限制部分后缀,但允许.txt
    • 参数污染技术:
      • POST数据中文件后缀改为"txt"
      • GET参数中custom_name改为"1.jspx"
    • 结果:文件成功上传但不解析

0x03 跨目录Getshell

  1. 利用方法

    • 通过之前上传获取jsp文件所在目录信息
    • 尝试使用../进行目录穿越
    • 目标:上传到能解析jsp的目录
  2. 验证

    • 成功上传到可执行目录
    • 访问确认可执行

关键知识点总结

  1. 路径控制

    • 关注上传接口中所有与路径相关的参数
    • 测试每个参数的可控性和限制条件
  2. 后缀绕过技术

    • 前后端校验不一致时可能绕过
    • 参数污染(POST和GET参数不一致)
    • 不同目录可能有不同限制
  3. 目录穿越

    • 当知道目标解析目录时
    • 使用../尝试上传到其他目录
  4. 信息收集

    • 通过错误信息获取后端限制条件
    • URL解码查看隐藏信息

防御建议

  1. 严格限制上传目录,禁止目录穿越
  2. 统一前后端文件类型校验机制
  3. 对上传文件名进行严格过滤和重命名
  4. 限制上传目录的执行权限
  5. 避免将上传路径信息暴露给客户端
文件上传漏洞实战分析 漏洞概述 本文记录了一个文件上传漏洞的发现和利用过程,涉及文件上传路径控制、后缀绕过和目录穿越等技术点。 0x01 初始文件上传测试 测试过程 : 前台注册用户登录后台,测试头像上传功能 尝试上传JSP webshell并添加.jpg后缀,返回500错误 将文件内容改为正常JPG内容后成功上传 关键发现 : 上传成功后会返回一个URL跳转 URL解码后发现上传路径部分可控 可控参数: custom_name :文件名 folader :目录(拼接在dir参数后) dir :上传目录(有限制,只能设置特定几个目录) 验证可控性 : 修改上传参数后确认可以控制上传路径 访问验证: http://xxx/files/scude_recruit/image/test/test.jpg 存在 0x02 文件后缀绕过 直接尝试 : 直接改为.jsp后缀上传,返回Error URL解码错误信息后发现是白名单限制 绕过思路 : 发现 images 参数可控 测试发现不同目录有不同限制: file 目录:限制部分后缀,但允许.txt 参数污染技术: POST数据中文件后缀改为"txt" GET参数中 custom_name 改为"1.jspx" 结果:文件成功上传但不解析 0x03 跨目录Getshell 利用方法 : 通过之前上传获取jsp文件所在目录信息 尝试使用 ../ 进行目录穿越 目标:上传到能解析jsp的目录 验证 : 成功上传到可执行目录 访问确认可执行 关键知识点总结 路径控制 : 关注上传接口中所有与路径相关的参数 测试每个参数的可控性和限制条件 后缀绕过技术 : 前后端校验不一致时可能绕过 参数污染(POST和GET参数不一致) 不同目录可能有不同限制 目录穿越 : 当知道目标解析目录时 使用 ../ 尝试上传到其他目录 信息收集 : 通过错误信息获取后端限制条件 URL解码查看隐藏信息 防御建议 严格限制上传目录,禁止目录穿越 统一前后端文件类型校验机制 对上传文件名进行严格过滤和重命名 限制上传目录的执行权限 避免将上传路径信息暴露给客户端