前端JavaScript绕过
前端 JavaScript(简称 JS) 防护是通过调用JS 脚本对上传文件进行校验的一种防护方法。其最显著的特点, 就是文件的校验发生在用户侧,大多数情况下是在用户的浏览器端(利用PC或移动设备都可以)。
<script type="text/javascript">
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. lastIndex0f("."));
//判断上传文件类型是否允许上传
if (allow_ext. index0f(ext_name) == -1) {
var errMsg = "该文件不允许上传, 请上传" + allow_ext + "类型的文件,当前文件类型为: " + ext_name;
alert(errMsg);
return false;
}
}
</script> 这种防护的绕过方式非常简单,只需要关闭浏览器端的 JS 解析即可。但对于不同的浏览器, 其关闭方式也不同。例如, 对于FireFox,想要关闭JS解析, 需要在地址栏输入“ about:config”, 然后在设置里找到“Javascript”选项, 将其值设置为“False”(默认为True)。此外, 也可以通过Burp Suite 抓包/改包的方式, 先将文件的扩展名修改为符合脚本要求的格式(例如. jpg、. png或者. gif),然后通过 Burp Suite抓包修改扩展名的方式绕过。
在JavaScript 文件上传防护中, 由于对上传文件的检测发生在客户端, 因此是一种不安全的文件上传防护方式,攻击者可以很轻松地绕过。虽然这种防护方式可以减少服务器的资源消耗, 但并不推荐读者在日常中使用。