Web安全-之文件上传漏洞场景

1   上传漏洞危害介绍

上传是Web中最多见的功能,若是上传功能存在设计、编码缺陷,就容易造成上传漏洞,从而成为致命的安全问题,攻击者能够经过上传脚本木马,实现查看/篡改/删除源码和任意涂鸦网页,能够链接和操做对应的数据库,还能够经过操做系统漏洞、配置缺陷、信息泄露进行提权,获取操做系统提权,所以上传功能是Web安全测试中重点关注的高风险模块。php

2   上传漏洞缘由分析

上传漏洞造成的缘由,主要由如下几种状况:数据库

2.1   无安全防御措施,能够直接上传脚本

漏洞缘由:上传功能未考虑安全问题,能够任意上传*.asp、*.aspx、*.php、*.jsp等可执行的脚本文件,不须要任意的绕过就能够直接获取Web权限。数组

缘由分析:上传功能必定要考虑上传的安全性,须要理解上传漏洞的危害和风险。安全

2.2   采用黑名单扩展名,致使过滤不严格

漏洞缘由:上传文件判断文件扩展名时,采用了黑名单机制,只是禁止*.asp、*.aspx、*.php、*.jsp这种已知的可执行文件扩展名,但没有限制*.cer、*.asa、*.PHP、*.JSP这类扩展名,从而致使过滤不严格,造成上传漏洞。服务器

缘由分析:上传文件判断扩展名时,应该采用名单机制,例如业务须要上传用户头像照片,那么咱们能够写一个数组,只容许.jpg、.gif、.png、.bmp这些文件,当攻击者上传不在白名单中的文件扩展名时,应禁止上传并提示扩展名不正确。jsp

2.3   仅经过客户端判断,存在绕过限制的漏洞

漏洞缘由:上传文件判断文件类型时,经过客户端语言JavsScrip判断文件大小、类型和扩展名,上传白名单仅在JS中实现,而客户端过滤很容易经过工具绕过限制,达到攻击的目的。编辑器

缘由分析:能够经过JS来判断文件大小、类型和扩展名,这样能够提升效率和应用性,但还须要在服务器端进行判断,服务器端判断是指经过php、jsp脚本代码来判断。工具

2.4   上传设计未考虑解析器的安全,致使发生解析漏洞

漏洞缘由:上传设计时使用了白名单机制,但容许用户控制上传文件的文件名和保存文件时上级文件夹的名称。测试

缘由分析:尽可能避免用户能够操控上传到服务器的文件名称、上级文件夹名称,若是用户能够控制上级文件夹名称,那么须要对文件夹名称进行过滤,禁止上传携带特殊符号的文件目录,防止攻击者生成畸形的文件名而致使解析漏洞。例如:在IIS 6.0中,会将/hack.asp/test.jpg当成asp解析,所以必需要对test.jpg上级全部目录进行过滤(若是用户能够新建文件夹等场景,表示用户能够控制hack.asp这个值),避免解析漏洞。编码

2.5   Web容器配置漏洞,使用不安全HTTP方法实现上传攻击

漏洞缘由:Web容器支撑PUT、MOVE、COPY等不安全的HTTP方法,但权限配置存在问题,致使攻击者能够经过PUT、COPY、MOVE上传脚本文件。

缘由分析:尽可能避免使用不安全的HTTP方法,若是是业务须要(例如REST接口),尽可能使用原生态的类和方法,避免二次开发、扩展过程当中出现上传漏洞,严格上讲这类不安全的HTTP方法,属于配置漏洞,所以不在本次讨论范围内。

2.6   第三方编辑器漏洞,例如FCK、eWebeditor

漏洞缘由:不少产品使用了FCK、eWebeditor编辑器,方便富文件上传和管理,而这些编辑器版本较多,不少低版本自己就存在上传漏洞,所以也是上传漏洞的重灾区。

做者:jz

相关文章
相关标签/搜索