顾翔老师近期推出一对一入职面试辅导。有兴趣者可加微信xianggu19720625与我联系。先要提供简历初选,合适者进一步洽谈。
顾翔老师的《软件测试技术实战设计、工具及管理》网上购买地址:
https://item.jd.com/34295655089.html
《基于Django的电子商务网站》网上购买地址:
https://item.jd.com/12082665.html
店铺二维码:
2.9文件上传漏洞
1.两个著名的文件上传漏洞
1)IIS 6.0文件上传漏洞
l 在建立一个目录名为a.asp,该目录下所有文件均可被解析为asp文本。
l 建立文件a.asp;1.jpg,分号将会被截断,仍旧作为a.jsp被解析。
设想如果恶意用户写了一段具有破坏性质的asp脚本,命名为a.asp;1.jpg,上传到网站服务器上,然后运行这个文件,不就可以达到攻击的目的了。
2)Apache文件上传漏洞
在Apache1.X和2.X中,建立一个文件为1.php.rar,由于rar文件没有在%APACHE_HOME%/conf/mime.types定义,所以会被误认为是1.php文件。和IIS 6.0文件上传漏洞一样,如果恶意用户写了一段具有破坏性质的php脚本,命名为1.php.rar,上传到网站服务器上,然后运行这个文件,也就可以达到攻击的目的。
2.绕过前端检查
有如下HTML代码。
<form action="http://doUpload.jsp"method="post" enctype="multipart/form-data">
请选择要上传的文件<input type="file" name="upfile"size="50">
<input type="button"value="提交" id="submit"onsubmit="checkFileType()">
点击【提交】按键,运行javascript函数checkFileType(),只有后缀为jpg、png、gif、bmp格式的文件才可以上传。黑客写了一段具有破坏性质的jsp代码,命名为1.jpg。1.jpg这个文件可以绕过前端javascript函数checkFileType()检查,这个时候用类似于Burn Suite的截包工具把这个HTTP请求截获,改名为1.jsp,如30所示。
30 上传文件绕过前端检查
发送修改好的请求包,这样一个名为1.jsp带有恶意代码的文件就被上传到服务器上。
3. 文件上传的防护方法
由上面的例子可以看出,仅仅在前端进行防护是远远不够的,重要的是在后端进行防护检验。
1)黑名单法
BlackList=array('asp','asa','aspx');
对于黑名单而言,不允许上传在黑名单里面的文件。用这种方法好像可以解决文件上传问题,但是这种方法是不推荐的,主要因为。
l 容易遗漏:使用黑名单,对有些文件类型是很容易遗漏的。
l Windows大小写不敏感:如果服务器是Windows,这里定义了'asp','asa','aspx',如果用户上传的是1.ASP文件是否可以接受?
2)白名单法
WhiteList=array('jpg','png','bmp','gif');
上面程序是一个典型的白名单,只允许白名单里面的文件被上传。使用这种方法是相对比较安全的。
另外,检查文件类型不要仅仅通过文件后缀去判断,对于后端建议采用基于MIME属性去判断。下面代码是JAVA获得文件属性的一种方法。
importjavax.activation.MimetypesFileTypeMap;
import java.io.File;
class GetMimeType {
public static void main(String args[]) {
File f = newFile("gumby.gif");
System.out.println("Mime Type of" f.getName() " is "
newMimetypesFileTypeMap().getContentType(f));
// expected output :
// "Mime Type of gumby.gif isimage/gif"
}
}
3)其他措施
处理检查文件类型,还可以使用以下三个方面进行加固。
l 确保上传的目录是不可执行的:如果被上传上来的文件是不可以运行的,中途即使被截获修改了名称也是无所谓的。
l 上传后修改文件名:对于上传上来的文件修改文件名,比如可以把类似于mysql.ini文件改名为1.ini,从而使其失去作用。
l 单独设置文件服务器的域名。设置单独的文件服务域名是一种不错的选择,这样类似于XSS注入也受到了一定控制。
顾翔老师与云测学院联合推出:软件测试分析与设计,请点击https://v.youku.com/v_show/id_XNDQ3MzkyNjk3Ng==.html?spm=a2hzp.8244740.0.0,收看。有不同观念欢迎与顾翔老师交流!