-
XSS簡(jiǎn)介
- 跨站腳本攻擊,英文全稱是Cross Site Script,本來縮寫是CSS,但是為了和層疊樣式表(Cascading Style Sheet,CSS)有所區(qū)別,所以在安全領(lǐng)域叫做"XSS"。
- XSS,通常指黑客通過“HTML注入”篡改了網(wǎng)頁,插入了惡意的腳本,從而在用戶瀏覽網(wǎng)頁時(shí),控制用戶瀏覽器的一種攻擊。在一開始,這種攻擊的演示案例是跨越的,所以叫“跨站腳本呢”。但是發(fā)展到今天,由于JavaScript的強(qiáng)大功能以及網(wǎng)站前端應(yīng)用的復(fù)雜化,是否跨站已經(jīng)不再重要。
- 反射型XSS
- 反射型XSS只要簡(jiǎn)單地把用戶輸入的數(shù)據(jù)“反射”給瀏覽器,也就是說,黑客往往需要誘使用戶“點(diǎn)擊”一個(gè)惡意連接,才能成功。反射性XSS也叫做“非持久型XSS”
- 存儲(chǔ)型XSS
- 存儲(chǔ)型XSS會(huì)把用戶輸入的數(shù)據(jù)“存儲(chǔ)”在服務(wù)器端。這種XSS具有很強(qiáng)的穩(wěn)定性。存儲(chǔ)型XSS通常也叫做”持久性XSS“
- DOM Based XSS
- DOM Based XSS從效果上來說也是反射型XSS。單獨(dú)劃分出來,是因?yàn)镈OM Based XSS的形成原因比較特別。發(fā)現(xiàn)它的安全專家專門提出了這種類型的XSS。
-
XSS攻擊進(jìn)階
- 初探XSS Payload
- XSS攻擊成功后,攻擊者能夠?qū)τ脩舢?dāng)前瀏覽的頁面植入惡意腳本,通過惡意腳本,控制用戶的瀏覽器。這些用以完成各種具體功能的惡意腳本嗎,被稱為”XSS Payload”。
- 構(gòu)造GET和pOST請(qǐng)求
- XSS釣魚
- 識(shí)別用戶瀏覽器
- 識(shí)別用戶安裝的軟件
- CSS History Hack (失效)
- 獲取用戶的真實(shí)IP地址
- javascript本身并沒有提供獲取本地IP地址的能力, 一般來說,XSS攻擊需要借助第三方軟件來完成。比如,客戶端安裝了Java環(huán)境(JRE),那么XSS就可以通過調(diào)用JavaApplet的接口來獲取客戶端的本地IP地址
- Metasploit 引擎曾展示過一個(gè)強(qiáng)大的測(cè)試頁面,綜合了Java Applet、Flash、iTunes、Office Word、QuickTime等第三方軟件的功能,抓取用戶的本地信息。
-
Xss攻擊平臺(tái)
- Attack API,它總結(jié)了很多能夠直接使用XSS Payload歸納為API的方式。
- BeFF,曾經(jīng)是最好的XSS演示平臺(tái)。BeFF所演示的是一個(gè)完整的XSS攻擊過程。BeFF有一個(gè)控制后臺(tái),攻擊者可以在后臺(tái)控制前端的一切。
- XSS-Proxy,是一個(gè)輕量級(jí)的XSS攻擊平臺(tái),通過嵌套iframe的方式可以實(shí)時(shí)地遠(yuǎn)程控制被XSS攻擊的瀏覽器
- XSS worm
- 調(diào)試javascript
- firebug、IE 8 Developer Tools、Fiddler、HttpWatch
- 初探XSS Payload
-
XSS構(gòu)造技巧
利用字符編碼構(gòu)造
-
繞過長(zhǎng)度限制
- 利用location.hash可以繞過
- 利用注釋符繞過長(zhǎng)度限制
-
使用<base>標(biāo)簽
<body> <base > <img src="/intl/en_ALL/images/srpr/logolw.png"> </body>- <base>標(biāo)簽將指定其后的標(biāo)簽?zāi)J(rèn)從"http://www.google.com"取
- 需要特別注意的是,在有的技術(shù)文檔中,提到<base>標(biāo)簽只能用于<head>標(biāo)簽之內(nèi),其實(shí)這是不對(duì)的,<base>標(biāo)簽可以出現(xiàn)頁面的任何地方,并作用于位于該標(biāo)簽之后的所有標(biāo)簽。
- 所以在設(shè)計(jì)XSS安全方案時(shí),一定要過濾掉這個(gè)非常危險(xiǎn)的標(biāo)簽
-
window.name的妙用
-
對(duì)當(dāng)前窗口的winodw.name對(duì)象復(fù)制,攻擊者利用這個(gè)對(duì)象,可以實(shí)現(xiàn)跨域、跨頁面?zhèn)鬟f數(shù)據(jù)。
<script> window.name = "alert(docunment.cookie)" location.href="http://www.xssedsite.com/xssed.php </script> 到新的窗口后執(zhí)行eval(name)
-
-
XSS的防御
-
HttpOnly
- HttpOnly標(biāo)記的Cookie不能被瀏覽器讀取。
- 但是,HttpOnly不是萬能的,添加了HttpOnly不等于解決了XSS問題
- 使用HttpOnly有助于緩解XSS攻擊,但仍然需要其他能夠解決XSS漏洞的方案
-
輸入檢查
- XSS Filter
-
輸出檢查
- 安全的編碼函數(shù)
- 只需一種編碼嗎
-
正確的防御XSS
- 在HTML標(biāo)簽中輸出,使用HtmlEncode
- 在HTML屬性中輸出,使用HtmlEncode
- 在<script>標(biāo)簽中輸出,使用JavascriptEncode
- 在事件中輸出,使用JavascriptEncode
- 在CSS中輸出,盡量禁止用戶可控制的變量在CSS中輸出,如果必須,那么,使用OWASP ESAPI中的encodeForCSS()函數(shù)
- 在地址中輸出,可以用URLEncode,但是整個(gè)URL的時(shí)候,可以用OWASP ESAPI中的一個(gè)URLEncode實(shí)現(xiàn)(此API未解決為偽協(xié)議的問題)
- 處理富文本,應(yīng)該使用白名單,避免使用黑名單,還要進(jìn)行專門的過濾
-
防御DOM Based XSS
- DOM Based XSS是一種比較特別的XSS漏洞,前文提到的幾種防御方法都不太使用,需要特別對(duì)待。
- DOM Based XSS是從javascript輸出到HTML頁面的,而不是從服務(wù)器應(yīng)用直接輸出到HTML頁面的。
- 首先,在輸出到<script>時(shí),應(yīng)該執(zhí)行一次JavascriptEncode,其次,在DOM輸出到HTML頁面的時(shí)候,要分具體情況看待,如果是輸出到事件過著腳本,則要再做一次javascriptEncode,如果輸出到HTML內(nèi)容或著屬性,則要做一次HtmlEncode。
-
HttpOnly
跨站腳本攻擊(XSS)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 跨站腳本(XSS)是web應(yīng)用中的一種典型的計(jì)算機(jī)安全漏洞。XSS允許攻擊者可以在其他用戶瀏覽的web頁面中注入客...
- 定義 跨站腳本攻擊(Crossing Site Script),本來縮寫是CSS,但是為了和層疊樣式表(Casca...
- 1、什么是XSS攻擊 XSS(Cross SiteScript)攻擊是跨站腳本攻擊的縮寫,是一種網(wǎng)站應(yīng)用程序的安全...
- 今天走親戚,因?yàn)橛惺乱琰c(diǎn)回來,所以出發(fā)也是近幾年最早的一次,今天明顯冷了很多,在外面買東西的小朋友也少了很多,賣...
- 04178賴秀冬 新年,我們都要變得更勇敢 凡是過往,皆為序章。新的一年馬上就要到來,心情也隨之振奮了好多。踩著年...