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文件中的版本說明刪除,如下圖

這樣可以避免被攻擊者識別出版本號,增加破壞難度。

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