許瑩瑩,梁華慶,劉 偉,王雪鳳
(1.中國(guó)石油大學(xué)(北京)地球物理與信息工程學(xué)院,北京102249;2.塔里木油田公司開(kāi)發(fā)事業(yè)部,新疆 庫(kù)爾勒841000)
基于Fuzzing技術(shù)提升XSS漏洞防御水平的研究
許瑩瑩1,梁華慶1,劉 偉2,王雪鳳2
(1.中國(guó)石油大學(xué)(北京)地球物理與信息工程學(xué)院,北京102249;2.塔里木油田公司開(kāi)發(fā)事業(yè)部,新疆 庫(kù)爾勒841000)
面對(duì)高交互性、高復(fù)雜性的網(wǎng)絡(luò)操作過(guò)程,有效提升對(duì)XSS漏洞的檢測(cè)、防御能力有利于提高Web安全。本文提出了一種主動(dòng)提升對(duì)XSS漏洞的檢測(cè)與防御能力的方法,該方法通過(guò)網(wǎng)絡(luò)爬蟲(chóng)爬取Web交互頁(yè)面,結(jié)合XSS漏洞的特征,基于Fuzzing技術(shù)主動(dòng)挖掘潛在漏洞,利用滲透工具模擬攻擊并捕獲網(wǎng)絡(luò)攻擊流量,提取攻擊特征,最終結(jié)合Snort防御告警主動(dòng)提升Web安全。實(shí)驗(yàn)測(cè)試表明,該方法可有效檢測(cè)XSS漏洞,結(jié)合對(duì)Snort規(guī)則庫(kù)的補(bǔ)充升級(jí),能夠有效提升對(duì)XSS漏洞的防御能力。
Fuzzing技術(shù);XSS漏洞;滲透攻擊;特征提取
隨著Web2.0應(yīng)用的大規(guī)模普及化,其體現(xiàn)出高交互性高復(fù)雜性的特征[1],這其中伴隨的Web安全問(wèn)題也尤為突出,XSS漏洞在近年來(lái)的權(quán)威統(tǒng)計(jì)中持續(xù)占據(jù)較大份額。如何對(duì)其進(jìn)行快速防御在業(yè)界始終是焦點(diǎn)。目前各大廠(chǎng)商通用的方法多是基于已公布的實(shí)際漏洞,在分析惡意流量的基礎(chǔ)上進(jìn)行規(guī)則庫(kù)補(bǔ)充,實(shí)現(xiàn)對(duì)檢測(cè)防御產(chǎn)品的補(bǔ)充升級(jí)。但該方法防御時(shí)效性差,犧牲真實(shí)業(yè)務(wù)系統(tǒng),并且真實(shí)攻擊流量轉(zhuǎn)換成可用規(guī)則的效率也無(wú)法保證,適用于安全檢測(cè)防御的初期階段?;谝陨峡紤],文中采用網(wǎng)絡(luò)爬蟲(chóng)技術(shù),結(jié)合Fuzzing技術(shù),針對(duì)XSS漏洞設(shè)計(jì)測(cè)試樣例生成模板,通過(guò)在靶機(jī)Web應(yīng)用上執(zhí)行惡意測(cè)試樣例來(lái)主動(dòng)挖掘潛在的XSS漏洞,通過(guò)對(duì)Snort規(guī)則庫(kù)的補(bǔ)充升級(jí)來(lái)實(shí)現(xiàn)更加積極、更為有效的防御。最終結(jié)合Metasploit滲透工具對(duì)文中方法的有效性進(jìn)行驗(yàn)證。
1 相關(guān)技術(shù)簡(jiǎn)介
文中提出的方法主要用到了如下技術(shù):網(wǎng)絡(luò)爬蟲(chóng),F(xiàn)uzzing技術(shù),Snort技術(shù)。網(wǎng)絡(luò)爬蟲(chóng)是一種自動(dòng)提取網(wǎng)頁(yè)的程序,通常被用于定向抓取相關(guān)網(wǎng)頁(yè)資源[2]。文中選用通用網(wǎng)絡(luò)爬蟲(chóng)。針對(duì)一定的Web應(yīng)用,抓取其所有的交互頁(yè)面進(jìn)行存儲(chǔ)[3],以供進(jìn)一步處理。
Fuzzing技術(shù)是一種基于缺陷注入的自動(dòng)化軟件測(cè)試技術(shù)。能夠非常有效地找出網(wǎng)頁(yè)瀏覽器的漏洞[4]。其核心思想是生成合適的測(cè)試用例并使用恰當(dāng)?shù)墓ぞ邫z測(cè)。本文采用網(wǎng)絡(luò)型Fuzzer,根據(jù)XSS漏洞的特點(diǎn),針對(duì)性地設(shè)計(jì)測(cè)試樣例,綜合考慮可執(zhí)行性和執(zhí)行效率。
Snort是一種輕量級(jí)網(wǎng)絡(luò)入侵檢測(cè)系統(tǒng)[5]??商峁?duì)內(nèi)部攻擊、外部攻擊和誤操作的實(shí)時(shí)保護(hù)。文中Snort工作在網(wǎng)絡(luò)入侵檢測(cè)模式下,通過(guò)配置使Snort加載規(guī)則庫(kù),并允許加載本地規(guī)則,通過(guò)報(bào)文與規(guī)則匹配進(jìn)行告警,并記錄日志,將告警情況實(shí)時(shí)顯示。
2 基于Fuzzing技術(shù)的XSS漏洞檢測(cè)
2.1 測(cè)試樣例生成
文中針對(duì)XSS漏洞的Fuzzing測(cè)試,其核心在于突破安全邊界[6]。由于目前絕大多數(shù)的Web產(chǎn)品針對(duì)XSS漏洞已經(jīng)采取了相應(yīng)的過(guò)濾措施,多是結(jié)合輸入過(guò)濾腳本對(duì)用戶(hù)提供的非法輸入進(jìn)行過(guò)濾[7]。與此同時(shí)又有相當(dāng)部分攻擊者在探索新的繞過(guò)過(guò)濾機(jī)制的方式。文中結(jié)合技術(shù)現(xiàn)狀,選取Htmlawed作為繞過(guò)對(duì)象。為了提升Fuzzing測(cè)試用例的有效性,文中以expression為例著重分析并編程生成相關(guān)的設(shè)計(jì)用例。首先,設(shè)計(jì)具有針對(duì)性的樣例模板,例如,常見(jiàn)的DIV CSS表達(dá)中:<div style="width:expression(alert(xxx));
這其中的expression(alert(xxx)就是需要重點(diǎn)關(guān)注的安全區(qū)域,這其中可能被插入注釋內(nèi)容/**/和expression等內(nèi)容,需要進(jìn)行重點(diǎn)過(guò)濾。過(guò)濾過(guò)程先從過(guò)濾器對(duì)安全域的定位方式入手,過(guò)濾器會(huì)在div標(biāo)簽內(nèi)找到style屬性,之后在雙引號(hào)之間依據(jù)冒號(hào)來(lái)確定名稱(chēng)和內(nèi)容,按照其定位方式,我們選擇=":;做為安全域限定關(guān)鍵字。該Fuzzer的主要思想就是在一個(gè)模板有可能導(dǎo)致邊界混亂的地方添加元素實(shí)現(xiàn)一定的繞過(guò)?;谝陨戏治鲈O(shè)計(jì)出如下模板:<div id="xxx"style="width:expre/*xxx*/ssion(alert(9));">
考慮到效率以及可識(shí)別性等問(wèn)題,我們的模板選擇只進(jìn)行了兩處元素的填充。
其次,選擇模板的填充元素。由于填充邊界元素或者filter過(guò)濾刪除一些東西之后導(dǎo)致邊界改變都有可能導(dǎo)致漏洞。我們選擇如下所示填充用例:<、>、</div>//、=":;空格及onXXX (),不可視特殊字符X、%XX、XX、 、
、
、