web攻防之XSS攻擊詳解——XSS簡介與類型

在Web安全的領(lǐng)域中,XSS攻擊是最常見的一種攻擊方式万栅。小編整理出了XSS的基礎(chǔ)知識佑钾,包括了XSS的簡介、原理與類型來幫助大家梳理出XSS的基礎(chǔ)知識點(diǎn)烦粒,快來看看吧休溶。


一代赁、XSS攻擊簡介

XSS全稱是Cross Site Scripting即跨站腳本,當(dāng)目標(biāo)網(wǎng)站目標(biāo)用戶瀏覽器渲染HTML文檔的過程中兽掰,出現(xiàn)了不被預(yù)期的腳本指令并執(zhí)行時(shí)芭碍,XSS就發(fā)生了。

作為一種HTML注入攻擊孽尽,XSS攻擊的核心思想就是在HTML頁面中注入惡意代碼窖壕,而XSS采用的注入方式是非常巧妙的。在XSS攻擊中杉女,一般有三個(gè)角色參與:攻擊者艇拍、目標(biāo)服務(wù)器、受害者的瀏覽器宠纯。

由于有的服務(wù)器并沒有對用戶的輸入進(jìn)行安全方面的驗(yàn)證,攻擊者就可以很容易地通過正常的輸入手段层释,夾帶進(jìn)一些惡意的HTML腳本代碼婆瓜。當(dāng)受害者的瀏覽器訪 問目標(biāo)服務(wù)器上被注入惡意腳本的頁面后,由于它對目標(biāo)服務(wù)器的信任贡羔,這段惡意腳本的執(zhí)行不會(huì)受到什么阻礙廉白。而此時(shí),攻擊者的目的就已經(jīng)達(dá)到了乖寒。

下面我們以一段簡單的JavaScript腳本為例猴蹂,來描述整個(gè)XSS攻擊的過程:


?????????<script>alert(document.cookie);</script>


上面這段腳本的執(zhí)行具體內(nèi)容就是彈出一個(gè)對話框顯示用戶的Cookie信息。攻擊者在向目標(biāo)服務(wù)器的某個(gè)頁面進(jìn)行數(shù)據(jù)輸入的過程中楣嘁,通過正常的輸入方式夾帶進(jìn)這段腳本磅轻。假如一切正常的時(shí)候,生成的頁面代碼如下形式:


?????????<html>


?????????…


text ??????????//正常輸入的數(shù)據(jù)


?????????…


?????????</html>


如果用戶的輸入為textalert(document.cookie);逐虚,而目標(biāo)服務(wù)器又沒有對這個(gè)輸入進(jìn)行檢驗(yàn)的話聋溜,則會(huì)生成如下形式的頁面代碼:


?????????<html>


?????????…


?????????text


?????????<script>alert(document.cookie);</script>


?????????…


?????????</html>


可以看到,這段腳本已經(jīng)成功嵌入到該頁面當(dāng)中叭爱。當(dāng)受害瀏覽器訪問這個(gè)頁面的時(shí)候撮躁,這段腳本也將被認(rèn)為是頁面的一部分,從而得到執(zhí)行买雾,即彈出對話框顯示受害瀏覽器的Cookie信息把曼。



二、XSS原理

XSS的原理是惡意攻擊者往 Web 頁面里插入惡意可執(zhí)行網(wǎng)頁腳本代碼漓穿,當(dāng)用戶瀏覽該頁之時(shí)嗤军,嵌入其中 Web 里面的腳本代碼會(huì)被執(zhí)行,從而可以達(dá)到攻擊者盜取用戶信息或其他侵犯用戶安全隱私的目的器净。


型雳、XSS攻擊類型

根據(jù)XSS腳本注入方式的不同,我們可以將XSS攻擊簡單的分類為反射型XSS、存儲(chǔ)型XSS纠俭、DOM-based 型沿量、基于字符集的XSS、基于 Flash 的跨站 XSS冤荆、未經(jīng)驗(yàn)證的跳轉(zhuǎn) XSS6種類型朴则。


1反射型XSS非持久型XSS

又稱非持久型XSS钓简。之所以稱為反射型XSS乌妒,是因?yàn)檫@種攻擊方式的注入代碼是從目標(biāo)服務(wù)器通過錯(cuò)誤信息、搜索結(jié)果等等方式“反射”回來的:發(fā)出請求時(shí)外邓,XSS代碼出現(xiàn)在URL中撤蚊,作為輸入提交到服務(wù)器端,服務(wù)器端解析后響應(yīng)损话,XSS代碼隨響應(yīng)內(nèi)容一起傳回給瀏覽器侦啸,最后瀏覽器解析執(zhí)行XSS代碼。這個(gè)過程像一次反射丧枪,故叫反射型XSS光涂。??而稱為非持久型XSS,則是因?yàn)檫@種攻擊方式具有一次性拧烦,由于代碼注入的是一個(gè)動(dòng)態(tài)產(chǎn)生的頁面而不是永久的頁面忘闻,因此這種攻擊方式只在點(diǎn)擊鏈接的時(shí)候才產(chǎn)生作用。

攻擊者通過電子郵件等方式給別人發(fā)送帶有惡意腳本代碼參數(shù)的URL恋博,當(dāng) URL 地址被打開時(shí)齐佳,注入腳本被傳輸?shù)侥繕?biāo)服務(wù)器上,然后服務(wù)器將注入腳本“反射”到受害者的瀏覽器上债沮,特有的惡意代碼參數(shù)被 HTML 解析重虑、執(zhí)行。


非持久型XSS漏洞攻擊的四大特點(diǎn):①即時(shí)性秦士。不經(jīng)過服務(wù)器存儲(chǔ)缺厉,直接通過 HTTP 的 GET 和 POST 請求就能完成一次攻擊,拿到用戶隱私數(shù)據(jù)隧土;②攻擊者需要誘騙點(diǎn)擊提针;③反饋率低,所以較難發(fā)現(xiàn)和響應(yīng)修復(fù)曹傀;④盜取用戶敏感保密信息辐脖。

防止出現(xiàn)非持久型XSS漏洞的五大措施:①Web頁面渲染的所有內(nèi)容或者渲染的數(shù)據(jù)都必須來自于服務(wù)端;②盡量不要從URL皆愉,document.referrer嗜价,document.forms 等這種 DOM API 中獲取數(shù)據(jù)直接渲染艇抠;③盡量不要使用eval, new Function(),document.write()久锥,document.writeln()家淤,window.setInterval(),window.setTimeout()瑟由,innerHTML絮重,document.creteElement() 等可執(zhí)行字符串的方法;④如果做不到以上幾點(diǎn)歹苦,也必須對涉及DOM渲染的方法傳入的字符串參數(shù)做 escape 轉(zhuǎn)義青伤;⑤前端渲染的時(shí)候?qū)θ魏蔚淖侄味夹枰鰁scape轉(zhuǎn)義編碼。



2殴瘦、存儲(chǔ)型XSS(持久型XSS)

存儲(chǔ)型XSS狠角,又稱持久型XSS,他和反射型XSS最大的不同就是蚪腋,攻擊腳本將被永久地存放在目標(biāo)服務(wù)器端(數(shù)據(jù)庫擎厢,內(nèi)存,文件系統(tǒng)等)辣吃,下次請求目標(biāo)頁面時(shí)不用再提交XSS代碼。

一般存在于Form表單提交等交互功能芬探,如發(fā)帖留言神得,提交文本信息等,黑客利用的 XSS 漏洞偷仿,將內(nèi)容經(jīng)正常功能提交進(jìn)入數(shù)據(jù)庫持久保存哩簿,當(dāng)前端頁面獲得后端從數(shù)據(jù)庫中讀出的注入代碼時(shí),恰好將其渲染執(zhí)行酝静。

這種攻擊多見于論壇节榜,攻擊者在發(fā)帖的過程中,將惡意腳本連同正常信息一起注入到帖子的內(nèi)容之中别智。隨著帖子被論壇服務(wù)器存儲(chǔ)下來宗苍,惡意腳本也永久地被存放在論壇服務(wù)器的后端存儲(chǔ)器中。當(dāng)其它用戶瀏覽這個(gè)被注入了惡意腳本的帖子的時(shí)候薄榛,惡意腳本則會(huì)在他們的瀏覽器中得到執(zhí)行讳窟,從而受到了攻擊。

可以看到敞恋,存儲(chǔ)型XSS的攻擊方式能夠?qū)阂獯a永久地嵌入一個(gè)頁面當(dāng)中丽啡,所有訪問這個(gè)頁面的用戶都將成為受害者。如果我們能夠謹(jǐn)慎對待不明鏈接硬猫,那么反射型的XSS攻擊將沒有多大作為补箍,而存儲(chǔ)型XSS則不同改执,由于它注入的往往是一些我們所信任的頁面,因此無論我們多么小心坑雅,都難免會(huì)受到攻擊辈挂。可以說霞丧,存儲(chǔ)型XSS更具有隱蔽性呢岗,帶來的危害也更大,除非服務(wù)器能完全阻止注入蛹尝,否則任何人都很有可能受到攻擊后豫。

持久型XSS的三大特點(diǎn):①持久性,植入在數(shù)據(jù)庫中突那;②危害面廣挫酿,甚至可以讓用戶機(jī)器變成DDoS攻擊的肉雞;③盜取用戶敏感私密信息愕难。

防止持久型XSS漏洞的三大措施:?①后端在入庫前應(yīng)該選擇不相信任何前端數(shù)據(jù)早龟,將所有的字段統(tǒng)一進(jìn)行轉(zhuǎn)義處理;②后端在輸出給前端數(shù)據(jù)統(tǒng)一進(jìn)行轉(zhuǎn)義處理猫缭;③前端在渲染頁面DOM的時(shí)候應(yīng)該選擇不相信任何后端數(shù)據(jù)葱弟,任何字段都需要做轉(zhuǎn)義處理。


3猜丹、DOM-based型

客戶端的腳本程序可以動(dòng)態(tài)地檢查和修改頁面內(nèi)容芝加,而不依賴于服務(wù)器端的數(shù)據(jù)。例如客戶端如從URL中提取數(shù)據(jù)并在本地執(zhí)行射窒,如果用戶在客戶端輸入的數(shù)據(jù)包含了惡意的 JavaScript 腳本藏杖,而這些腳本沒有經(jīng)過適當(dāng)?shù)倪^濾和消毒,那么應(yīng)用程序就可能受到 DOM-based XSS 攻擊脉顿。需要特別注意以下的用戶輸入源 document.URL蝌麸、 location.hash、 location.search艾疟、 document.referrer 等来吩。


4、基于字符集的XSS

???????哪怕現(xiàn)在很多的瀏覽器以及各種開源的庫都專門針對了XSS進(jìn)行轉(zhuǎn)義處理蔽莱,盡量默認(rèn)抵御絕大多數(shù) XSS 攻擊误褪,但是還是有很多方式可以繞過轉(zhuǎn)義規(guī)則,讓人防不勝防碾褂。比如「基于字符集的 XSS 攻擊」就是繞過這些轉(zhuǎn)義處理的一種攻擊方式兽间,比如有些 Web 頁面字符集不固定,用戶輸入非期望字符集的字符正塌,有時(shí)會(huì)繞過轉(zhuǎn)義過濾規(guī)則嘀略。

可以形成「基于字符集的XSS攻擊」的原因是由于瀏覽器在 meta 沒有指定 charset 的時(shí)候有自動(dòng)識別編碼的機(jī)制恤溶,所以這類攻擊通常就是發(fā)生在沒有指定或者沒來得及指定 meta 標(biāo)簽的 charset 的情況下。

避免基于字符集的XSS攻擊的兩大方法:①記住指定帜羊;②XML中不僅要指定字符集為 utf-8咒程,而且標(biāo)簽要閉合。


5讼育、基于 Flash 的跨站 XSS

基于Flash的跨站 XSS 也是屬于反射型 XSS 的一種帐姻,AS 腳本可以接受用戶輸入并操作 cookie,攻擊者可以配合其他 XSS(持久型或者非持久型)方法將惡意 swf 文件嵌入頁面中奶段。主要是因?yàn)?AS 有時(shí)候需要和 JS 傳參交互饥瓷,攻擊者會(huì)通過惡意的 XSS 注入篡改參數(shù),竊取并操作cookie痹籍。

基于Flash的跨站 XSS 的兩種避免方法①嚴(yán)格管理cookie的讀寫權(quán)限呢铆;②對Flash能接受用戶輸入的參數(shù)進(jìn)行過濾 escape 轉(zhuǎn)義處理。



6蹲缠、未經(jīng)驗(yàn)證的跳轉(zhuǎn)XSS

有一些場景是后端需要對一個(gè)傳進(jìn)來的待跳轉(zhuǎn)的URL參數(shù)進(jìn)行一個(gè) 302 跳轉(zhuǎn)棺克,可能其中會(huì)帶有一些用戶的敏感(cookie)信息。如果服務(wù)器端做302 跳轉(zhuǎn)线定,跳轉(zhuǎn)的地址來自用戶的輸入娜谊,攻擊者可以輸入一個(gè)惡意的跳轉(zhuǎn)地址來執(zhí)行腳本。

防止未經(jīng)驗(yàn)證的跳轉(zhuǎn)XSS漏洞的兩種措施:①對待跳轉(zhuǎn)的URL參數(shù)做白名單或者某種規(guī)則過濾斤讥;②后端注意對敏感信息的保護(hù),比如 cookie 使用來源驗(yàn)證纱皆。



以上就是小編整理出來的XSS基礎(chǔ)知識的全部內(nèi)容啦,相信大家看完以后對XSS攻擊也有了一定的了解周偎。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市撑帖,隨后出現(xiàn)的幾起案子蓉坎,更是在濱河造成了極大的恐慌,老刑警劉巖胡嘿,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蛉艾,死亡現(xiàn)場離奇詭異,居然都是意外死亡衷敌,警方通過查閱死者的電腦和手機(jī)勿侯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來缴罗,“玉大人助琐,你說我怎么就攤上這事∶婷ィ” “怎么了兵钮?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵蛆橡,是天一觀的道長。 經(jīng)常有香客問我掘譬,道長泰演,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任葱轩,我火速辦了婚禮睦焕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘靴拱。我一直安慰自己垃喊,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布缭嫡。 她就那樣靜靜地躺著缔御,像睡著了一般。 火紅的嫁衣襯著肌膚如雪妇蛀。 梳的紋絲不亂的頭發(fā)上耕突,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天,我揣著相機(jī)與錄音评架,去河邊找鬼眷茁。 笑死,一個(gè)胖子當(dāng)著我的面吹牛纵诞,可吹牛的內(nèi)容都是我干的上祈。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼浙芙,長吁一口氣:“原來是場噩夢啊……” “哼登刺!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起嗡呼,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤纸俭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后南窗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體揍很,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年万伤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了窒悔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,617評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡敌买,死狀恐怖简珠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情虹钮,我是刑警寧澤北救,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布荐操,位于F島的核電站,受9級特大地震影響珍策,放射性物質(zhì)發(fā)生泄漏托启。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一攘宙、第九天 我趴在偏房一處隱蔽的房頂上張望屯耸。 院中可真熱鬧,春花似錦蹭劈、人聲如沸疗绣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽多矮。三九已至,卻和暖如春哈打,著一層夾襖步出監(jiān)牢的瞬間塔逃,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工料仗, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留湾盗,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓立轧,卻偏偏與公主長得像格粪,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子氛改,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容