纵深防御——文件上传漏洞

1.核心思想

  • 前端检测:主要用于提升用户体验,快速给出反馈,减少无效请求对服务器的压力。绝对不可作为安全依赖,因为可以轻易被绕过。

  • 后端检测:这是真正的安全防线。所有文件上传的合法性、安全性校验都必须在服务器端进行。

2.前端检测方案

2.1 文件扩展名检测

  • 原理 :检查用户选择文件的扩展名(如 .jpg, .png, .php)。

  • 绕过方式 :使用Burp Suite、Postman等工具截断HTTP请求,修改filename后缀后发送(比如修改图片文件的后缀为php)。

2.2 MIME类型检测

  • 原理 :检查浏览器提供的文件MIME类型(如 image/jpeg, text/php)。

  • 绕过方式 :使用代理工具直接修改请求头中的Content-Type字段。

2.3 文件大小检测

  • 原理:防止用户上传过大的文件,影响服务器性能和存储。此检查在后端也必须进行,因为前端可绕过。

总之,前端检测非常脆弱,攻击者只需拦截HTTP请求并修改其内容即可轻松绕过。

3.后端检测方案

3.1 白名单文件扩展名检测

  • 原理 :这是最有效的检测方式,只允许明确安全的扩展名,拒绝其他所有类型。绝对不要使用黑名单(如禁止php, asp, jsp),因为总有漏网之鱼(如.phtml, .phps, .php5等)。

3.2 MIME类型检测

  • 原理 :检查HTTP请求头中的Content-Type。但此值也可被伪造,需与其他检测结合。

3.3 文件内容检测

  • 原理:检查文件的魔数(Magic Number),即文件头的特定字节,这是文件类型的真实标识,不受文件名和MIME类型欺骗的影响。但是也会被伪装,需与其他检测结合。

3.4 文件重命名

  • 原理:切断用户控制的文件名与服务器最终存储的文件名之间的关联,使攻击者无法预测或直接访问他上传的恶意文件。

3.5 存储路径安全

  • 原理:将上传文件的最终存储目录硬编码在程序中,不与用户输入拼接;或者确保该目录不在Web根目录下;或者没有执行脚本的权限。

3.6 文件大小限制

  • 原理:限制上传文件的体积,防止DoS攻击,避免磁盘被填满。

3.7 图像文件二次渲染/压缩

  • 原理:针对图片上传,使用GD库或ImageMagick等对图片进行重新采样、压缩或缩放。这个过程会剥离嵌入在图片中的恶意代码,生成一个"干净"的新图片。
相关推荐
K_i1345 小时前
HTTP与HTTPS:从明文到加密的Web安全革命
web安全·http·https
huluang8 小时前
网络安全等级测评师能力评估样卷及答案
安全·web安全
独行soc9 小时前
2025年渗透测试面试题总结-105(题目+回答)
网络·python·安全·web安全·adb·渗透测试·安全狮
lubiii_19 小时前
SQLMap常用命令指南(参数及其用法)
sql·web安全·网络安全
风语者日志2 天前
CTF攻防世界WEB精选基础入门:command_execution
web安全·网络安全·ctf·小白入门
witkey_ak98962 天前
网安面试题收集(2)
web安全
white-persist2 天前
XXE 注入漏洞全解析:从原理到实战
开发语言·前端·网络·安全·web安全·网络安全·信息可视化
骥龙2 天前
1.2、网络安全攻防实验室搭建指南:VMware + Kali Linux + Win10 全流程
linux·安全·web安全
谈不譚网安3 天前
Raven2
web安全·网络安全