XSS(跨站腳本攻擊)內(nèi)容總結(jié)整理
始終把注意力,花在值得積累的事情上。
開(kāi)頭扯幾句
1、不好意思, 因?yàn)橐恍┦虑楹蛡€(gè)人原因告別了一段時(shí)間,沒(méi)有更新公眾號(hào)內(nèi)容。感謝還一直默默關(guān)注的你,后續(xù)會(huì)努力更新,這里是我自己的一個(gè)小天地,可能沒(méi)有特別高大上和牛逼的東西,但是會(huì)分享我覺(jué)得對(duì)我有幫助的內(nèi)容,或者是我整理的一些資料,希望大家能夠在這里有所收獲。
2、如果要學(xué)習(xí)技術(shù),個(gè)人建議不要花費(fèi)太多時(shí)間去看公眾號(hào),公眾號(hào)內(nèi)容碎片化的閱讀對(duì)成長(zhǎng)是微乎其微的。公眾號(hào)可以作為一個(gè)工具,碎片化時(shí)間瀏覽下,獲取一些資料或者感興趣的技術(shù)。3、再次感謝一直默默陪伴、關(guān)注我的人,謝謝
本文來(lái)自工作的一個(gè)知識(shí)資料整理,收集網(wǎng)上的一些資料(我覺(jué)得還不錯(cuò)的內(nèi)容),如果你對(duì)XSS還不了解或者了解但不知道原理的話,建議閱讀一下,最好把參考的資料也閱讀一下,因?yàn)楣娞?hào)內(nèi)不能打開(kāi)鏈接,可以點(diǎn)擊 閱讀原文 查看。
XSS(跨站腳本攻擊)內(nèi)容總結(jié)整理
跨站腳本攻擊(XSS)
XSS 簡(jiǎn)介
人們經(jīng)常將跨站腳本攻擊(Cross Site Scripting)縮寫(xiě)為CSS,但這會(huì)與層疊樣式表(Cascading Style Sheets,CSS)的縮寫(xiě)混淆。因此,有人將跨站腳本攻擊縮寫(xiě)為XSS。跨站腳本攻擊(XSS),是最普遍的Web應(yīng)用安全漏洞。這類漏洞能夠使得攻擊者嵌入惡意腳本代碼到正常用戶會(huì)訪問(wèn)到的頁(yè)面中,當(dāng)正常用戶訪問(wèn)該頁(yè)面時(shí),則可導(dǎo)致嵌入的惡意腳本代碼的執(zhí)行,從而達(dá)到惡意攻擊用戶的目的。攻擊者可以使用戶在瀏覽器中執(zhí)行其預(yù)定義的惡意腳本,其導(dǎo)致的危害可想而知,如劫持用戶會(huì)話,插入惡意內(nèi)容、重定向用戶、使用惡意軟件劫持用戶瀏覽器、繁殖XSS蠕蟲(chóng),甚至破壞網(wǎng)站、修改路由器配置信息等。
XSS 危害
1.網(wǎng)絡(luò)釣魚(yú),包括盜取各類用戶賬號(hào);2.竊取用戶cookies資料,從而獲取用戶隱私信息,或利用用戶身份進(jìn)一步對(duì)網(wǎng)站執(zhí)行操作;3.劫持用戶(瀏覽器)會(huì)話,從而執(zhí)行任意操作,例如進(jìn)行非法轉(zhuǎn)賬、強(qiáng)制發(fā)表日志、發(fā)送電子郵件等;4.強(qiáng)制彈出廣告頁(yè)面、刷流量等;5.網(wǎng)頁(yè)掛馬;6.進(jìn)行惡意操作,例如任意篡改頁(yè)面信息、刪除文章等;7.進(jìn)行大量的客戶端攻擊,如DDoS攻擊;8.結(jié)合其他漏洞,如CSRF漏洞,實(shí)施進(jìn)一步作惡;9.傳播跨站腳本蠕蟲(chóng)等。
盜取各類用戶帳號(hào)權(quán)限(控制所盜竊權(quán)限數(shù)據(jù)內(nèi)容),如機(jī)器登錄帳號(hào)、用戶網(wǎng)銀帳號(hào)、各類管理員帳號(hào) 控制企業(yè)數(shù)據(jù),包括讀取、篡改、添加、刪除企業(yè)敏感數(shù)據(jù)的能力 基于XSS的跨站業(yè)務(wù)請(qǐng)求(如:非法轉(zhuǎn)賬、非法下單、非法轉(zhuǎn)載/發(fā)表內(nèi)容、發(fā)送電子郵件、利用管理員身份提權(quán)掛馬、控制受害者機(jī)器向其它網(wǎng)站發(fā)起攻擊等) 形成持久化APT攻擊,長(zhǎng)期控制網(wǎng)站業(yè)務(wù)中樞 利用跨站業(yè)務(wù)形成蠕蟲(chóng)病毒式傳播 劫持網(wǎng)站,劫持后可用于釣魚(yú)、偽裝、跳轉(zhuǎn)、掛廣告等,屬掛馬類型
XSS跨站腳本,是一種Web安全漏洞,有趣是是他并不像SQL注入等攻擊手段攻擊服務(wù)端,本身對(duì)Web服務(wù)器沒(méi)有危害,攻擊的對(duì)象是客戶端,使用瀏覽器訪問(wèn)這些惡意地址的網(wǎng)民。
XSS 原理
HTML是一種超文本標(biāo)記語(yǔ)言,通過(guò)將一些字符特殊地對(duì)待來(lái)區(qū)別文本和標(biāo)記,例如,小于符號(hào)(<)被看作是HTML標(biāo)簽的開(kāi)始,之間的字符是頁(yè)面的標(biāo)題等等。當(dāng)動(dòng)態(tài)頁(yè)面中插入的內(nèi)容含有這些特殊字符(如<)時(shí),用戶瀏覽器會(huì)將其誤認(rèn)為是插入了HTML標(biāo)簽,當(dāng)這些HTML標(biāo)簽引入了一段JavaScript腳本時(shí),這些腳本程序就將會(huì)在用戶瀏覽器中執(zhí)行。所以,當(dāng)這些特殊字符不能被動(dòng)態(tài)頁(yè)面檢查或檢查出現(xiàn)失誤時(shí),就將會(huì)產(chǎn)生XSS漏洞。
主要的攻擊是在HTML中加入了JavaScript腳本,這個(gè)腳本可能會(huì)寫(xiě)一些發(fā)起攻擊的代碼。
標(biāo)簽中,或者標(biāo)簽的屬性中都可以加入腳本。詳情看下面《XSS的原理分析與解剖》博文說(shuō)明。**XSS攻擊:**xss就是在頁(yè)面執(zhí)行你想要的js,只要能允許JS,就能獲取cookie(設(shè)置http-only除外),就能發(fā)起一些事件操作等。
《XSS的原理分析與解剖》:https://www.freebuf.com/articles/web/40520.html
注:評(píng)論內(nèi)容摘要
1、chrome內(nèi)核與ie內(nèi)核不一樣,chrome的過(guò)濾機(jī)制比ie強(qiáng)。現(xiàn)在測(cè)試xss一般都拿能過(guò)chrome的為主2、現(xiàn)在的chrome瀏覽器默認(rèn)開(kāi)啟了xss過(guò)濾機(jī)制,可以通過(guò)關(guān)閉該機(jī)制來(lái)進(jìn)行xss測(cè)試,方法如下:windows下,右鍵桌面中的"Google Chrome"快捷鍵,然后在目標(biāo)選項(xiàng),chrome.exe后面加上參數(shù):--args --disable-xss-auditor即可。
XSS 的本質(zhì)是:惡意代碼未經(jīng)過(guò)濾,與網(wǎng)站正常的代碼混在一起;瀏覽器無(wú)法分辨哪些腳本是可信的,導(dǎo)致惡意腳本被執(zhí)行。
注入方式:不僅僅是業(yè)務(wù)上的“用戶的 UGC 內(nèi)容”可以進(jìn)行注入,包括 URL 上的參數(shù)等都可以是攻擊的來(lái)源。在處理輸入時(shí),以下內(nèi)容都不可信:
來(lái)自用戶的 UGC 信息 來(lái)自第三方的鏈接 URL 參數(shù) POST 參數(shù) Referer (可能來(lái)自不可信的來(lái)源) Cookie (可能來(lái)自其他子域注入)
XSS 分類
根據(jù)攻擊的來(lái)源,XSS 攻擊可分為存儲(chǔ)型、反射型和 DOM 型三種。
| 類型 | 存儲(chǔ)區(qū) | 插入點(diǎn) |
|---|---|---|
| 存儲(chǔ)型XSS | 后端數(shù)據(jù)庫(kù) | HTML |
| 反射型 XSS | URL | HTML |
| DOM 型 XSS | 后端數(shù)據(jù)庫(kù)/前端存儲(chǔ)/URL | 前端 JavaScript |
-
存儲(chǔ)區(qū):惡意代碼存放的位置。 -
插入點(diǎn):由誰(shuí)取得惡意代碼,并插入到網(wǎng)頁(yè)上。
具體參看:前端安全系列(一)
反射XSS是XSS分類中最多的,他們?cè)硎窍旅孢@樣:Hacker——發(fā)現(xiàn)存在反射XSS的URL——根據(jù)輸出點(diǎn)的環(huán)境構(gòu)造XSS代碼——進(jìn)行編碼、縮短(可有可無(wú),是為了增加迷惑性)——發(fā)送給受害人——受害打開(kāi)后,執(zhí)行XSS代碼——完成hacker想要的功能(獲取cookies、url、瀏覽器信息、IP等等)
存儲(chǔ)型XSS不像反射型XSS,需要訪問(wèn)特定的URL或者用戶去手動(dòng)點(diǎn)擊觸發(fā),如果存在存儲(chǔ)型的惡意劫持代碼,那么可能發(fā)生的是全范圍的掃射攻擊,受攻擊的用戶多。
如 留言板 存在惡意劫持代碼,那后面所有訪問(wèn)此留言板頁(yè)面的用戶都會(huì)中槍。
基于QtWebKit的DOM XSS檢測(cè)技術(shù),地址:https://security.tencent.com/index.php/blog/msg/12
XSS 防御總結(jié)
XSS 攻擊有兩大要素:
-
攻擊者提交惡意代碼。
后臺(tái)處理,轉(zhuǎn)義可能存在的掉html標(biāo)簽。但是在轉(zhuǎn)義的時(shí)候可能出現(xiàn) 將 大于> 、小于 < 轉(zhuǎn)義,可能出現(xiàn)錯(cuò)誤的轉(zhuǎn)義。要根據(jù)實(shí)際的業(yè)務(wù)做相應(yīng)的調(diào)整。如需要保存:2>7 ,則會(huì)轉(zhuǎn)義為:2>7
-
瀏覽器執(zhí)行惡意代碼。
前端處理,有一些前端框架已經(jīng)默認(rèn)做xss相應(yīng)的處理。
后端和前端一起協(xié)作,終可防御xss攻擊。
截圖內(nèi)容來(lái)源:前端安全系列(一)
XSS 問(wèn)答
來(lái)源:https://gitbook.cn/books/5a26a88d5d69d22a8f0adc5f/index.html
問(wèn):xss攻擊在GET和POST請(qǐng)求中有什么實(shí)際不同?**答:**這個(gè)區(qū)別不大,請(qǐng)求提交方式不一樣。post操作不可能繞開(kāi)javascript的使用,只是難度不一樣。
問(wèn):xss竊取的cookie怎么防止被利用?**答:**竊取的cookie防止利用可以增加一個(gè)時(shí)效性或者綁定用戶。
問(wèn):xss和csrf區(qū)別是什么?答: csrf是偽裝信任用戶進(jìn)行操作,登陸會(huì)話狀態(tài)都是正常的,xss不同。csrf成功的前提用戶必須登錄到目標(biāo)站點(diǎn),且用戶瀏覽了攻擊者控制的站點(diǎn)。與xss最為不同一點(diǎn)是csrf可以不用js就能達(dá)到目的,完全是正常用戶操作。csrf修復(fù)方法:cookie認(rèn)證,非持久性cookie請(qǐng)求加入隨機(jī)數(shù),增加風(fēng)險(xiǎn)操作二次認(rèn)證。
問(wèn):預(yù)防xss攻擊有什么迅速的有效手段嗎?
答: HttpOnly防止劫取cookie,另外還有owasp中也有防xss的API庫(kù)。在前端對(duì)數(shù)據(jù)過(guò)濾一次,在后端也過(guò)濾一次,確保萬(wàn)無(wú)一失,沒(méi)毛病。
問(wèn):xss過(guò)濾字符問(wèn)題怎么辦?
**答:**尖括號(hào),反斜杠等特殊字符一定要注意好,可以使用ESAPI提供的函數(shù)進(jìn)行編碼,具體參考一下GitChat文章標(biāo)題內(nèi)容的特殊字符轉(zhuǎn)義,除了阿拉伯?dāng)?shù)字和字母,對(duì)其他所有的字符進(jìn)行編碼,只要該字符的ASCII碼小于256。編碼后輸出的格式為 a,以&#x開(kāi)頭,aa則是指該字符對(duì)應(yīng)的十六進(jìn)制數(shù)字,分號(hào)作為結(jié)束。
問(wèn):xss有書(shū)籍推薦嗎?
答: xss有一本專業(yè)的,書(shū)名是《xss跨站腳本攻擊剖析與防御》紅色封皮,logo是羅馬頭盔。專門(mén)講xss這一部分的,可以觀摩學(xué)習(xí)一下。
問(wèn):剛學(xué)習(xí)了解OWASP,你有什么好方法去學(xué)習(xí)和實(shí)踐其中的方法,如top 10?若要進(jìn)入白帽子領(lǐng)域,OWASP是否是個(gè)很好的切入點(diǎn)?有其它好的途徑和方法嗎?
**答:**用靶機(jī)練吧,搭建個(gè)本地iis,模擬防火墻進(jìn)行滲透測(cè)試。網(wǎng)上的網(wǎng)站不建議練手,涉及諸多法律問(wèn)題,靶機(jī)玩壞了重搭建就是。我學(xué)的時(shí)候沒(méi)有關(guān)注過(guò)owasp,有什么洞整什么,把知識(shí)體系補(bǔ)完就成,一個(gè)字還是剛。
問(wèn):xss拿到的cookie該怎么利用?
答: cookie就是憑證,最簡(jiǎn)單的利用就是替換登陸請(qǐng)求的cookie就算利用了。
