文件上传漏洞及解决方法

以下内容来自白帽子讲web安全

文件上传漏洞指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力

文件上传后常见的安全问题

1.上传的文件是web脚本语言,服务器的web容器解释并执行了用户上传的脚本 导致代码执行
2.上传文件是flash的策略文件 crossdomain.xml,黑客用以控制Flash在该域下的行为
3.上传文件是病毒,病毒文件,黑客用以诱骗用户或者管理员下载执行
4.上传文件是钓鱼图片或为包含了脚本的图片,在某些版本的浏览器中会被作为脚本执行,被用于钓鱼和欺诈

在大多数情况下,文件上传漏洞一般都指"上传Web脚本能够被服务器解析"的问题,也是通常所说的webshell的问题,要完成这个攻击,要满足如下几个条件

  1. 上传的文件能够被web容器解释执行,所以文件上传后所在目录要是web容器所覆盖到的路径
  2. 用户能够从web上访问这个文件。如果文件上传了,但用户无法通过web访问或者无法使得web容器解释这个脚本,那也不能称为漏洞
  3. 用户上传的文件若被安全检查,格式化,图片压缩等功能改变了内容,则也会导致攻击不成功

设计安全的文件上传功能

1.文件上传的目录设置为不可执行

只要WEB容器无法解析该目录下的文件,即使攻击者上传了脚本文件,服务器本身也不会受到影响,在实际应用中,很大大型网站的上传应用,文件上传后会放到独立的存储上做静态文件处理,一方面方便使用缓存加速,降低性能损耗,另一方面也杜绝了脚本执行的可能

2.判断文件类型

判断文件类型的时候的时候,可以结合使用MIME Type,后缀检查方式,文件类型检查中,推荐使用白名单方式,黑名单不可靠,对于图片的处理,可以使用压缩文件或者resize函数,在处理图片的同时破坏图片中包含的HTML代码

3.使用随机数改写文件名和文件路径

文件如果要执行代码,则需要用户能够访问到这个文件,如果应用使用随机数改写文件名和路径,将极大的增加攻击的成本,与此同时,像shell.php.rar.rar 这种文件,或者是crossdomain.xml这种文件,都将因为文件名被改写而无法成功实施

4.单独设置文件服务器的域名

由于浏览器同源策略的关系,一系列服务器攻击将失效

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值