安全测试之文件上传

文件上传测试是Web安全测试中的重要环节,主要关注功能、安全和用户体验。


一、核心关注点

  1. 文件类型验证

    • 白名单/黑名单:白名单(只允许特定类型)更安全,黑名单(禁止危险类型)易被绕过。
    • 绕过风险:攻击者可能修改文件头(如伪装图片的PHP文件)。
  2. 文件大小限制

    • 服务器压力:过大文件可能导致存储溢出或DoS攻击。
    • 用户体验:需明确提示限制(如前端JS验证+后端二次校验)。
  3. 文件名处理

    • 特殊字符../(路径遍历)、空格、Unicode字符可能导致覆盖或注入。
    • 重命名策略:随机文件名可避免冲突(如UUID.jpg)。
  4. 内容校验

    • 魔术字节:检查文件真实类型(如FF D8 FF是JPEG头)。
    • 恶意内容:扫描病毒、WebShell代码(如图片马)。
  5. 存储与访问

    • 隔离存储:文件应存于非Web根目录,通过脚本代理访问。
    • 权限控制:防止直接执行上传文件(如.htaccess禁用PHP解析)。
  6. 日志与监控

    • 上传日志:记录IP、时间、文件名,便于追踪攻击。

二、不同场景的区别与影响

测试维度普通网站(如头像上传)企业应用(如合同提交)社交媒体(如图片/视频)
文件类型图片(JPG/PNG)PDF/DOCX图片/视频/动图(MP4/GIF)
大小限制1-5MB10-50MB视频可能100MB+
安全风险XSS(通过SVG)、CSRF恶意宏(Office文件)恶意脚本(Flash/HTML5)
存储影响CDN加速小文件需长期归档,合规性要求高高带宽成本,需分片上传

三、典型攻击与防御

  1. 路径遍历攻击

    • 攻击示例:上传../../../evil.php覆盖系统文件。
    • 防御:规范化路径,禁用../
  2. WebShell上传

    • 攻击示例:上传.jpg文件包含PHP代码,配合解析漏洞执行。
    • 防御:禁用服务器解析(如Nginx配置location ~* \.php$ { deny all; })。
  3. DoS攻击

    • 攻击示例:重复上传大文件耗尽磁盘。
    • 防御:限速、限制单用户上传频率。

四、测试工具与方法

  1. 手动测试

    • 修改HTTP请求(Burp Suite)绕过前端验证。
    • 尝试上传畸形文件(如双扩展名test.php.jpg)。
  2. 自动化工具

    • OWASP ZAP:自动化扫描上传漏洞。
    • VirusTotal API:集成病毒扫描。
  3. 代码审计

    • 检查后端是否仅依赖Content-Type(不可信)或file extension

五、最佳实践

  • 纵深防御:前端+后端+服务器层多重校验。
  • 沙箱处理:对Office/PDF文件在隔离环境解析。
  • 错误信息:避免暴露服务器路径(如自定义403页面)。

通过全面覆盖这些方面,可显著降低文件上传功能的风险。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值