文件上传的定义
文件上传在web中运用非常的广泛,可以说是web开发必备功能,比如注册网站时上传头像,某些论坛中图片,文件上传等,本来这项工能是为了给用户提供方便,但如果因为某些原因产生漏洞,被骇客利用,就会对服务器产生严重破坏。
文件上传漏洞产生原因
导致文件上传漏洞的原因有很多,根据网上的资料,我主要找到以下几类:
1、服务器配置不当;
比如:开启http put方法,在没有上传页面的情况下也能上传文件。
2、服务端过滤不严格被绕过;
服务器上对文件上传做了部分过滤或者直接没有过滤导致的文件上传。
比如:采用黑名单过滤.php,但没有过滤.PHp,就会产生漏洞。
3、文件解析导致的文件上传漏洞
比如:Apache的左解析特性,就是当文件的最后一个后缀名无法识别时,向左解析第二个后缀名,就像a.php.xxx,Apache 不认识.xxx所以会直接解析为a.php。
4、文件路径截断
比如:00截断,像1.php%00.jpg上传时过滤器认为你上传的文件后缀名为.jpg,而实际上web解析的时候解析到的是1.php。至于原因在文章后面讲解,莫慌。
5、逻辑漏洞产生文件上传
文件上传的危害
当然,现在知道了文件上传时个漏洞,也知道了一些产生的原因,那他究竟有多大危害?
当我们利用文件上传漏洞上传了一个webshell并成功连接。接下来就可以修改网页内容;钓鱼,挂马,进行提权;上传系统病毒、木马进行挖矿;控制服务器,搭建跳板进行内网渗透。相比于SQL注入等高危漏洞,文件上传漏洞的危害只强不弱。
文件上传漏洞的原理
网站和web应用程序都是由编程语言所写,所以网站想要将编程语言变为我们看到的web界面就需要解析这些代码,怎么解析?当然是需要对应语言的解释器,比如php解释器。而且网站都有自己可以通过web访问的目录,比如phpstudy的www目录,在这个目录下的文件可以通过url直接访问,当有用户访问的时候,浏览器就会调用解释器去编译执行这个文件。所