2021-11-23
什么是XSS?
在頁面加載時症歇,同時把攻擊者的js代碼渲染到頁面中,通常獲取受害者的cookie
分類
1.反射型:需要構(gòu)造好的js代碼线罕,讓用戶去點擊鏈接才能觸發(fā)
2.存儲型:代碼存儲在服務(wù)器中父泳,用戶每次訪問都能夠觸發(fā)般哼,能夠進(jìn)行蠕蟲傳播
3.DOM型:通過事件觸發(fā)的一類反射型XSS
常見的事件:onload:當(dāng)頁面或圖像加載完成后立即觸發(fā)
onblur:元素失去焦點
onfocus:元素獲得焦點
onclick:鼠標(biāo)點擊某個對象
onchange:用戶改變域的內(nèi)容
onmouseover:鼠標(biāo)移動到某個元素上
onmouseout:鼠標(biāo)從某個元素上移開
onkeyup:某個鍵盤的鍵被松開
onkeyup:某個鍵盤的鍵被按下
注入方式
1.在 HTML 中內(nèi)嵌的文本中,惡意內(nèi)容以 script 標(biāo)簽形成注入尘吗。
2.在內(nèi)聯(lián)的 JavaScript 中逝她,拼接的數(shù)據(jù)突破了原本的限制(字符串浇坐,變量睬捶,方法名等)。
3.在標(biāo)簽屬性中近刘,惡意內(nèi)容包含引號擒贸,從而突破屬性值的限制,注入其他屬性或者標(biāo)簽觉渴。
4.在標(biāo)簽的 href介劫、src 等屬性中,包含 javascript: 等可執(zhí)行代碼案淋。
5.在 onload座韵、onerror、onclick 等事件中,注入不受控制代碼誉碴。
6.在 style 屬性和標(biāo)簽中宦棺,包含類似 background-image:url("javascript:..."); 的代碼(新版本瀏覽器已經(jīng)可以防范)。
7.在 style 屬性和標(biāo)簽中黔帕,包含類似 expression(...) 的 CSS 表達(dá)式代碼(新版本瀏覽器已經(jīng)可以防范)代咸。
防御
1.同源策略
2.非必要不開啟CORS
3.白名單和黑名單
4.配置Vary:Origin頭部
5.非必要不使用ACAC
6.限制緩存時間
7.輸出編碼
8.輸入過濾
9.內(nèi)容安全策略CSP
整體的 XSS 防范是非常復(fù)雜和繁瑣的,我們不僅需要在全部需要轉(zhuǎn)義的位置成黄,對數(shù)據(jù)進(jìn)行對應(yīng)的轉(zhuǎn)義呐芥。而且要防止多余和錯誤的轉(zhuǎn)義,避免正常的用戶輸入出現(xiàn)亂碼奋岁。
bypass
1.預(yù)加載
2.MIME Sniff
3.302跳過
4.iframe
5.base-uri
練習(xí)靶場:
DVWA:https://github.com/digininja/DVWA
xss-labs:https://github.com/do0dl3/xss-labs思瘟。
pikachu:https://github.com/zhuifengshaonianhanlu/pikachu
帶外平臺:
https://xss.pt/
https://xsshs.cn/
參考鏈接:https://tech.meituan.com/2018/09/27/fe-security.html
自己的另一篇文章:https://blog.nowcoder.net/n/ba6da1a973c74ed692b4de9dbc1054cf
復(fù)習(xí)啊復(fù)習(xí),自己寫過的東西都不記得闻伶。