◆金濤 霍旭磊 王亞麗
XSS的攻擊利用與防護(hù)策略研究
◆金濤 霍旭磊 王亞麗
(甘肅政法大學(xué)公安技術(shù)學(xué)院 甘肅 730070)
XSS是一種常見(jiàn)的針對(duì)Web應(yīng)用攻擊的安全漏洞,造成漏洞的主要原因是服務(wù)器端對(duì)攻擊者輸入的惡意語(yǔ)句沒(méi)有進(jìn)行過(guò)濾或轉(zhuǎn)義,導(dǎo)致惡意語(yǔ)句被執(zhí)行,造成客戶(hù)端被攻擊的危害。本文介紹了XSS的分類(lèi)和利用實(shí)例,提出了檢測(cè)方法和防護(hù)策略。
XSS漏洞;DVWA;漏洞利用;漏洞防護(hù)
隨著第八屆中國(guó)網(wǎng)絡(luò)安全大會(huì)的成功舉辦,網(wǎng)絡(luò)安全的話(huà)題越來(lái)越被全民關(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)站正常輸入界面中插入惡意腳本對(duì)用戶(hù)和系統(tǒng)造成危害的Web安全漏洞。“跨站攻擊”指不直接攻擊Web服務(wù)器,而以其為跳板攻擊客戶(hù)端。主要分為反射型XSS、存儲(chǔ)型XSS、基于DOM的XSS三種類(lèi)型。
此次實(shí)驗(yàn)平臺(tái)是DVWA靶場(chǎng)(Damn Vulnerable Web Application)[1],它包含了暴力破解、命令行注入、文件上傳等多種常見(jiàn)且危害巨大的web安全漏洞。支持調(diào)整靶場(chǎng)源碼的安全級(jí)別,分別為 Low,Medium,High,Impossible。級(jí)別越高,安全防護(hù)越嚴(yán)格,滲透難度越大。
1.2.1漏洞分析
攻擊者提交惡意腳本給服務(wù)器時(shí),服務(wù)器沒(méi)有對(duì)其進(jìn)行過(guò)濾或過(guò)濾的不充分,將腳本內(nèi)容作為url的參數(shù)完整的返回給瀏覽器,當(dāng)用戶(hù)點(diǎn)擊鏈接,惡意腳本會(huì)完全回顯,受到含有特殊目的攻擊[2]。
1.2.2漏洞驗(yàn)證
選擇DVWA的 XSS(Reflected)漏洞模塊進(jìn)行漏洞驗(yàn)證并利用。
(1)插入漏洞檢測(cè)腳本:,如圖1所示:

圖1 插入檢測(cè)腳本
(2)彈窗顯示Reflected1,判斷其可能存在XSS反射型漏洞,如圖2所示:

圖2 彈出指定內(nèi)容
(3)為了進(jìn)一步驗(yàn)證存在XSS反射型漏洞,可以使用Burp Suite來(lái)查看HTTP響應(yīng)內(nèi)容中是否完全回顯了所插入的檢測(cè)腳本。結(jié)果發(fā)現(xiàn),檢測(cè)腳本被完全回顯,如圖3所示:

圖3 腳本完全回顯
1.2.3漏洞利用
(1)插入惡意獲取cookie的語(yǔ)句,此處IP地址為攻擊者所控制的機(jī)器IP,通過(guò)受害者點(diǎn)擊含有惡意語(yǔ)句的鏈接來(lái)監(jiān)聽(tīng)訪問(wèn)請(qǐng)求信息,并盜取cookie信息。
(2)當(dāng)受害者點(diǎn)擊惡意鏈接時(shí),攻擊機(jī)使用netcat工具監(jiān)聽(tīng),成功獲取到用戶(hù)cookie信息,如圖4所示:

圖4 盜取cookie信息
(3)替換cookie信息從而冒名登錄,可見(jiàn)攻擊者成功登錄,這也說(shuō)明漏洞利用成功,如圖5所示:

圖5 冒名登錄
1.3.1漏洞分析
當(dāng)用戶(hù)提交信息給服務(wù)器時(shí),服務(wù)器對(duì)提交的內(nèi)容沒(méi)有過(guò)濾或過(guò)濾的不充分,數(shù)據(jù)會(huì)被服務(wù)器存儲(chǔ),一般會(huì)直接顯示。若當(dāng)服務(wù)器存儲(chǔ)了攻擊者插入的惡意代碼時(shí),每當(dāng)有用戶(hù)點(diǎn)擊漏洞位置時(shí),惡意代碼就會(huì)被執(zhí)行[3]。如果管理員沒(méi)能及時(shí)清除惡意代碼并修復(fù)漏洞,它就會(huì)被長(zhǎng)期保存在服務(wù)器中,而且很可能被其他攻擊者再次利用,造成持久性的漏洞危害。這也是存儲(chǔ)型XSS漏洞比反射型XSS漏洞危害更大的原因之一。
1.3.2漏洞驗(yàn)證
選擇DVWA的 XSS(Stored)漏洞模塊進(jìn)行漏洞驗(yàn)證并利用。
(1)插入檢測(cè)腳本:,若腳本的長(zhǎng)度被限制,一般可通過(guò)網(wǎng)頁(yè)前端檢測(cè)元素功能對(duì) max屬性進(jìn)行修改,以便完整輸入檢測(cè)腳本,如圖6所示:

圖6 插入檢測(cè)語(yǔ)句
(2)插入檢測(cè)語(yǔ)句后,當(dāng)再瀏覽此模塊時(shí),會(huì)彈出檢測(cè)語(yǔ)句,如圖7所示:

圖7 彈出指定信息
(3)可以看到name為check的檢測(cè)語(yǔ)句已經(jīng)被存儲(chǔ)到了數(shù)據(jù)庫(kù)中,并顯示了出來(lái),如果網(wǎng)站管理員沒(méi)能及時(shí)清除它,每當(dāng)用戶(hù)瀏覽到這個(gè)模塊的時(shí)候,都會(huì)受到攻擊,如圖8所示:

圖8 惡意腳本被存儲(chǔ)
1.3.3漏洞利用
插入上文中惡意獲取用戶(hù)cookie信息的語(yǔ)句,同樣能獲取到用戶(hù)cookie信息,通過(guò)替換cookie的方式冒名登錄其他賬戶(hù)[4]。而與反射型XSS不同的是,存儲(chǔ)型XSS漏洞被插入的惡意語(yǔ)句存儲(chǔ)時(shí)間長(zhǎng),受害用戶(hù)多,危害程度更大。
1.4.1漏洞分析
DOM是一個(gè)與網(wǎng)站系統(tǒng)、編譯語(yǔ)言不相關(guān)的接口,通過(guò)它,用戶(hù)可以隨時(shí)更新文檔內(nèi)容、結(jié)構(gòu)和樣式,動(dòng)態(tài)地檢查和修改頁(yè)面內(nèi)容。此漏洞不需要提交數(shù)據(jù)到服務(wù)器端來(lái)進(jìn)行攻擊,而是從客戶(hù)端獲得其中的數(shù)據(jù)后在本地執(zhí)行,一旦其中的算法沒(méi)有經(jīng)過(guò)嚴(yán)格防護(hù),就可能被攻擊成功。
1.4.2漏洞驗(yàn)證
選擇DVWA的 XSS(DOM)漏洞模塊進(jìn)行驗(yàn)證并利用。
(1)頁(yè)面的本意是選擇默認(rèn)語(yǔ)言,如圖9所示:

圖9 語(yǔ)言選擇界面
(2)插入檢測(cè)腳本:,構(gòu)造URL:IP/dvwa/vulnerabilities/xss_d/?default=English%20 &&,可以發(fā)現(xiàn)會(huì)彈出DOM字符,說(shuō)明漏洞存在,如圖10所示:

圖10 彈出指定信息
1.4.3漏洞利用
插入盜取用戶(hù)cookie信息的腳本:,可以看到瀏覽器彈出了客戶(hù)端的cookie信息,者說(shuō)明基于DOM型的XSS漏洞被利用成功,如圖11所示:

圖11 彈出cookie信息
獲取cookie信息成功后,通過(guò)替換cookie信息的方式同樣實(shí)現(xiàn)了冒名登錄其他賬戶(hù),說(shuō)明基于DOM的XSS漏洞利用成功。
除了利用以上手工檢測(cè)方法外,還可以通過(guò)源碼審計(jì)及時(shí)發(fā)現(xiàn)漏洞代碼,或是利用自動(dòng)化檢測(cè)工具進(jìn)行漏洞探測(cè)[5],這里著重介紹綜合漏洞掃描工具Nessus和專(zhuān)門(mén)檢測(cè)XSS漏洞的XSSer。
Nessus是一款非常優(yōu)秀的綜合漏洞掃描工具,不僅支持包括XSS在內(nèi)的多種漏洞掃描功能,還可實(shí)時(shí)對(duì)其漏洞數(shù)據(jù)庫(kù)進(jìn)行更新。客戶(hù)端和遠(yuǎn)程端可同時(shí)操作,多終端實(shí)時(shí)對(duì)系統(tǒng)漏洞掃描和分析。Nessus是綜合漏洞掃描器,但如果只需要針對(duì)XSS漏洞進(jìn)行檢測(cè)時(shí),可以使用XSSer。
XSSer(Cross site “scripter”)是專(zhuān)門(mén)檢測(cè)XSS漏洞的安全工具,獨(dú)有的代碼注入技術(shù),可繞過(guò)部分防護(hù)策略來(lái)自動(dòng)化檢測(cè)XSS漏洞,誤報(bào)率相對(duì)較低,更準(zhǔn)確。同時(shí)它還可以對(duì)xss漏洞進(jìn)行利用,這為安全工作者帶來(lái)了極大的便利,在專(zhuān)門(mén)針對(duì)XSS漏洞進(jìn)行檢測(cè)驗(yàn)證時(shí),一直都是被首選的安全工具。
一般的瀏覽器都內(nèi)置了防范XSS的方法,例如CSP(Content Security Policy,內(nèi)容安全策略)可防范簡(jiǎn)單XSS攻擊[6]。但對(duì)于完全防范來(lái)說(shuō),還需要更高級(jí)的方案。
所有輸入的內(nèi)容進(jìn)行嚴(yán)格檢查,對(duì)語(yǔ)句中"/""script""<"">"等特殊字符進(jìn)行過(guò)濾、編碼或轉(zhuǎn)義。一般前端框架中都有DecodeingMap程序,它可用于過(guò)濾或轉(zhuǎn)義用戶(hù)所輸入的特殊字符和HTML標(biāo)簽。例如vuejs中的DecodingMap程序,可以用來(lái)過(guò)濾用戶(hù)輸入信息中script標(biāo)簽里的內(nèi)容。簡(jiǎn)單的DecodeingMap程序如圖12所示:

圖12 簡(jiǎn)單過(guò)濾代碼
HttpOnly是最常見(jiàn)的防止cookie被劫持的方法之一,當(dāng)cookie中設(shè)置了這個(gè)屬性時(shí),通過(guò)動(dòng)態(tài)腳本則無(wú)法獲取其內(nèi)容。
當(dāng)對(duì)用戶(hù)的輸入內(nèi)容進(jìn)行檢查后,服務(wù)器的輸出內(nèi)容也不能忽視。除RFT(Rich Text Format,富文本格式)的輸出外,其他需要對(duì)變量進(jìn)行編碼或轉(zhuǎn)義后再輸出到HTML頁(yè)面。利用sanitize-html模塊來(lái)處理就是很好的方式。
XSS漏洞作為Web應(yīng)用的經(jīng)典漏洞類(lèi)型,已經(jīng)存在多年。直到現(xiàn)在,跨站腳本攻擊仍是許多站點(diǎn)前端安全的最大威脅。本文對(duì)不同類(lèi)型的XSS漏洞進(jìn)行了分析和利用,同時(shí)提出了手工檢測(cè)、源碼審計(jì)和工具探測(cè)三種檢測(cè)方法,最后針對(duì)用戶(hù)和服務(wù)器端分別提出了不同防御手段。
[1]孫宇成,尹航.XSS漏洞分析與攻擊平臺(tái)的搭建[J].電腦知識(shí)與技術(shù),2020,16(12):88-89+92.
[2]劉建亮,喬興華.跨站腳本攻擊及防范方法研究[J].科學(xué)技術(shù)創(chuàng)新,2020(10):137-138.
[3]谷家騰. 基于動(dòng)態(tài)分析的XSS漏洞檢測(cè)方法研究[D].北京郵電大學(xué),2019.
[4]王丹,劉立家,林九川,趙文兵,杜曉林.基于DOM狀態(tài)轉(zhuǎn)換檢測(cè)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)目(編號(hào)2016C-09)
網(wǎng)絡(luò)安全技術(shù)與應(yīng)用2021年1期