1.原理
文件上传漏洞是指用户上传了一个可执行脚本文件,并通过此文件获得了执行服务器端命令的能力。要完成这个攻击,要满足一下几个条件:
- 上传的文件能够被Web容器解释执行,所以文件上传后所在的目录要是Web容器所覆盖到的路径。
- 用户能够从Web上访问这个文件。
- 用户上传的文件如果被安全检查、格式化、图片压缩等功能改变了内容,则可能导致攻击不成功
文件包含漏洞(file include)(有次面试问我文件包含,我回答的文件上传…)
严格来说,文件包含是代码注入的一种。代码注入就是注入一段用户能控制的脚本代码,并让服务器端执行。“代码注入”的典型代表就是文件包含。文件包含可能会出现在jsp、php、asp语言中。php常用的四种四种文件包含函数:include()、requrie()、include_once()、requrie_once()。使用这些函数包含一个文件时,php内核并不会在意该被包含的文件是什么类型,该文件将作为php代码执行。可分为本地文件包含、远程文件包含。
2.分类
1、上传文件是PHP、JSP、ASP等脚本代码,服务器的Web容器解释并执行了用户上传的脚本,导致代码执行;
2、上传文件是FLASH的策略文件crossdomain.xml,导致可以控制Flash在该域下的行为(其他通过类似方式控制策略文件的情况类似);
3、上传文件是病毒、木马文件,黑客用以诱骗用户或者管理员下载执行植入到pc中。
4、上传文件是钓鱼图