◆黃 波 孫羽壯
?
XSS跨站攻擊原理與調(diào)查方法研究
◆黃 波 孫羽壯
(遼寧警察學(xué)院 遼寧 116036)
現(xiàn)代Web開發(fā)技術(shù)誕生及廣泛應(yīng)用,基于Web安全漏洞的各種網(wǎng)絡(luò)攻擊成為網(wǎng)絡(luò)安全威脅之一。XSS跨站腳本攻擊已經(jīng)算得上是除DDOS攻擊和SQL注入攻擊之外第三大Web攻擊。本文針對XSS跨站攻擊開展分析研究,首先介紹XSS跨站攻擊的特點、主要類型及攻擊原理,結(jié)合相關(guān)分析闡述了XSS跨站攻擊的廣泛性及其危害性,總結(jié)經(jīng)典XSS跨站腳本攻擊案例;再通過實驗室虛擬環(huán)境搭建模擬實現(xiàn)XSS跨站攻擊過程,分析XSS跨站攻擊遺留痕跡,結(jié)合公安工作中網(wǎng)絡(luò)犯罪偵查的業(yè)務(wù)需要,總結(jié)了XSS跨站攻擊的痕跡數(shù)據(jù)并闡述防御此攻擊的具體措施。
XSS;跨站攻擊;網(wǎng)絡(luò)安全;調(diào)查方法
自從現(xiàn)代Web開發(fā)技術(shù)誕生以來,XSS跨站腳本攻擊以及基于Web的安全漏洞就一直圍繞在我們身邊。XSS攻擊占當(dāng)今Web攻擊總數(shù)的12.75%,在所有報告的漏洞中,大約70%都是與XSS跨站腳本攻擊有關(guān)。幾乎90%的網(wǎng)站都至少會有一個XSS漏洞。除了DDOS(分布式拒絕服務(wù))攻擊和SQL注入攻擊之外,XSS跨站腳本攻擊可以算得上是第三大Web攻擊了。在過去,類似Twitter、Facebook、YouTube,雅虎,MySpace或者Paypal等鼎鼎大名的網(wǎng)站都遭受過這種攻擊。
《2016年中國網(wǎng)站安全漏洞形式分析報告》中,跨站腳本攻擊(XSS)漏洞是2016年最為頻繁掃出的漏洞類型之一。如表1所述給出了被掃出次數(shù)最多的十大類典型網(wǎng)站安全漏洞:
表1 2016年被掃描出次數(shù)最多的十大類典型網(wǎng)站安全漏洞

如圖1所述給出了各類網(wǎng)站安全漏洞被掃出次數(shù)的比例分布情況。從表中可以看出,跨站腳本攻擊漏洞(16.0%)是占比最高的網(wǎng)站安全漏洞之一。

圖1 2016年網(wǎng)站漏洞類型分布
XSS跨站腳本攻擊對網(wǎng)絡(luò)安全有十分嚴(yán)重的危害。網(wǎng)絡(luò)空間已經(jīng)成為海、陸、空、天之外的第五大空間,這個網(wǎng)絡(luò)空間的安全也是重要的國家資源,其需要有主權(quán)、安全保護(hù)。面對未來日益復(fù)雜的網(wǎng)絡(luò)環(huán)境,防治XSS跨站腳本攻擊是解決網(wǎng)絡(luò)安全的必要因素。
要想成功防御XSS跨站腳本攻擊,就必須對XSS跨站腳本攻擊有全面具體的了解,知道XSS跨站腳本攻擊的類型及其攻擊原理,知己知彼方能百戰(zhàn)百勝。
1.1 XSS跨站攻擊的概述
XSS,全稱Cross SiteScript,翻譯為跨站腳本攻擊,是Web程序中普遍的漏洞,XSS屬于用于客戶端的被動式攻擊方式,所以危害性容易被忽視。攻擊者在Web頁面里插入惡意Script代碼,當(dāng)用戶瀏覽該頁時,嵌入Web頁面里的惡意Script代碼就會被執(zhí)行,從而達(dá)到惡意攻擊用戶的目的。
利用XSS跨站腳本攻擊可以進(jìn)行網(wǎng)絡(luò)釣魚,盜取各類用戶帳號;竊取用戶Cookie信息,獲取用戶隱私信息或者利用用戶身份進(jìn)一步操作網(wǎng)站;劫持用戶會話,執(zhí)行任意操作;網(wǎng)頁掛馬;傳播跨站腳本蠕蟲等。由此可見,XSS跨站腳本攻擊方式十分靈活。
1.2 XSS跨站攻擊的主要類型
XSS跨站攻擊的主要類型有以下幾種:
1.2.1Stored XSS漏洞
如果有某個Web應(yīng)用程序的功能是負(fù)責(zé)將用戶提交的數(shù)據(jù)存儲到數(shù)據(jù)庫中,然后在需要時將這個用戶提交的數(shù)據(jù)再從數(shù)據(jù)庫中提取出返回到網(wǎng)頁中,在這個過程中,如果用戶提交的數(shù)據(jù)中包含一個XSS攻擊代碼,一旦Web應(yīng)用程序準(zhǔn)備將這個攻擊語句作為用戶數(shù)據(jù)返回到網(wǎng)頁中,那么所有包含這個回顯信息的網(wǎng)頁將全部受到XSS漏洞的影響。Web應(yīng)用程序過于相信用戶的數(shù)據(jù),將其作為一個合法信息保存在數(shù)據(jù)庫中。這種因為存儲外部數(shù)據(jù)而引發(fā)的XSS漏洞稱為Web應(yīng)用程序的Stored XSS漏洞,即存儲型XSS漏洞也稱為持久型XSS漏洞。
1.2.2Non-persistent XSS漏洞
當(dāng)用戶訪問一個帶有XSS攻擊代碼的Web請求時,服務(wù)器端接收數(shù)據(jù)后處理,然后把帶有XSS攻擊代碼的數(shù)據(jù)發(fā)送到瀏覽器,瀏覽器解析這段帶有XSS攻擊代碼的數(shù)據(jù)后,最終造成XSS漏洞。這個過程就像一次反射,故稱為反射性XSS也稱為非持久型XSS。
1.2.3 DOM-Based XSS漏洞
DOM是Document Object Model(文檔對象模型)的縮寫。DOM是一種與瀏覽器、平臺、語言無關(guān)的接口,使得網(wǎng)頁開發(fā)者可以利用它來訪問頁面其他的標(biāo)準(zhǔn)組件。DOM給予Web設(shè)計師和開發(fā)者一個標(biāo)準(zhǔn)的方法,讓他們來訪問他們站點中的數(shù)據(jù)、腳本和表現(xiàn)層對象。
由于DOM有如此好的功能,大量的Web應(yīng)用程序開發(fā)者在自己的程序中加入對DOM的支持,Web應(yīng)用程序開發(fā)者這種濫用DOM的做法使得Web應(yīng)用程序的安全也大大降低,DOM-Based XSS正是在這樣的環(huán)境下出現(xiàn)的漏洞。DOM-Based XSS漏洞與Stored XSS漏洞不同,因為它甚至不需要將XSS攻擊語句存入到數(shù)據(jù)庫中,直接在瀏覽器的地址欄中就可以讓W(xué)eb應(yīng)用程序發(fā)生跨站行為。對于大多數(shù)的Web應(yīng)用程序來說,這種類型的XSS漏洞是最容易發(fā)現(xiàn)和利用的。
1.3 XSS跨站攻擊原理分析
XSS跨站腳本攻擊是攻擊者往Web頁面里插入惡意HTML標(biāo)簽或者JavaScript代碼,當(dāng)用戶瀏覽該頁或者進(jìn)行某些操作時,攻擊者利用用戶對原網(wǎng)站的信任,誘騙用戶或瀏覽器執(zhí)行一些不安全的操作或者向其它網(wǎng)站提交用戶的私密信息。例如:攻擊者在論壇中放一個看似安全的鏈接,騙取用戶點擊,竊取Cookie中的用戶私密信息;或者攻擊者在論壇中加一個惡意表單,當(dāng)用戶提交表單的時候,卻把信息傳送到攻擊者的服務(wù)器中,而不是用戶原本以為信任的站點。
諸如此類,唯一能完全杜絕XSS跨站腳本攻擊的方法,就是禁用Script,IMG等,顯然這是不可能的,用戶需要豐富的頁面內(nèi)容。當(dāng)安全影響應(yīng)用時我們往往選擇后者,因此XSS跨站腳本攻擊又熱門又很難避免。
2.1 XSS跨站攻擊環(huán)境搭建
利用虛擬機(jī)模擬XSS攻擊環(huán)境,利于對攻擊過程及結(jié)果的分析,與網(wǎng)絡(luò)中的XSS攻擊一致。
(1)XSS跨站攻擊平臺搭建
在虛擬機(jī)中創(chuàng)建Windows server 2003虛擬機(jī)作為攻擊端,利用WampServer和xsser.me源代碼搭建XSS攻擊平臺。WampServer是一款A(yù)pache Web服務(wù)器、PHP解釋器以及MySQL數(shù)據(jù)庫的集成安裝環(huán),利于模擬XSS攻擊平臺的搭建,如圖2所示。搭建XSS攻擊平臺目的是為了方便對攻擊后返回信息的獲取。

圖2 模擬的XSS攻擊平臺
(2)XSS跨站攻擊目標(biāo)網(wǎng)站搭建
在虛擬機(jī)中創(chuàng)建Windows Server 2003虛擬機(jī)作為目標(biāo)端,并利用IIS(Internet Information Servicer)互聯(lián)網(wǎng)信息服務(wù)功能部署留言板網(wǎng)站。如圖3所示,留言板的留言功能并未禁止Script代碼的執(zhí)行,因而存在XSS跨站腳本攻擊的漏洞。
(3)XSS跨站攻擊過程實現(xiàn)
在攻擊端中注冊用戶并創(chuàng)建項目生成項目代碼,將XSS攻擊代碼插入留言板中發(fā)表,等待管理員審核留言。跨站攻擊代碼如圖4所示。
攻擊代碼為:
’”>。

圖3 目標(biāo)留言板

圖4 XSS跨站攻擊代碼
是將留言結(jié)束,而網(wǎng)頁原來的結(jié)束留言代碼由于沒有了開始代碼則無任何作用,由于該代碼前為空,所以留言板中沒有任何內(nèi)容。
’”>是插入標(biāo)記證明代碼的執(zhí)行,該攻擊代碼標(biāo)記如圖5所示將在留言板輸入框后方顯示。

圖5 攻擊代碼標(biāo)記
是XSS攻擊的核心,執(zhí)行crs腳本,crs腳本是全部的項目代碼,作用是在網(wǎng)站管理員登錄網(wǎng)站后臺審核留言時,將網(wǎng)站后臺登錄網(wǎng)址以及網(wǎng)站管理員登錄后所產(chǎn)生的Cookie發(fā)送回XSS攻擊平臺中。
Cookie是網(wǎng)站在用戶瀏覽器中保存下來的一份個人信息,Cookie作用是用戶下次訪問該網(wǎng)站時就可以免于輸入用戶名或密碼。另外,用戶使用賬號登陸網(wǎng)站后,要靠Cookie來維持會話Session,以保持在線狀態(tài),如果清空當(dāng)前網(wǎng)站對應(yīng)的所有Cookie數(shù)據(jù),用戶將立即下線。因此Cookie相當(dāng)于“網(wǎng)絡(luò)身份證”內(nèi)存大量個人信息,如果沒有Cookie,許多網(wǎng)站都登陸不上去。再比如,當(dāng)用戶訪問某網(wǎng)站時,在不登陸的狀態(tài)下,可以直接進(jìn)行登錄后的操作,其原理也是基于Cookie來記錄用戶的數(shù)據(jù),只要不清除Cookie,下次再打開該網(wǎng)站時,操作結(jié)果依然存在。
圖6所示為XSS跨站攻擊過程中接收的返回信息在瀏覽器中登錄網(wǎng)站管理后臺,利用瀏覽器插件edit thiscookie修改Cookie,登錄網(wǎng)站后臺。

圖6 XSS攻擊返回信息
3.1 XSS跨站攻擊抓包分析
在XSS跨站攻擊時,利用Wireshark進(jìn)行抓包分析,對抓取到的數(shù)據(jù)讀取。在抓到的數(shù)據(jù)包中可以看到攻擊代碼的發(fā)送,以及cookie的抓取。在圖7中可以看到XSS跨站攻擊代碼的發(fā)送,以及Cookie的明文抓取。

圖7 XSS攻擊代碼的發(fā)送及Cookie的抓取
3.2 XSS跨站攻擊本地分析
在攻擊的留言平臺源文件中可以看到所使用的攻擊代碼。
正常留言的情況下,留言的內(nèi)容會在圖8選中的代碼中展現(xiàn),由于插入攻擊代碼’”>,前方的將源文件中的

圖8留言板源文件
3.3 XSS跨站攻擊追蹤調(diào)查
在留言的平臺上遺留發(fā)表留言的IP地址,留言者IP地址如圖9所示。

圖9留言者遺留的IP信息
3.4 XSS跨站攻擊防御
3.4.1基于特征的防御
XSS攻擊漏洞和著名的SQL注入漏洞一樣,都是利用了Web頁面編寫不完善,因此每一個漏洞所利用和針對的弱點都不盡相同。這就給XSS漏洞防御帶來了困難:不可能以單一特征來概括所有XSS攻擊。
傳統(tǒng)XSS防御多采用特征匹配方式,在所有提交的信息中都進(jìn)行匹配檢查。對于這種類型的XSS攻擊,采用的模式匹配方法一般會需要對“javascript”這個關(guān)鍵字進(jìn)行檢索,一旦發(fā)現(xiàn)提交信息中包含“javascript”,就認(rèn)定為XSS攻擊。這種檢測方法的缺陷顯而易見:黑客可以通過插入字符或完全編碼的方式躲避檢測。
(1)在javascript中加入多個tab鍵,得到IMG SRC="jav ascript:alert(‘XSS‘)"。
(2)在javascript中加入#x09編碼字符,得到IMG SRC="javas cript:alert(‘XSS‘)"。
(3)在javascript中加入字符,得到IMG SRC="javascript:a lert(‘XSS‘)" 。
(4)在javascript中的每個字符間加入回車換行符,得到:IMGSRC="j a v a s c r i p t :alert(‘XSS‘)"
(5)對"javascript:alert(‘XSS‘)"采用完全編碼,得到: IMGSRC=#x6A#x61#x76#x61#x73#x63#x72#x69#x70#x74#x3A#x61#x6C#x65#x72#x74#x28#x27#x58#x53#x53#x27#x29
上述方法都可以很容易的躲避基于特征的檢測。
3.4.2基于代碼修改的防御
與SQL注入防御一樣,XSS攻擊也是利用了Web頁面的編寫疏忽,所以還有一種方法就是從Web應(yīng)用開發(fā)的角度來避免:
對所有用戶提交內(nèi)容進(jìn)行可靠的輸入驗證,包括對URL、查詢關(guān)鍵字、HTTP頭、POST數(shù)據(jù)等,僅接受指定長度范圍內(nèi)、采用適當(dāng)格式、采用所預(yù)期的字符的內(nèi)容來提交,對其他的一律過濾。
實現(xiàn)Session標(biāo)記(session tokens)、CAPTCHA系統(tǒng)或者HTTP引用頭檢查,以防被攻擊。
本文提出的XSS跨站攻擊的調(diào)查方法主要借助Wireshark工具進(jìn)行抓包分析,通過對抓取到的數(shù)據(jù)分析,可以看到攻擊代碼的發(fā)送并對cookie信息實現(xiàn),并進(jìn)一步對捕獲的數(shù)據(jù)提取惡意服務(wù)器IP地址、XSS攻擊代碼等相關(guān)線索數(shù)據(jù),最后提出防御此類攻擊的措施。
[1]http://zt.360.cn/1101061855.php.2016年中國網(wǎng)站安全漏洞形式分析報告.
[2]徐國天.存儲式”XSS掛馬攻擊調(diào)查方法研究.警察技術(shù),2015.
[3]劉達(dá).通過HTML編碼防御XSS跨站腳本攻擊的研究.網(wǎng)絡(luò)空間安全,2016.
[4]王佩楷.E-BUSINESS JOURNAL.XSS跨站腳本攻擊分析,2010.
[5]夏莉.一種基于行為的XSS客戶端防范方法.中國科學(xué)院研究生院學(xué)報.
[6]孫丹.淺析XSS漏洞檢測、利用及防范.信息安全與通信保密,2013.
[7]左丹丹.一種XSS漏洞檢測方法的設(shè)計與實現(xiàn).計算機(jī)應(yīng)用與軟.
[8]戴俊云.防范XSS的正確方式.計算機(jī)與網(wǎng)絡(luò),2006.
[9]高巖,胡勇.Web前段XSS過濾技術(shù)研究.通信技術(shù),2017.
[10]古開元,周安民.跨站腳本攻擊原理與防范.網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2005.
[11]羅衛(wèi)敏,劉井波,劉靜,陳曉峰.XSS蠕蟲在社交網(wǎng)絡(luò)中的傳播分析.計算機(jī)工程,2011.