基于Web系统的文件上传漏洞解析
2020-12-30巨腾飞岳剑晖
◆巨腾飞 岳剑晖
基于Web系统的文件上传漏洞解析
◆巨腾飞 岳剑晖
(陕西省网络与信息安全测评中心 陕西 710065)
由于Web技术的迅猛发展,Web系统功能愈加丰富多彩,传统的Web系统仅用于信息发布,而如今的Web系统应用,如购物网站、论坛、微博功能愈加完善,不仅有信息发布,还有网民娱乐、购物、聊天等功能,功能的完善意味着这些网站安全问题的突出,许多网站存在头像上传、附件上传等功能,由此便产生了文件上传漏洞,安全管理者和安全运维者的责任则更加突出,安全问题亟待解决。
Web系统;网站安全;文件上传漏洞
1 引言
文件上传通常是一些论坛、贴吧、购物、聊天类网站所必备的功能,通常Web站点会有用户注册功能,用户注册完成后,个人设置当中往往都有头像上传功能,可以向大众展示自己、认识自己,而当用户登录之后大多数情况下都会存在类似附件上传一类的功能,这些功能如果安全问题未完全到位,往往存在上传验证缺陷,导致文件上传漏洞,文件上传漏洞往往在Web渗透测试中是非常关键的突破口,只要通过各种分析测试分析来绕过上传验证、保护机制,往往会造成被黑客直接上传Web系统后门,进而获取整个Web系统的管理权限,甚至导致整个内网安全受到威胁。不少门户网站都有过被上传后门,导致被人篡改的经历,这类攻击行为大部分是通过文件上传漏洞进行的。
2 何为文件上传漏洞
文件上传漏洞是Web应用系统中一种常见的漏洞类型,是指网络攻击者上传了一个可执行的文件到服务器并执行,这里上传的文件可以是照片、木马、病毒和Webshell等。这种攻击方式是最为直接和有效的,部分文件上传漏洞的利用技术门槛非常的低,对于攻击新手者来说都很容易实施。
从渗透测试人员的角度来说,如果要想成功实施文件上传漏洞攻击,通常来说一般需要满足以下三个条件(不包括文件包含上传):
(1)上传文件可执行
首先来说上传文件成功只是第一步,有时候表面看来脚本文件上传成功,但也有可能被安全机制强行改名为jpg、mpg、jpeg等存储,如果脚本文件被利用,其上传文件所存储的目录文件必须具备可执行权限,如果文件无法成功执行,就无法进行进一步的渗透测试。
(2)上传文件可访问
其次,上传文件成功且可被执行是不够的,文件还必须具备Web访问权限,如果不能够通过Web访问,那么也不能成功实施渗透测试。
(3)上传文件路径、文件名可知
最后,要知道脚本文件上传到服务器后其所存放路径及文件名称,因为许多Web应用都会修改上传文件的文件名称,那么这时就需要结合其他漏洞去获取到这些信息。如果不知道上传文件的存放路径和文件名称,即使文件上传也无法访问。
3 文件上传漏洞分类
主要以php(asp)为例,常见文件上传漏洞主要分为四种:客户端校验绕过、文件类型绕过、文件后缀名绕过、文件头绕过等。
(1)客户端校验绕过
一种是直接修改js代码或者用抓包的方法修改请求内容绕过,可以先上传一个gif木马,通过抓包修改为php(asp),只用这种方法来检测是肯定可以绕过的。
另外一种是浏览器禁用js调试,这里以Firefox为例:首先在Firefox地址栏里输入“about:config”;其次在搜索栏输入“javascript.enabled”查找到首选项。最后点击鼠标右键选择“切换”,把“javascript.enabled”键值改为“false”这样就能禁止js的运行了。
(2)文件类型绕过
通过抓包软件,可以看到不同的文件content-type字段显示不同的Filetype,只需要将content-type字段改为image/jpegd等。
(3)文件后缀名绕过
一种主要是基于黑名单检测技术,如果检测的时候不忽略大小写,那么可以改变后缀名的大小写绕过;其次还有被黑名单表中如果忽略了某些后缀;最后包括能被解析的文件扩展名列表。
另一种主要是基于白名单检测技术,包括%00截断,如将文件1.php修改为1.php%00.jpg。
(4)文件头绕过
这种一般采用正常图片合成恶意脚本,可以直接通copy命令进行木马合成,这种插入的代码一般会放在图像的注释区,因此不会影响图像正常渲染绕过这种文件头检测。
4 文件上传漏洞防范
首先,上传的文件能够被Web容器解释执行,所以上传文件的目录要是Web容器所覆盖到的路径;其次,用户能够从Web上访问这个文件,如果文件上传了,但用户无法通过Web访问,或者无法得到Web容器解释这个脚本,那么也不能称之为漏洞;最后,用户上传的文件若被安全检查、格式化、图片压缩等功能改变了内容,则也可能导致攻击不成功。
防范文件上传漏洞常见的几种方法如下:
(1)文件上传的目录设置为不可执行
只要Web容器无法解析上传目录下面的文件,即使攻击者上传了脚本文件,服务器本身也不会受到影响,因此这一点也至关重要。
(2)文件白名单校验
在文件类型检查中,使用白名单的方式进行检查,黑名单的方式已经多次被证明是不可靠的。此外,对于图片的处理,可以使用压缩函数或者resize函数,在处理图片的同时破坏图片中可能包含的HTML代码。
(3)改写文件名和文件路径
上传文件如果要执行代码,则需要用户能够访问到这个文件。在某些环境中,用户能上传,但不能访问。改写了文件名和路径,将极大地增加攻击的成本。
(4)及时对Web应用系统进行补丁修复
随着Web应用系统防御措施安全性的不断提高,攻击者也在试图不断寻找新的攻击方法与手段,通过追踪、了解和分析最新产生的各种攻击手段,及时对Web应用系统进行修复和防御也是一个不可缺少的防护手段。
5 结束语
本文主要基于Web系统简要介绍文件上传漏洞,包括文件上传漏洞介绍、文件上传漏洞分类、文件上传漏洞利用、文件上传漏洞防护,总结出文件上传漏洞的危害,帮助安全相关人员提高安全防护意识,提升总体安全防护水平。
[1]刘仁珩.上传漏洞原理及防范[J].江西通信科技,2014(04):39-42.
[2]郝子希,王志军,刘振宇.文件上传漏洞的攻击方法与防御措施研究[J].计算机技术与发展,2019,29(02):129-134.
[3]白兴瑞,刘耀炎.高校WEB站点的上传漏洞分析及防范[J].衡水学院学报,2011,13(04):34-36.