裘志慶,宦飛
基于網(wǎng)絡(luò)爬蟲和Fuzzing的漏洞挖掘檢測工具
裘志慶,宦飛
如今,隨著Web技術(shù)的高速發(fā)展和互聯(lián)網(wǎng)的大眾化,Web安全領(lǐng)域受到了越來越多的威脅??缯灸_本攻擊(Cross-site Scripting ,縮寫XSS)是這些安全隱患中危害性比較大,存在范圍比較廣的一種漏洞攻擊。目前已有的XSS漏洞檢測挖掘工具和技術(shù)還不夠完善,存在檢測速度較慢、漏報(bào)率高等缺點(diǎn)。研究設(shè)計(jì)了一款基于網(wǎng)絡(luò)爬蟲和Fuzzing模糊技術(shù)的漏洞挖掘檢測工具。其中對(duì)于網(wǎng)絡(luò)爬蟲進(jìn)行了大幅度的效率優(yōu)化。并與當(dāng)前現(xiàn)有的漏洞挖掘工具進(jìn)行測試對(duì)比,證明該工具可以高效的進(jìn)行漏洞挖掘。
網(wǎng)頁前端安全;漏洞挖掘;跨站腳本攻擊;模糊測試
隨著Web技術(shù)的高速發(fā)展和互聯(lián)網(wǎng)的大眾化,Web安全領(lǐng)域受到了越來越多的威脅。隨著Web技術(shù)的不斷發(fā)展、信息化建設(shè)的日漸成熟,在電子商務(wù)等領(lǐng)域Web應(yīng)用平臺(tái)正在得到越來越多的應(yīng)用,以協(xié)同的工作環(huán)境、社交網(wǎng)絡(luò)服務(wù)等為代表的Web技術(shù),在很大程度上正在改變?nèi)藗児ぷ骱徒涣鞯姆绞健2贿^,這些新技術(shù)的發(fā)展,一方面使商業(yè)活動(dòng)更加方便地發(fā)展,但與此同時(shí)也帶來了巨大的安全隱患。跨站腳本攻擊(Cross-site Scripting,XSS)是這些安全隱患中危害性比較大,存在范圍比較廣的一種漏洞攻擊。目前已有的XSS漏洞檢測挖掘工具和技術(shù)還不夠完善,存在檢測速度較慢、漏報(bào)率高等缺點(diǎn)[1]。
現(xiàn)有的工具如 Acunetix Web Vulnerability Scanner,Paros,xenotix等軟件都可以掃描檢測Web應(yīng)用程序存在的XSS漏洞。不過這些軟件在功能上均存在一些不足。如Acunetix Web Vulnerability Scanner 對(duì)框架式的Web應(yīng)用程序及含參超鏈的分析存在著不足。Paros 3.2.13針對(duì)可疑點(diǎn)測試時(shí)所使用payload較少而且缺乏可定制性,測試不完全,易造成漏報(bào)。而xenotix只能針對(duì)一個(gè)URL進(jìn)行分析,而且需要人工干預(yù)(查看頁面是否有對(duì)話框彈出),因此功能比較局限。
針對(duì)以上問題,本文提出了一種基于漏洞挖掘檢測模型設(shè)計(jì)的工具(下稱MJ Vulnerability Mining Tool),包括網(wǎng)絡(luò)爬蟲模塊和漏洞掃描模塊。它將對(duì)多種前端漏洞進(jìn)行掃描,會(huì)對(duì)一些可能出現(xiàn)XSS漏洞的切入點(diǎn)進(jìn)行分析處理。在爬蟲部分,針對(duì)漏洞挖掘系統(tǒng)的需求進(jìn)行了優(yōu)化,省去了很多不必要的頁面的爬取,節(jié)省了時(shí)間和系統(tǒng)資源。在漏洞挖掘部分,使用了自動(dòng)與人工判斷相結(jié)合,亦即Fuzzing技術(shù),取得了效率和準(zhǔn)確性的平衡。相比于 Acunetix Web Vulnerability Scanner,Paros等工具,降低了漏報(bào)率。
系統(tǒng)架構(gòu)如圖1所示:
圖1 MJ Vulnerability Mining Tool的系統(tǒng)架構(gòu)
包括爬蟲子系統(tǒng)、測試集生成子系統(tǒng)、測試集、Fuzz子系統(tǒng)四部分組成。出于對(duì)效率的考慮,子系統(tǒng)都使用了多線程。
爬蟲子系統(tǒng)(下稱MJ Crawler)包含了搜索器,用來進(jìn)行URL的檢索和提取。頁面下載器,用來發(fā)送HTTP請(qǐng)求并且接收網(wǎng)頁的響應(yīng)數(shù)據(jù)。URL篩選器,對(duì)不屬于挖掘范圍的URL進(jìn)行過濾,提高整體效率。
測試集生成子系統(tǒng)主要是通過一個(gè)既定的規(guī)則庫來對(duì)爬蟲爬取的URL進(jìn)行一個(gè)分類,生成對(duì)應(yīng)的測試集。
測試集子系統(tǒng)包含兩個(gè)測試集。分別為URL重定向測試集、反射型XSS測試集,分別對(duì)應(yīng)了兩種不同的漏洞。
Fuzz子系統(tǒng)則是非常關(guān)鍵的一個(gè)部分,因?yàn)樗鼘?duì)于挖掘的結(jié)果有著最為直接的影響。這里對(duì)于不同的測試集有不同的Fuzz系統(tǒng)。
網(wǎng)絡(luò)爬蟲(Crawler)是指通過網(wǎng)頁中的超鏈接地址來遍歷尋找網(wǎng)頁的程序,它從網(wǎng)站的某一個(gè)頁面開始(通常是主頁),讀取網(wǎng)頁的內(nèi)容,檢索出網(wǎng)頁中的所有超鏈接地址,然后將這些鏈接地址加入隊(duì)列中,尋找下一個(gè)網(wǎng)頁,如此一直循環(huán)下去,直到便利抓取這個(gè)網(wǎng)站的所有網(wǎng)頁。爬取網(wǎng)絡(luò)的策略大致分為兩種:深度優(yōu)先和廣度優(yōu)先[2]。
2.1模塊結(jié)構(gòu)
頁面獲取模塊:讀入起始URL,然后開始搜索。搜索完成后發(fā)送GET/POST請(qǐng)求數(shù)據(jù),將相關(guān)的response下載下來。一般通過多線程實(shí)現(xiàn)以提高運(yùn)行效率。
頁面分析模塊:得到下載下來的response,對(duì)其進(jìn)行分析,將頁面中所包含的鏈接提取出來。
鏈接過濾模塊:分析頁面分析中提取到的鏈接信息,例如刪除重復(fù)URL、無關(guān)URL等。
鏈接隊(duì)列模塊:包含一個(gè)由URL組成的隊(duì)列。
2.2頁面分析
對(duì)于Web頁面的分析是整個(gè)爬蟲流程的重點(diǎn),如圖2所示:
圖2 爬蟲的頁面分析部分流程圖
常用的方法是在服務(wù)器返回的HTML響應(yīng)中查找超鏈接標(biāo)簽。缺點(diǎn)在于效率不高,而且可能無法正確處理表單,對(duì)Web的頁面的分析產(chǎn)生偏差或者是錯(cuò)誤。而本文設(shè)計(jì)的工具在分析Web頁面時(shí)通過正則表達(dá)式來匹配,以匹配出需要的信息,無論從效率還是準(zhǔn)確性的角度上來說都更勝一籌。
例如在處理這類鏈接時(shí),使用如下的正則表達(dá)式:
在提取出該標(biāo)簽中的URL后,再進(jìn)一步對(duì)其進(jìn)行處理將其轉(zhuǎn)換為絕對(duì)路徑。然后需要對(duì)這個(gè)絕對(duì)路徑進(jìn)行一個(gè)過濾操作,將不屬于需要挖掘的站點(diǎn)的URL過濾掉。對(duì)于頁面中的表單同樣采取自定義的正則表達(dá)式進(jìn)行處理從而獲取所需要的數(shù)據(jù)。
標(biāo)簽