漏洞复现:不安全的jquery版本

admin 2025-12-22 04:05:35 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文复现了不安全的jQuery版本漏洞,特别是CVE-2020-11022,演示了在jQuery3.3.1中使用html或append方法处理用户输入时,可能导致DOMXSS攻击。通过创建测试页面并点击按钮,成功触发弹窗,而升级到jQuery3.7.1后漏洞被修复。建议开发者升级jQuery到最新版本,并避免直接使用这些API处理不受信任的输入。 综合评分: 91 文章分类: 漏洞分析,WEB安全,漏洞POC,实战经验,安全意识


cover_image

漏洞复现:不安全的jquery版本

原创

彭文虎

新蜂网络安全实验室

2025年12月17日 18:30 北京

在一些漏洞检测报告中常出现“不安全的jquery版本”漏洞,有时未引起开发人员的重视,故对该漏洞进行复现,演示漏洞的原理和风险。

一、jquery的典型漏洞

CVE-2019-11358(影响 jQuery ≤ 3.4.0)

CVE-2020-11022(影响 jQuery 1.https://www.gm7.org/2025/12/19/x、2.https://www.gm7.org/2025/12/19/x、3.0 – 3.4.1)

CVE-2020-11023(同上)

其中,CVE-2019-11358是原型污染漏洞,后两个是DOM XSS漏洞。需要说明的是,jQuery本身是函数库,并不是漏洞点,漏洞是否可利用,取决于是否使用了存在问题的API函数,如html()、append()。

二、查看jquery版本

查看网站当前使用的jquery版本:

F12打开源码,然后在Console中输入:$.fn.jquery,即可查询当前网站使用的jquery版本

三、CVE-2020-11022漏洞复现

(一)获取jquery代码

1、获取存在漏洞的jquery

将漏洞所在网站的jquery文件保存在本地

wget “https://网站域名/static_resources/r/cms/www/red/style/jquery-3.3.1.min.js”

2、获取最新版本的jquery

下载最新版本的jquery 3.7.1

wget “https://code.jquery.com/jquery-3.7.1.min.js”

(二)启动测试web站点

1、编写html页面

在大于或等于1.2且在3.5.0之前的jQuery版本中,即使执行了消毒(sanitize)处理,也仍会执行将来自不受信任来源的HTML传递给jQuery的DOM操作方法(即html()、.append()等),从而导致https://www.gm7.org/2025/12/19/xss漏洞。

漏洞原作者搭建的在线环境:

https://vulnerabledoma.in/jquery_htmlPrefilter_https://www.gm7.org/2025/12/19/xss.html

将页面的源代码复制下来,粘贴到本地创建的html文件中,名为test.html。

修改html文件,引入存在漏洞的网站所使用的jquery文件。

保存退出。

2、启动web服务

在实验目录启动Python HTTP服务:

python3 -m http.server 8000

(三)漏洞分析

1、漏洞现象

点击PoC 1下面的“Assign to innerHTML”按钮,没有弹窗,但是点击“Append via .html()”按钮,页面弹窗:

点击PoC 2下面的按钮,也会出现同样的事情。原因是什么呢?我们分析页面的源码。

2、页面源码分析

关键函数如下:

以上是对参数的处理,那么页面中是如何调用该函数的呢?看下面的代码:

PoC 1

//第一个按钮,显示为“Assign to innerHTML”,点击该按钮时调用test函数,只传递一个参数,值为1。此时test函数会找到id为“poc1”的https://www.gm7.org/2025/12/19/xmp标签,将该标签的内容使用标准的html方式设置为div元素的内容。

//第二个按钮,显示为“Append via .html()”,点击该按钮时调用test函数,传递两个参数,1和true。此时test函数会将“poc1”的内容交给jquery处理,设置为div元素的内容。

,用于结束该标签。img标签处于style标签的属性中,alert不会被执行。

但是点击PoC 1下面的“Append via .html()”按钮,查看div元素的值:

poc1元素的内容:

此时