概念
攻击者利用web应用对上传文件过滤不严的漏洞,将应用程序不该允许的文件类型上传到web服务器上,并成功解析。
文件上传攻击的前提
- 网站具有上传功能
- 上传的文件能够被web服务器解析并执行
- 知道上传后的文件路径和文件名称
- 目标文件可以呗用户访问
文件上传漏洞的攻与防
攻击
- 判断是否为js防护或者MIME防护
1 | 使用burp suite抓取流量,进行伪造后重放攻击 |
- 针对黑名单过滤
1 | 1. 多次测试过滤文件名。例如php,php4,php5 |
防御
- 前端进行js防御 [可绕过]
- 后端进行MIME防御 [可绕过]
- 后端进行白名单防御
只允许相应格式的文件进行上传,其余格式的文件丢弃
- 后端黑名单过滤 [可绕过]
不允许相应格式的文件进行上传
- 文件重命名防御
将用户上传的文件进行重命名,防止截断和绕过
- 文件名不该含有特殊符号,防止xss之类的攻击
- 文件内容检测。[可绕过]
有些图像文件,如果以网页脚本形式进行展示的话,那么就可能执行木马。针对文件内容进行检测,必要时候可以使用图像二次渲染之类的技术进行防护。
- 文件名长度需要做限制
- 需要有三个文件夹,一个存放临时文件,一个存放正式文件,一个存放病毒文件,并且其上传的文件都不应该具有x权限
- 用户上传文件后应该经过杀毒软件的扫描,如果是病毒文件,应该放置到隔离的文件中,做为审计资料,如果不是,应该由临时文件夹移动到正式文件夹