安全-Pass01之js绕过(upload-labs)

Posted 小狐狸FM

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安全-Pass01之js绕过(upload-labs)相关的知识,希望对你有一定的参考价值。

前言

jsjavascriptweb编程语言,用于控制网页行为,是一种用于web前端的语言
第一关中主要是绕过js的前端检测,服务器后端没有对文件进行再次过滤

upload-labs靶场下载

蚁剑AntSword

菜刀Cknife

一、题目

在这里插入图片描述

在这里插入图片描述

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;
    }
}

二、WriteUp

[1]. 源码审计

var file = document.getElementsByName('upload_file')[0].value;
  • 在下方的js代码中,先是定义了一个字符串变量allow_ext规定允许上传的文件后缀
  • 然后获取文件名中最后一个小数点右侧的字符串存入变量ext_name
  • 假设文件名为test1.txtext_name的值为txtext_name + "|"就是txt|
    因为txt|字符串.jpg|.png|.gif中,所以allow_ext.indexOf(ext_name + "|"的值为-1,会进入if语句中跳出错误提示的弹窗并结束程序
    JavaScript indexOf() 方法
	//定义允许上传的文件类型
    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;
    }

[2]. js绕过

创建一个文本,修改后缀为jpg、png或gif可绕过前端js的检测

在这里插入图片描述

  • 因为绕过js直接上传到服务器之后仍然是一个图片格式的文件,就算能访问图片还是不能执行里面的代码
  • 所以上传的同时需要开启burpsuite抓包,绕过js就能被抓到
    修改文件名后,点击forward发送报文

在这里插入图片描述
在这里插入图片描述

  • 成功发送之后,就可以取消抓包,查看上传的情况
  • 上传成功后返回了我们上传的图片,右键保存图片的url并访问,没有报错就说明php代码被执行了

在这里插入图片描述
在这里插入图片描述

shell url就填写刚刚的复制下来的图片url地址,使用蚁剑工具连接成功

在这里插入图片描述
在这里插入图片描述

以上是关于安全-Pass01之js绕过(upload-labs)的主要内容,如果未能解决你的问题,请参考以下文章

安全-Pass04之.htaccess绕过(upload-labs)

安全-Pass14之文件头绕过(upload-labs)

安全-Pass15之图片马绕过(upload-labs)

安全-Pass08之黑名单点绕过(upload-labs)

安全-Pass03之黑名单绕过(upload-labs)

安全-Pass11之黑名单双写绕过(upload-labs)