◆金濤 霍旭磊 王亞麗
XSS的攻擊利用與防護(hù)策略研究
◆金濤 霍旭磊 王亞麗
(甘肅政法大學(xué)公安技術(shù)學(xué)院 甘肅 730070)
XSS是一種常見的針對Web應(yīng)用攻擊的安全漏洞,造成漏洞的主要原因是服務(wù)器端對攻擊者輸入的惡意語句沒有進(jìn)行過濾或轉(zhuǎn)義,導(dǎo)致惡意語句被執(zhí)行,造成客戶端被攻擊的危害。本文介紹了XSS的分類和利用實(shí)例,提出了檢測方法和防護(hù)策略。
XSS漏洞;DVWA;漏洞利用;漏洞防護(hù)
隨著第八屆中國網(wǎng)絡(luò)安全大會的成功舉辦,網(wǎng)絡(luò)安全的話題越來越被全民關(guān)注。網(wǎng)絡(luò)系統(tǒng)漏洞中,Web應(yīng)用最易受到惡意攻擊,影響也最為廣泛。其中的XSS(Cross Site Scripting,跨站點(diǎn)腳本)漏洞連續(xù)數(shù)次出現(xiàn)在OWASP TOP 10(OWASP十大應(yīng)用安全風(fēng)險(xiǎn))榜單當(dāng)中。
XSS是指攻擊者在網(wǎng)站正常輸入界面中插入惡意腳本對用戶和系統(tǒng)造成危害的Web安全漏洞?!翱缯竟簟敝覆恢苯庸鬢eb服務(wù)器,而以其為跳板攻擊客戶端。主要分為反射型XSS、存儲型XSS、基于DOM的XSS三種類型。
此次實(shí)驗(yàn)平臺是DVWA靶場(Damn Vulnerable Web Application)[1],它包含了暴力破解、命令行注入、文件上傳等多種常見且危害巨大的web安全漏洞。支持調(diào)整靶場源碼的安全級別,分別為 Low,Medium,High,Impossible。級別越高,安全防護(hù)越嚴(yán)格,滲透難度越大。
1.2.1漏洞分析
攻擊者提交惡意腳本給服務(wù)器時(shí),服務(wù)器沒有對其進(jìn)行過濾或過濾的不充分,將腳本內(nèi)容作為url的參數(shù)完整的返回給瀏覽器,當(dāng)用戶點(diǎn)擊鏈接,惡意腳本會完全回顯,受到含有特殊目的攻擊[2]。
1.2.2漏洞驗(yàn)證
選擇DVWA的 XSS(Reflected)漏洞模塊進(jìn)行漏洞驗(yàn)證并利用。
(1)插入漏洞檢測腳本:,如圖1所示:
圖1 插入檢測腳本
(2)彈窗顯示Reflected1,判斷其可能存在XSS反射型漏洞,如圖2所示:
圖2 彈出指定內(nèi)容
(3)為了進(jìn)一步驗(yàn)證存在XSS反射型漏洞,可以使用Burp Suite來查看HTTP響應(yīng)內(nèi)容中是否完全回顯了所插入的檢測腳本。結(jié)果發(fā)現(xiàn),檢測腳本被完全回顯,如圖3所示:
圖3 腳本完全回顯
1.2.3漏洞利用
(1)插入惡意獲取cookie的語句,此處IP地址為攻擊者所控制的機(jī)器IP,通過受害者點(diǎn)擊含有惡意語句的鏈接來監(jiān)聽訪問請求信息,并盜取cookie信息。
(2)當(dāng)受害者點(diǎn)擊惡意鏈接時(shí),攻擊機(jī)使用netcat工具監(jiān)聽,成功獲取到用戶cookie信息,如圖4所示:
圖4 盜取cookie信息
(3)替換cookie信息從而冒名登錄,可見攻擊者成功登錄,這也說明漏洞利用成功,如圖5所示:
圖5 冒名登錄
1.3.1漏洞分析
當(dāng)用戶提交信息給服務(wù)器時(shí),服務(wù)器對提交的內(nèi)容沒有過濾或過濾的不充分,數(shù)據(jù)會被服務(wù)器存儲,一般會直接顯示。若當(dāng)服務(wù)器存儲了攻擊者插入的惡意代碼時(shí),每當(dāng)有用戶點(diǎn)擊漏洞位置時(shí),惡意代碼就會被執(zhí)行[3]。如果管理員沒能及時(shí)清除惡意代碼并修復(fù)漏洞,它就會被長期保存在服務(wù)器中,而且很可能被其他攻擊者再次利用,造成持久性的漏洞危害。這也是存儲型XSS漏洞比反射型XSS漏洞危害更大的原因之一。
1.3.2漏洞驗(yàn)證
選擇DVWA的 XSS(Stored)漏洞模塊進(jìn)行漏洞驗(yàn)證并利用。
(1)插入檢測腳本:,若腳本的長度被限制,一般可通過網(wǎng)頁前端檢測元素功能對 max屬性進(jìn)行修改,以便完整輸入檢測腳本,如圖6所示:
圖6 插入檢測語句
(2)插入檢測語句后,當(dāng)再瀏覽此模塊時(shí),會彈出檢測語句,如圖7所示:
圖7 彈出指定信息
(3)可以看到name為check的檢測語句已經(jīng)被存儲到了數(shù)據(jù)庫中,并顯示了出來,如果網(wǎng)站管理員沒能及時(shí)清除它,每當(dāng)用戶瀏覽到這個(gè)模塊的時(shí)候,都會受到攻擊,如圖8所示:
圖8 惡意腳本被存儲
1.3.3漏洞利用
插入上文中惡意獲取用戶cookie信息的語句,同樣能獲取到用戶cookie信息,通過替換cookie的方式冒名登錄其他賬戶[4]。而與反射型XSS不同的是,存儲型XSS漏洞被插入的惡意語句存儲時(shí)間長,受害用戶多,危害程度更大。
1.4.1漏洞分析
DOM是一個(gè)與網(wǎng)站系統(tǒng)、編譯語言不相關(guān)的接口,通過它,用戶可以隨時(shí)更新文檔內(nèi)容、結(jié)構(gòu)和樣式,動態(tài)地檢查和修改頁面內(nèi)容。此漏洞不需要提交數(shù)據(jù)到服務(wù)器端來進(jìn)行攻擊,而是從客戶端獲得其中的數(shù)據(jù)后在本地執(zhí)行,一旦其中的算法沒有經(jīng)過嚴(yán)格防護(hù),就可能被攻擊成功。
1.4.2漏洞驗(yàn)證
選擇DVWA的 XSS(DOM)漏洞模塊進(jìn)行驗(yàn)證并利用。
(1)頁面的本意是選擇默認(rèn)語言,如圖9所示:
圖9 語言選擇界面
(2)插入檢測腳本:,構(gòu)造URL:IP/dvwa/vulnerabilities/xss_d/?default=English%20 &&,可以發(fā)現(xiàn)會彈出DOM字符,說明漏洞存在,如圖10所示:
圖10 彈出指定信息
1.4.3漏洞利用
插入盜取用戶cookie信息的腳本:,可以看到瀏覽器彈出了客戶端的cookie信息,者說明基于DOM型的XSS漏洞被利用成功,如圖11所示:
圖11 彈出cookie信息
獲取cookie信息成功后,通過替換cookie信息的方式同樣實(shí)現(xiàn)了冒名登錄其他賬戶,說明基于DOM的XSS漏洞利用成功。
除了利用以上手工檢測方法外,還可以通過源碼審計(jì)及時(shí)發(fā)現(xiàn)漏洞代碼,或是利用自動化檢測工具進(jìn)行漏洞探測[5],這里著重介紹綜合漏洞掃描工具Nessus和專門檢測XSS漏洞的XSSer。
Nessus是一款非常優(yōu)秀的綜合漏洞掃描工具,不僅支持包括XSS在內(nèi)的多種漏洞掃描功能,還可實(shí)時(shí)對其漏洞數(shù)據(jù)庫進(jìn)行更新??蛻舳撕瓦h(yuǎn)程端可同時(shí)操作,多終端實(shí)時(shí)對系統(tǒng)漏洞掃描和分析。Nessus是綜合漏洞掃描器,但如果只需要針對XSS漏洞進(jìn)行檢測時(shí),可以使用XSSer。
XSSer(Cross site “scripter”)是專門檢測XSS漏洞的安全工具,獨(dú)有的代碼注入技術(shù),可繞過部分防護(hù)策略來自動化檢測XSS漏洞,誤報(bào)率相對較低,更準(zhǔn)確。同時(shí)它還可以對xss漏洞進(jìn)行利用,這為安全工作者帶來了極大的便利,在專門針對XSS漏洞進(jìn)行檢測驗(yàn)證時(shí),一直都是被首選的安全工具。
一般的瀏覽器都內(nèi)置了防范XSS的方法,例如CSP(Content Security Policy,內(nèi)容安全策略)可防范簡單XSS攻擊[6]。但對于完全防范來說,還需要更高級的方案。
所有輸入的內(nèi)容進(jìn)行嚴(yán)格檢查,對語句中"/""script""<"">"等特殊字符進(jìn)行過濾、編碼或轉(zhuǎn)義。一般前端框架中都有DecodeingMap程序,它可用于過濾或轉(zhuǎn)義用戶所輸入的特殊字符和HTML標(biāo)簽。例如vuejs中的DecodingMap程序,可以用來過濾用戶輸入信息中script標(biāo)簽里的內(nèi)容。簡單的DecodeingMap程序如圖12所示:
圖12 簡單過濾代碼
HttpOnly是最常見的防止cookie被劫持的方法之一,當(dāng)cookie中設(shè)置了這個(gè)屬性時(shí),通過動態(tài)腳本則無法獲取其內(nèi)容。
當(dāng)對用戶的輸入內(nèi)容進(jìn)行檢查后,服務(wù)器的輸出內(nèi)容也不能忽視。除RFT(Rich Text Format,富文本格式)的輸出外,其他需要對變量進(jìn)行編碼或轉(zhuǎn)義后再輸出到HTML頁面。利用sanitize-html模塊來處理就是很好的方式。
XSS漏洞作為Web應(yīng)用的經(jīng)典漏洞類型,已經(jīng)存在多年。直到現(xiàn)在,跨站腳本攻擊仍是許多站點(diǎn)前端安全的最大威脅。本文對不同類型的XSS漏洞進(jìn)行了分析和利用,同時(shí)提出了手工檢測、源碼審計(jì)和工具探測三種檢測方法,最后針對用戶和服務(wù)器端分別提出了不同防御手段。
[1]孫宇成,尹航.XSS漏洞分析與攻擊平臺的搭建[J].電腦知識與技術(shù),2020,16(12):88-89+92.
[2]劉建亮,喬興華.跨站腳本攻擊及防范方法研究[J].科學(xué)技術(shù)創(chuàng)新,2020(10):137-138.
[3]谷家騰. 基于動態(tài)分析的XSS漏洞檢測方法研究[D].北京郵電大學(xué),2019.
[4]王丹,劉立家,林九川,趙文兵,杜曉林.基于DOM狀態(tài)轉(zhuǎn)換檢測XSS漏洞[J].北京工業(yè)大學(xué)學(xué)報(bào),2018,44(09):1208-1216.
[5]黃波,孫羽壯. XSS跨站攻擊原理與調(diào)查方法研究[J]. 網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2017,000(006):50-52.
[6]龔小剛,王紅凱,夏威,等. 跨站腳本攻擊(XSS)的形成與利用研究[J]. 信息安全與技術(shù),2015(3):52-55.
本文系2016年蘭州市科技計(jì)劃項(xiàng)目(2016-2-45)“基于大數(shù)據(jù)的網(wǎng)絡(luò)犯罪信息情報(bào)分析模式的研究”;甘肅省“證據(jù)科學(xué)技術(shù)研究與應(yīng)用創(chuàng)新團(tuán)隊(duì)”項(xiàng)目(編號2016C-09)