赞
踩
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()方法用于替换自闭合标签,有点类似标签自动补全。比如将<span/> 替换为 <span></span>。
3.x版本之前使用的正则为:
rxhtmlTag =/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi [...] htmlPrefilter: function( html ) { return html.replace(rxhtmlTag, "<$1></$2>" ); }
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如下:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。