Upload-Lab Pass-01

Upload-Lab Pass01(前端JS过滤)

​ 文件上传漏洞的危害大家都知道了,攻击者通过文件上传漏洞上传恶意可执行脚本可以达到获取服务器shell的目的。

​ 文件上传漏洞的防御分为前端验证和后端验证。

​ 前端是通过文件名信息进行验证,普通开发者可能会在前端以黑名单的方式过滤文件后缀名,黑名单也会出现遗漏情况,所以前端防御建议使用白名单过滤的方式,当然,前端的过滤方式一旦修改了js文件就不起作用了。

​ 后端验证就是通过MIME类型验证、文件后缀验证、文件路径验证、文件内容验证这几种方式。

​ Upload-Lab是文件上传漏洞利用的靶场,我们可以利用这个靶场学习文件上传漏洞相关知识,同时可以通过相关源码分析漏洞产生的原因。

​ 文件上传漏洞测试的思路就是先测试是否为前端验证,再测试后端验证。

Pass-01

​ 首先我们看到pass-01,我们可以先尝试上传 .php文件,测试是否存在前端验证。

在这里插入图片描述

​ 我们上传一句话木马文件ass.php ,这里我们看到前端页面提示该文件不允许上传,我们可以判断出当前页面是在前端对上传文件后缀进行了过滤。

在这里插入图片描述

​ 打开查看器,查看网页源代码,可以发现当前上传模块调用了JS中的checkFile方法。

在这里插入图片描述

​ 我们删除onsubmit触发器,不调用JS方法,再次测试上传,发现上传成功。

在这里插入图片描述

​ 上传成功后我们可以复制链接地址,使用菜刀或者蚁剑进行连接。
在这里插入图片描述

代码分析如下:
前端JS中使用了checkFile方法,在这个方法中定义了允许上传的文件格式类型,也就是说只有满足了这三种文件后缀名才能够允许上传,这里我们是把这个前端方法直接给删除了,这里大家要记住一点,凡是在前端做的操作都是可以绕过的,因为这部分是用户可控的部分,用户想怎么做就怎么做。

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;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值