js绕过方法
按 F12 查看元素,把校验的上传文件后缀名文件删除(或在浏览器禁用js),即可上传。
对于js来说这样还算简便,但burp抓包仍然为后续更常用的手段
把恶意文件改成 js 允许上传的文件后缀,如 jpg、gif、png 等,再通过burpsuite抓取 post 的数据包,把后缀名改成可执行的脚本后缀如 php 、asp、jsp、net 等。即可绕过上传。
抓包修改后缀名
js前端检测原理
在文件上传时,用户选择文件时,或者提交时,有些网站会对前端文件名进行验证,一般检测后缀名,是否为上传的格式。如果上传的格式不对,则弹出提示文字。此时数据包并没有提交到服务器,只是在客户端通过 js 文件进行校验,验证不通过则不会提交到服务器进行处理。
js前端检测代码分析
客户端 html 上传文件时会调用 checkFile 函数,首先获取文件后缀名。如果文件为空,则弹出“请选择要上传的文件”,如果文件不为空,获取上传的文件后缀名不 .jpg、.png 、.gif 其中一种则提示“该文件不允许上传”,上传失败。
<in put type="file" name="upload_file" id="fileInput">
<button onclick="checkFile()">Check File</button>
<script>
function checkFile() {
// 获取文件输入框的值
var file = document.getElementById('fileInput').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;
}
// 如果文件类型验证通过,返回 true
return true;
}
</script>