柳毅,洪俊斌
(廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,廣東 廣州 510006)
基于網(wǎng)絡(luò)爬蟲與頁面代碼行為的XSS漏洞動(dòng)態(tài)檢測方法
柳毅,洪俊斌
(廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,廣東 廣州 510006)
XSS漏洞是攻擊Web應(yīng)用程序、獲取用戶隱私數(shù)據(jù)的常見漏洞。傳統(tǒng)的XSS漏洞檢測工具并沒有對AJAX Web應(yīng)用程序進(jìn)行針對性的檢測,在檢測精度方面與實(shí)際情況存在巨大差距。針對這種情況,對AJAX技術(shù)下XSS漏洞的特點(diǎn)進(jìn)行了分析,提出了一種基于網(wǎng)絡(luò)爬蟲與頁面代碼行為的動(dòng)態(tài)檢測方法。實(shí)驗(yàn)結(jié)果表明,提出的方法在節(jié)省人力、時(shí)間成本與漏洞檢測方面有較好的表現(xiàn)。
XSS漏洞;網(wǎng)絡(luò)爬蟲;漏洞檢測;AJAX Web應(yīng)用
隨著Web 2.0時(shí)代的到來,Web程序告別了沉重的請求—返回的模式,采用了更輕便的局部刷新模式,提高了用戶體驗(yàn)。其中,AJAX(asynchronous JavaScript and XML,異步 JavaScript和 XML)[1]技術(shù)在 Web 2.0 中占據(jù)了主導(dǎo)地位。然而AJAX技術(shù)將一部分邏輯處理從服務(wù)器端轉(zhuǎn)移到客戶端,暴露了更多的接口[2],增加了許多針對Web應(yīng)用程序的安全威脅,其中嚴(yán)重程度最高的是跨站腳本(cross-site script,又稱 XSS)攻擊[3]。從國際開源安全組織[4](Open Web Application Security Project,OWASP)公布的 10 種最嚴(yán)重的Web應(yīng)用程序安全漏洞排行榜可知,跨站腳本攻擊一直處于前三的位置。Web 2.0時(shí)代后,跨站腳本攻擊與AJAX技術(shù)相結(jié)合,出現(xiàn)了新的特點(diǎn),可在用戶毫不知情的情況下進(jìn)行攻擊[5],威脅性更大。就目前而言,采取較多的行為都是被動(dòng)的防范措施,比如防火墻[6]等。這樣做明顯忽略了應(yīng)用程序級別的安全問題,使之在高層面缺乏有效的防范方式。對于Web應(yīng)用程序級別的安全,雖然有很多學(xué)者進(jìn)行了研究,但大多數(shù)還停留在Web 1.0時(shí)代,并沒有對異步傳輸進(jìn)行安全性檢測。參考文獻(xiàn)[7,8]雖然對AJAX有所提及,但并沒有進(jìn)行針對性的研究。所以針對大量使用AJAX技術(shù)的Web應(yīng)用程序,設(shè)計(jì)相關(guān)的XSS漏洞檢測工具是十分必要的。
本文提出了一種基于網(wǎng)絡(luò)爬蟲與頁面代碼行為的動(dòng)態(tài)檢測方法對AJAX Web應(yīng)用程序進(jìn)行XSS漏洞檢測。針對用戶提交的URL(uniform resource locator,統(tǒng)一資源定位符)[9]進(jìn)行爬蟲,提取數(shù)據(jù)輸入點(diǎn),完成錯(cuò)誤數(shù)據(jù)注入,再通過模擬攻擊對服務(wù)器進(jìn)行請求,對返回的頁面代碼行為進(jìn)行跟蹤與分析,得出XSS漏洞威脅。實(shí)驗(yàn)證明該方法效率較高,漏報(bào)率較低。
現(xiàn)有的XSS漏洞類型可分為3種基本類型:反射型XSS 攻擊(reflected/non-persistent XSS)[10]、存儲型 XSS 攻擊(stored/persistent XSS)[11]和 基 于 DOM (document object model)的 XSS 攻擊(DOM-based XSS)[12]。反射型 XSS 攻擊方式是通過服務(wù)器的錯(cuò)誤信息或檢索結(jié)果等手段將注入代碼“反射”回來。攻擊者構(gòu)造包含注入代碼的惡意鏈接,并通過某種方式將此惡意鏈接發(fā)送給受害者,受害者點(diǎn)擊訪問后,注入腳本便會(huì)將服務(wù)器返回的數(shù)據(jù)傳輸?shù)焦粽叩姆?wù)器上[13];存儲型XSS與反射型XSS最大的不同在于,惡意腳本將被永久性地存放在目標(biāo)服務(wù)器的數(shù)據(jù)庫中,瀏覽者在訪問時(shí)惡意腳本便會(huì)執(zhí)行,使瀏覽者受到攻擊[14];在基于DOM的XSS這類攻擊方式中,攻擊者是通過以下過程執(zhí)行JavaScript的:攻擊者設(shè)計(jì)有注入JavaScript代碼的惡意 URL[15],并發(fā)送給用戶,用戶進(jìn)行點(diǎn)擊訪問,瀏覽器會(huì)將返回的HTML(hypertext markup language,超文本標(biāo)記語言)代碼解析成DOM樹結(jié)構(gòu)[16],在這過程中,注入代碼便會(huì)被解析出來,從而導(dǎo)致基于DOM的XSS攻擊出現(xiàn),攻擊者就有可能獲取受害者電腦的重要權(quán)限[17]。
高效率的爬蟲算法能夠在短時(shí)間內(nèi)找到數(shù)據(jù)輸入點(diǎn),并且根據(jù)數(shù)據(jù)輸入點(diǎn)的類型,從數(shù)據(jù)庫中獲取錯(cuò)誤注入數(shù)據(jù),組 成 有 攻 擊 性的 get/post[18]請 求 注 入 系 統(tǒng) 中 ,如 果 產(chǎn) 生與從數(shù)據(jù)庫中獲取的注入數(shù)據(jù)相對應(yīng)的預(yù)期攻擊行為,就可以斷定Web應(yīng)用程序中存在XSS漏洞。在錯(cuò)誤數(shù)據(jù)進(jìn)行注入的同時(shí),要注意對程序中的合法過濾器進(jìn)行規(guī)避[19]。目前 有 很 多 XSS 漏 洞 掃 描 的 工 具 ,比 如 Paros[20]和X5S[21],它們并沒有對 AJAX技術(shù)下產(chǎn)生的 XSS漏洞進(jìn)行深入分析。針對這種情況,提出了一種基于網(wǎng)絡(luò)爬蟲與頁面代碼行為的動(dòng)態(tài)檢測方法來實(shí)現(xiàn)對AJAX Web應(yīng)用程序的XSS漏洞進(jìn)行檢測。
抓取數(shù)據(jù)輸入點(diǎn)的步驟如下:
(1)爬蟲對Web頁面的HTML代碼進(jìn)行掃描得到靜態(tài)URL;
(2)對頁面代碼中的 JavaScript腳本和JavaScript所添加的事件進(jìn)行提?。?/p>
(3)將提取到的 JavaScript代碼傳遞給JavaScript引擎編譯執(zhí)行,獲取動(dòng)態(tài)URL;
(4)存儲獲取到的 URL,采用散列表存儲方式高效率地將重復(fù)URL去除。
散列表中使用了雙重散列算法來解決沖突,其探測地址的方法如下:
其中,散列函數(shù)h1和h2的計(jì)算式如下:
二度散列的 h(URL,i)的值有可能會(huì)大于hashcapacity,所以對 h(URL,i)進(jìn)行模運(yùn)算,最終計(jì)算的散列地址為 h(URL,i)%hashcapacity。
爬蟲系統(tǒng)分為下載與分析兩個(gè)模塊,使用多線程同時(shí)運(yùn)行兩個(gè)模塊以提高爬蟲效率,如果硬件條件高,可分別在各個(gè)模塊中再次使用多線程進(jìn)行下載與分析。圖1是爬蟲系統(tǒng)運(yùn)行的流程。
圖1 爬蟲系統(tǒng)運(yùn)行流程
錯(cuò)誤數(shù)據(jù)注入的步驟如下:
(1)從爬蟲系統(tǒng)的散列表中,依次取出鏈接地址進(jìn)行請求,并分析得到頁面代碼;
(2)提取代碼中所有的表單元素;
(3)根據(jù)表單屬性(get/post)、頁面代碼和輸入?yún)^(qū)域的結(jié)構(gòu)對象計(jì)算出散列值;
(4)根據(jù)散列值關(guān)聯(lián)數(shù)據(jù)庫中自定義注入代碼進(jìn)行拼接,對服務(wù)器發(fā)出請求。
圖2是錯(cuò)誤數(shù)據(jù)注入的流程。
圖2 錯(cuò)誤數(shù)據(jù)注入流程
攻擊字符串是檢測漏洞的關(guān)鍵部分,用數(shù)據(jù)庫中的注入代碼來構(gòu)造有威脅的URL、表單或AJAX XMLHttpRequest對象,向服務(wù)器發(fā)送請求。結(jié)合JavaScript的執(zhí)行效果和語法,針對表單、URL和XMLHttpRequest對象類型的攻擊漏洞,表1列舉了部分攻擊字符串。
表1 攻擊字符串示例(部分)
3.3.1基于AJAX頁面代碼行為的XSS漏洞檢測算法
(1)增量地構(gòu)建AJAX返回的DOM樹狀態(tài);
(2)記錄返回?cái)?shù)據(jù)后的頁面代碼行為;
(3)檢測返回的代碼行為是否出現(xiàn)相對應(yīng)的惡意行為,判斷是否存在XSS漏洞。
偽代碼設(shè)計(jì)如下:
3.3.2 基于JavaScript的XMLHttpRequest檢測
在JavaScript代碼中,最關(guān)鍵的是XHR(XMLHttpRequest,可擴(kuò)展超文本傳輸請求)對象。該對象可以異步地向服務(wù)器發(fā)出請求,獲取新數(shù)據(jù),然后通過DOM將數(shù)據(jù)插入頁面中進(jìn)行局部刷新。這給攻擊者留下了一個(gè)很大的漏洞,攻擊者可使用XHR對象,注入錯(cuò)誤代碼,因此必須對AJAX XHR的漏洞檢測進(jìn)行特殊處理。
(1)收集JavaScript的文件信息,比如大小、文件名等,構(gòu)建JavaScript文件特征庫。
(2)檢測時(shí)將頁面獲取的JavaScript文件與文件特征庫中的文件進(jìn)行匹配判斷是否存在漏洞。
偽代碼設(shè)計(jì)如下:
為驗(yàn)證本文提出方法的可行性,采用Visual Studio 2015對本文提出的方法進(jìn)行C#編程實(shí)現(xiàn)XSS Finder工具,硬件方面主要采用主流的IBM-PC兼容機(jī),數(shù)據(jù)庫為SQLServer 2008 R2。下面從時(shí)間復(fù)雜度和檢測精度方面來評估XSS Finder工具。
為對比XSS Finder在時(shí)間復(fù)雜度上的優(yōu)勢,選用了常用的XSS漏洞檢測工具Paros和X5S進(jìn)行對比。采取方法是對每個(gè)Web應(yīng)用程序獨(dú)立掃描20次,算出平均掃描時(shí)間。圖3是3個(gè)軟件進(jìn)行掃描的時(shí)間對比。
圖3 爬蟲時(shí)間對比
由圖3可知,XSS Finder工具所消耗的時(shí)間是較低的。
對比XSS Finder與兩個(gè)軟件的檢測精度,采取的方法是選擇兩個(gè)網(wǎng)站,一個(gè)是某學(xué)校的官方網(wǎng)站,另一個(gè)是開源系統(tǒng),名字是PetStore,此系統(tǒng)是Java編寫的基于AJAX的Web應(yīng)用程序,3個(gè)軟件分別對網(wǎng)站進(jìn)行掃描與檢測,并對比最后的結(jié)果,具體見表2。
表2 工具查詢結(jié)果對比
從實(shí)驗(yàn)結(jié)果來看,XSS Finder檢測到的漏洞數(shù)和系統(tǒng)存在的漏洞數(shù)量是一致的,檢測到的數(shù)據(jù)入口點(diǎn)也符合實(shí)際情況,表明XSS Finder檢測漏洞的準(zhǔn)確性更好。
通過對AJAX技術(shù)下XSS漏洞的出現(xiàn)原因及檢測技術(shù)的研究,本文提出一種基于網(wǎng)絡(luò)爬蟲與頁面代碼行為的XSS漏洞檢測方法,與兩種常用的XSS漏洞檢測工具比較,在時(shí)間復(fù)雜度方面,對Web應(yīng)用程序獨(dú)立掃描20次的情況下,掃描時(shí)間更短,高效地解決了URL重復(fù)性的問題;在檢測精度方面,提出了對頁面代碼行為和XHR對象進(jìn)行檢測的方法,具有更高的漏洞檢測準(zhǔn)確性。
[1]DAHSE J.A vulnerabilityscannerfordifferentkindsof vulnerabilities [DB/OL]. [2015-04-09].http://rips-scanner.sourceforge.net,accessed.
[2]AN H Y,SONG Y,YU T,et al.A new architecture of AJAX Web application security crawler with finite-state machine [J].IEEE Computer Society,2014(27):112-117.
[3]OWASP.Cross site scripting prevention cheat sheet[EB/OL].(2013-12-26)[2014-03-26]. https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet.
[4]OWASP.Top ten project [EB/OL]. (2013-12-03)[2013-12-10].https://www.Cwasp.org/in dex.php/Category:OWASP-Top-Ten-Project.
[5]LI Z,XU X,LIAO L J,et al.Using templates combination to generate testing vectors dynamically indetecting Web applications vulnerabilities[J].Application Research of Computers,2015,32(10):3004-3009.
[6]CHEN J F,WANG Y D,ZHANG Y Q,et al.Automatic generation of attack vectors for stored-XSS [J].Journal of Graduate University of Chinese Academy of Sciences,2012,29(6):815-820.
[7]WANG X L,ZHANG Y Q.A behavior-based client defense scheme against XSS [J].Journal of Graduate University of Chinese Academy of Sciences,2011,25(5):668-675.
[8]CHEN J Q,ZHANG Y Q.Design and realization of Web cross-site scripting vulnerability detection tool [J].Computer Engineering,2010,36(6):152-158.
[9]JIANG H,XU Z Y,WANG X.XSS attack defense method based on behavior [J].Computer Engineering and Design,2014,35(6):1911-1925.
[10]GUO X B,JIN S Y,ZHANG Y X.XSS vulnerability detection using optimized attack vector repertory [J].IEEE Computer Society,2015(50):29-36.
[11]CUI B J,LONG B L,HOU T T.Reverse analysis method of static XSS defect detection technique based on database query language [C]//The Nineth International Conference on P2P,Parallel, Grid, Cloud and InternetComputing (3PGCIC),November 8-10,2014,Guangzhou,Guangdong,China.New Jersey:IEEE Press,2014:487-491.
[12]LIU W X,YU S Z.Research for ACK attacks in network coding[J].Journal of Chinese Computer Systems,2012,32(7):1354-1359.
[13]Rsnake. XSS(cross site scripting) cheat sheet [EB/OL].[2013-11-15].http://ha.Ckers.org /xss.html.
[14]WU H Q.White hatter talks about web security [M].Beijing:Publishing House of Electronics Industry,2013:152-178.
[15]GUPTA M K,GOVIL M C,SINGH G.Predicting cross-site scripting(XSS)security vulnerabilities in Web applications[C]//2015 12th International Joint Conference on Computer Science and Software Engineering (JCSSE),July 22-24,2015,Songkhla,Thailand.New Jersey:IEEE Press,2015:162-167.
[16]LI Y W,LIU Z X,DING S J.Technique for discovering stored XSS vulnerability based on tracing risky data [J].Computer Science,2014,41(11A):241-244.
[17]QIU Y H.The analysis and defense of XSS attack [M].Beijing:Posts&Telecom Press,2013.
[18]LIZ J,ZHANG JX,LIAO X K.Surveyofsoftware vulnerability detection techniques [J].Chinese Journalof Computers,2015,38(4):717-732.
[19]HALFOND W G J,ORSO A,MANOLIOS P.WASP:protecting web applications using positive tainting and syntax-aware evaluation[J].IEEE Transactions on Software Engineering,2008,34(1):65-81.
[20]SAYED B,TRAORE I.Protection against Web 2.0 client-side web attacksusinginformation flow control [J].The 28th International Conference on Advanced Information Networking and Applications Workshops (WAINA),May13-16,2014,Victoria,BC,USA.New Jersey:IEEE Press,2014:261-268.
[21]HELEN K,SARANDIS M,CHRISTOS D.An advanced web attack detection and prevention tool[J].Information Management&Computer Security,2011,19(5):280-299.
A dynamic detection method based on Web crawler and page code behavior for XSS vulnerability
LIU Yi,HONG Junbin
Faculty of Computer,Guangdong University of Technology,Guangzhou 510006,China
XSS vulnerability is a common vulnerability of attacking the Web application and getting the user’s privacy data.Traditional XSS vulnerability detection’s softwares aren’t specially detecting for AJAX Web application.There is a huge disparity in the inspection accuracy.According to this situation,the XSS vulnerability characteristics of AJAX Web applications were described in detail,and a dynamic detection method based on Web crawler and page code behavior was proposed.Experimental results show that the proposed method has good performance in labor-saving,time saving and vulnerability detection effect.
XSS vulnerabilitiy,Web crawler,vulnerabilitiy detecting,AJAX Web application
s:The National Natural Science Foundation of China(No.61572144),The Natural Science Foundation of Guangdong(No.2014A030313517), The Science and Technology Planning Project of Guangdong Province (No.2014A010103029, No.2013B040500009),The Science and Technology Planning Project of Guangzhou(No.201508010026,No.2014J4100201)
TP393.08
A
10.11959/j.issn.1000-0801.2016068
2015-11-09;
2016-01-26
國家自然科學(xué)基金資助項(xiàng)目(No.61572144);廣東省自然科學(xué)基金資助項(xiàng)目(No.2014A030313517);廣東省科技計(jì)劃基金資助項(xiàng)目(No.2014A010103029,No.2013B040500009);廣州市科技計(jì)劃基金資助項(xiàng)目(No.201508010026,No.2014J4100201)
柳毅(1976-),男,博士,廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院副教授,主要研究方向?yàn)榫W(wǎng)絡(luò)與信息安全。
洪俊斌(1990-),男,廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院碩士生,主要研究方向?yàn)榫W(wǎng)絡(luò)與信息安全。