jQuery XSS漏洞原因查找及解决方案

 

测试网站是否存在此XSS跨站漏洞
以google浏览器为例,打开要测试的网站,在Console窗口输入:
$("element[attribute='<img src=123123 οnerrοr=alert(123)>'"); 回车之后会出现弹窗,说明存在XSS跨站漏洞

解决方案:升级jquery版本1.10.2以上

升级之后如果还未修复,可能是其他的js包引起的,jquery-migrate-1.2.1.min.js包也会导致XSS跨站漏洞,如果引用此js包,可以尝试升级。
由于升级jquery-migrate包会导致很多脚本执行报错,所以笔者直接删除jquery-migrate包,然后替换掉所有js包里废弃的js函数,  例如 live 改成on ,具体方法可以网上搜索。

定位具体导致此漏洞的js包,可以尝试用以下方式:

1.以google浏览器为例,先执行测试脚本,如下图,会看到e.fn.init被执行,出现弹窗

然后切换到Network,如下图:

找到测试脚本执行的请求,就可以看到e.fn.init是在哪个js包执行的,如下图:

找到具体的包,就有办法修复了,一般是升级js包的版本或者直接移除存在漏洞的js包

漏洞原因:1.x系列版本等于或低于1.12的jQuery,和2.x系列版本等于或低于2.2的jQuery,过滤用户输入数据所使用的正则表达式存在缺陷,可能导致LOCATION.HASH跨站漏洞。

安全建议:

隐藏js脚本版本,把jquery-migrate-1.2.1.min.js文件名改成jquery-migrate.min.js

并且把js文件中的版本说明删除,如下图

这样可以避免被攻击者识别出版本号,增加破坏难度。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章