计算机网络安全中文件上传漏洞及防御措施

2021-04-04 12:19孙志成
信息记录材料 2021年5期
关键词:服务端木马校验

孙志成

(河北工业职业技术学院 河北 石家庄 050091)

1 引言

在日常可访问的Web网页中,文件上传是一个很常见的功能:例如发布照片、提交报告、上传文档等情况时,都会涉及到文件上传功能。而如果Web服务端并没有对用户提交的数据进行严格过滤,导致包含有恶意代码的文件被上传并执行,即说明此处功能含有文件上传漏洞。文件上传漏洞是Web系统上的一个比较经典的漏洞。进行攻击的技术要求不高,产生的后果却可能会很大,比如通过上传一个WebSHELL类型的文件并成功触发后,有可能会直接得到类似shell的命令执行方法甚至获取系统的操作权限;如果Web程序是通过root用户启动的,也许一次攻击即可获得系统的最高权限。因此对于文件上传漏洞的防御,值得我们进行深入的研究。

2 攻击手段

对于不同的操作系统或不同的Web容器来说,操作命令、文件系统、文件类型都有所区别,所以攻击的细节也有所不同。但通常来说,针对此类型漏洞,攻击者的攻击过程是类似的,一般分为三个步骤。

(1)通过文件上传功能,上传包含有恶意代码的文件。此处的文件通常为木马文件,这一步骤主要是通过大量的异常文件上传,判断出Web端对于文件所做的过滤,然后绕过这些防御措施,将木马文件成功上传至目标服务器。

(2)通过浏览器的元素探测功能,或通过网络抓包,探知上传的文件保存在Web服务器的具体位置,此处并不需要精确的绝对路径,只需要获得能直接访问到木马文件的URL地址即可进行下一步攻击。常见的获取路径的方法也有下载已正常上传的文件,通过抓取数据包来确定服务器上存放上传文件的目录路径,再和木马文件的文件名组合出URL,即可进行下一步操作[1]。

(3)通过URL向已确定具体位置的木马文件传递参数,触发木马文件执行,进行攻击。此步骤对于参数的传递,视不同的木马文件而有所区别。此外,不同类型的Web容器,可解析的文件类型也是不相同的。

3 防御方法

对于此漏洞的防御措施,可以有针对性地通过上述三个攻击步骤展开。

3.1 对上传文件进行校验检测

Web服务器收到客户端发出的上传文件请求时需要判断文件是否符合检测要求需要限制上传文件的大小,以保护Web服务器的磁盘可用空间。需要检测检测上传文件名是否包含非法字符;特别是“../”一类的字符,防止文件被传至目标服务器保存文件的上一层路径,甚至替换掉系统文件。需要检测文件的后缀名,以防止将“.exe”“.asp”“.php”等类型的文件上传至服务器。需要检测文件类型,主要是检测客户端请求头中的content-type字段,可以过滤掉如“application/x-msdownload”“text/asp”等类型的文件。需要检测文件头的内容,根据文件特征码再次判断文件类型。

需要注意的是,对于上传文件的校验检测,在Web客户端和Web服务端均可以实施。理想的方式是前端和后端都进行所有的检测。若校验项过多,可能导致前端性能方面压力较大,可以只在前端进行相对简单的校验,例如文件大小和文件名的检测。而客户端校验通过后,服务端依然要进行该项校验,目的是防止客户端向服务端进行网络传输的过程中有数据包被拦截并修改,导致客户端发出的数据包和服务端收到的数据包并不一致[2-3]。

在这些检测中,黑名单的检验可靠性并不高。例如对文件名后缀的校验,比较容易通过字母大小写的组合通过Web系统的黑名单检查。而对于文件类型的校验,也可以通过类似的手段规避掉黑名单检查。所以在需要有校验的地方,尽量使用白名单,这样可以尽量规避由使用黑名单带来的风险。

3.2 隐藏文件上传的路径

攻击者上传木马文件后,若要通过此木马进行攻击,需要先确定文件在Web服务器上的路径。因此在文件成功上传后,服务端不应该暴露出该文件所在的路径,即URL地址。例如上传文件完成后,Web界面上不应该显示出此文件上传到了哪个路径;若上传后的文件可以被下载,应该注意下载的请求或响应数据包不能带有文件的真实路径;若文件可以在Web界面上展示,应该注意网页的源代码不能暴露文件的相对或绝对路径,以防止攻击者通过浏览器的开发者选项或网络抓包探测到文件的地址信息。此外,文件上传后最好可以通过服务器将其随机改名;即使攻击者探测到了文件的路径信息,依然难以确定其精确的访问地址[4]。

3.3 将上传后的文件设置为不可执行

以Linux服务器为例,修改文件上传目录的权限,将其设置为不可执行,这样可以防止攻击者访问该目录下的文件。既然不可访问,自然也就无法触发木马文件。也可以通过上传时渲染文件的方式,例如文件压缩、加密等方法修改文件的内容,使文件中的代码不可以被执行,也可以达到相同的效果。

4 结语

本文主要介绍了文件上传漏洞的产生原因、一般的攻击手段,也提出了比较有效的防御方法,以帮助网站开发者可以很大程度降低此漏洞的安全风险。然而世界上并没有绝对安全的系统,开发者和用户都需要在平时注意使用规范,将安全风险降到最低。

猜你喜欢
服务端木马校验
小木马
骑木马
小木马
新时期《移动Web服务端开发》课程教学改革的研究
旋转木马
炉温均匀性校验在铸锻企业的应用
在Windows Server 2008上创建应用
大型电动机高阻抗差动保护稳定校验研究
基于加窗插值FFT的PMU校验方法
摸清黑客套路防范木马侵入