孔德广,蒋朝惠,郭 春,周 燕
Webshell是一种黑客对服务器进行控制的后门程序[1]。如果黑客发现Web应用存在文件上传漏洞,46%的黑客都会上传Webshell进行后续的攻击[2]。根据《2016年中国互联网网络安全报告》[3]的统计,CNCERT/CC共监测到境内82 072个网站被植入了后门(Webshell)。黑客可以暗中对Web服务器进行远程控制,上传、查看、修改、删除网站服务器上的文件,读取并修改网站数据库的数据,甚至可以直接在网站服务器上运行系统命令。文件上传漏洞普遍存在于网站中,各大SRC也相继爆出过严重的文件上传漏洞[4-5]。文件上传漏洞虽然数量上不如SQL注入漏洞,但一旦爆发,危害要比SQL注入漏洞大很多,可以直接上传Webshell,从而拿下Web服务器。
目前,检测Webshell主要还停留在事前和事后。事前防御有可能被绕过,事后防御属于亡羊补牢,只有做到事中,才能确保Web服务器的安全。什么造成了文件上传漏洞?主要是因为程序员在编写网站的过程中,缺乏安全开发经验[6-9]。目前,主要防御文件上传漏洞的方法是客户端校验、服务端校验和WAF校验。
(1)客户端校验
不少程序员为了省事,直接在前端编写限制文件上传的过滤规则,通常有白名单也有黑名单形式。但是,这种做法会导致攻击者通过直接捕获数据包进行改包而绕过客户端校验。
(2)服务端校验
服务端校验是确保网站安全最基本的一个要求,主要方法有文件头Content-type字段校验、文件内容头校验、后缀名黑名单校验、后缀名白名单校验和自定义正则校验等手段。但是,如果程序员在编写服务端代码时考虑不周全,以上几种防御手段都可以绕过。……