一、描述
Web应用系统虽然对用户上传的文件进行了校验,但是校验是通过前端javascript代码完成的。恶意用户可以对前端javascript进行修改或者是通过抓包软件篡改上传的文件,就会导致基于js的校验很容易被绕过。
二、检测代码
定义允许上传的文件类型(白名单)
function checkFile() {
var file = document.getElementsByName('upload_file')[0].value;
if (file == null || file == "") {
alert("请选择要上传的文件!");
return false;
}
//定义允许上传的文件类型
var allow_ext = ".jpg|.png|.gif";
//提取上传文件的类型
var ext_name = file.substring(file.lastIndexOf("."));
//判断上传文件类型是否允许上传
if (allow_ext.indexOf(ext_name + "|") == -1) {
var errMsg = "该文件不允许上传,请上传" + allow_ext + "类型的文件,当前文件类型为:" + ext_name;
alert(errMsg);
return false;
}
}
三、通过burpsuite抓包修改文件后缀进行绕过
正常上传会被前端js检测出来不符合定义的白名单
首先,正常选择一个jpg文件(过前端js检测)
通过抓包修改文件后缀进行绕过(修改文件后缀以及文件内容),将上传的文件修改后在上传
修改前
修改后
上传文件
访问上传的文件