文件上传漏洞(原理及修复建议)

文件上传漏洞,指利用WEB上传一些特定的文件。一般情况下文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。文件上传本身是web中最为常见的一种功能需求,关键是文件上传之后服务器端的处理、解释文件的过程是否安全。一般的情况有:

  1. 上传文件WEB脚本语言,服务器的WEB容器解释并执行了用户上传的脚本,导致代码执行;
  2. 上传文件FLASH策略文件crossdomain.xml,以此来控制Flash在该域下的行为;
  3. 上传文件是病毒、木马文件,攻击者用以诱骗用户或管理员下载执行;
  4. 上传文件是钓鱼图片或为包含了脚本的图片,某些浏览器会作为脚本执行,实施钓鱼或欺诈;
    已知Web网站在登录前或者登录后具有上传页面。
    上传的文件具备可执行性或能够影响服务器行为,所以文件所在的目录必须在WEB容器覆盖的路径之内;
    用户可以从WEB上访问这个文件,从而使得WEB容器解释执行该文件;
    上传后的文件必须经过安全检查,不会被格式化、压缩等处理改变其内容

修复建议
针对文件上传漏洞的特点和必须具备的三个条件,我们阻断任何一个条件就可以达到组织文件上传攻击的目的:
最有效的,将文件上传目录直接设置为不可执行,对于Linux而言,撤销其目录的’x’权限;实际中很多大型网站的上传应用都会放置在独立的存储上作为静态文件处理,一是方便使用缓存加速降低能耗,二是杜绝了脚本执行的可能性;
文件类型检查:强烈推荐白名单方式,结合MIME Type、后缀检查等方式(即只允许允许的文件类型进行上传);此外对于图片的处理可以使用压缩函数或resize函数,处理图片的同时破坏其包含的HTML代码;
使用随机数改写文件名和文件路径,使得用户不能轻易访问自己上传的文件;
单独设置文件服务器的域名;

你可能感兴趣的:(owasp,top,10,汇总,安全)