扫描网站使用的jquery库,是否为具有已知漏洞的版本。

1、前言

1.1 简介

        在 jquery 的诸多发行版本中,存在着 DOM型XSS 漏洞,易被攻击者利用。

1.2 漏洞成因

        漏洞原因在于过滤用户输入数据所使用的正则表达式存在缺陷,可能导致 LOCATION.HASH 跨站漏洞。

2、扫描插件——retire.js

        这里强烈推荐我觉得很好用的一个插件:retire.js。我一般是作为火狐的插件使用,这样在浏览网页时会自动检测到jquery的版本信息。

        会显示jquery的版本以及对应的jquery的网址,以及可能存在哪些CVE的漏洞。

3、验收jquery历史漏洞版本环境

版本漏洞检测网站:http://research.insecurelabs.org/jquery/test/

jQuery 版本漏洞验证网站:https://jsbin.com/?html,js,output

3.1 CVE-2020-11022、CVE-2020-11023

1
在线验证网站:https://vulnerabledoma.in/jquery_htmlPrefilter_xss.html

使用方式:

(1)将网址中head头部中的script标签的src内容替换为待验证的jquery网址。

(2)然后尝试点击三个poc的任意一个Append via .html()按钮,存在漏洞则会出现弹窗。

3.2 CVE-2012-6708

1
2
3
在Console窗口输入:
$("element[attribute='<img src=123 οnerrοr=alert(123)>'")
若存在漏洞,则会出现弹窗。

3.3 CVE-2011-4969

1
$("#<img src=x onerror=alert(111)>")

3.4 CVE-2012-6708、CVE-2011-4969、CVE-2015-9251

1
jQuery-with-XSS-master:https://github.com/mahp/jQuery-with-XSS

可以验证这三个漏洞:

使用方式:

(1)下载好这个验证poc之后,可编辑test.html的第九行代码,将代码中的src后的链接改为自己要验证的js地址链接。

(2)保存之后,用浏览器打开可以看到三个demo,依次点击,若出现弹窗则证明被验证成功。

(3)页面中的test version(测试版本)链接中,可查看对应 jQuery 版本存在的 bug 编号。

4、修复建议

  • 暂时隐藏 jQuery 版本信息,避免被攻击者识别出版本号。

  • 建议将 jQuery 版本升级至 1.9.x 或以上版本 3.4.0,升级 jquery-ui 版本到 1.12.0 以上。不过升级有风险,因为版本兼容的问题,jQuery 官方推荐了 jQuery Migrate 库来解决 jQuery 升级问题。

  • 过滤用户输入的内容、严格控制输出等。