亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于用戶(hù)行為模擬的XSS漏洞檢測(cè)

        2017-06-01 11:35:29丹,源,兵,華,
        關(guān)鍵詞:表單爬蟲(chóng)漏洞

        王 丹, 劉 源, 趙 文 兵, 付 利 華, 杜 曉 林

        ( 北京工業(yè)大學(xué) 計(jì)算機(jī)學(xué)院, 北京 100124 )

        基于用戶(hù)行為模擬的XSS漏洞檢測(cè)

        王 丹*, 劉 源, 趙 文 兵, 付 利 華, 杜 曉 林

        ( 北京工業(yè)大學(xué) 計(jì)算機(jī)學(xué)院, 北京 100124 )

        為改進(jìn)XSS漏洞檢測(cè)系統(tǒng)中對(duì)復(fù)雜網(wǎng)頁(yè)漏洞注入點(diǎn)發(fā)現(xiàn)不夠充分、動(dòng)態(tài)地分析目標(biāo)站點(diǎn)的響應(yīng)信息不足等問(wèn)題,改善XSS漏洞檢測(cè)系統(tǒng)的注入點(diǎn)提取、攻擊測(cè)試向量生成和響應(yīng)分析等,提出了基于用戶(hù)行為模擬的XSS漏洞檢測(cè)方法.通過(guò)分析網(wǎng)頁(yè)結(jié)構(gòu)找到多種非格式化注入點(diǎn),并通過(guò)綜合考慮字符串長(zhǎng)度、字符種類(lèi)等因素對(duì)攻擊向量進(jìn)行了優(yōu)化,以繞過(guò)服務(wù)器的過(guò)濾函數(shù),縮短漏洞測(cè)試所用的時(shí)間.測(cè)試結(jié)果表明所提方法提高了漏洞注入點(diǎn)的檢測(cè)覆蓋率,提升了XSS漏洞的檢測(cè)效果.

        XSS漏洞;檢測(cè);Headless瀏覽器;Ghost.py

        0 引 言

        近年來(lái),隨著網(wǎng)絡(luò)的廣泛使用,網(wǎng)絡(luò)安全問(wèn)題也日益突出.OWASP(Open Web Application Security Project)公布的2013年十大網(wǎng)絡(luò)應(yīng)用安全風(fēng)險(xiǎn)中,跨站腳本漏洞XSS(cross site scripting) 名列第3,已成為當(dāng)前各類(lèi)網(wǎng)站需共同面對(duì)的常見(jiàn)的安全風(fēng)險(xiǎn)之一.XSS漏洞攻擊是一種注入型的惡意攻擊方式,它通過(guò)某種手段向網(wǎng)頁(yè)中嵌入惡意的腳本代碼,用戶(hù)正常瀏覽該網(wǎng)頁(yè)時(shí),這些嵌入到網(wǎng)頁(yè)的惡意腳本代碼就會(huì)被客戶(hù)端瀏覽器自動(dòng)解析執(zhí)行,造成對(duì)正常用戶(hù)的攻擊,引發(fā)掛馬、釣魚(yú)、盜取用戶(hù)數(shù)據(jù)、劫持用戶(hù)網(wǎng)絡(luò)等惡意行為[1-2].XSS漏洞的產(chǎn)生源于未對(duì)來(lái)自用戶(hù)輸入的不可信數(shù)據(jù)進(jìn)行驗(yàn)證,以及反射回瀏覽器而沒(méi)有進(jìn)行編碼或轉(zhuǎn)義的情況下被網(wǎng)絡(luò)應(yīng)用程序所應(yīng)用.由于很多網(wǎng)絡(luò)應(yīng)用在開(kāi)發(fā)過(guò)程中忽略了必要及有效的輸入驗(yàn)證,就容易被跨站腳本攻擊.如何在大量網(wǎng)頁(yè)中找到隱藏的漏洞注入點(diǎn)并進(jìn)行漏洞檢測(cè)是防范XSS漏洞的關(guān)鍵之一,而且在網(wǎng)頁(yè)內(nèi)容日益豐富的今天,越來(lái)越多的網(wǎng)頁(yè)內(nèi)容會(huì)由Ajax和JavaScript 生成,人工檢測(cè)漏洞注入點(diǎn)顯然是不現(xiàn)實(shí)的,需要盡可能地采用自動(dòng)化的方法.目前,針對(duì)XSS漏洞檢測(cè)工具的研究還不是很充分[3-6],使用靜態(tài)爬蟲(chóng)框架如果要獲得由Ajax生成的內(nèi)容,需要對(duì)頁(yè)面的HTML代碼進(jìn)行解析,找到發(fā)送異步請(qǐng)求的方式以及目標(biāo)URL來(lái)加載Ajax,流程非常復(fù)雜,對(duì)隱藏式的漏洞注入點(diǎn)的覆蓋率很低.本文在設(shè)計(jì)網(wǎng)頁(yè)爬蟲(chóng)時(shí),采用了模擬瀏覽器行為的方法,像用戶(hù)操作一樣讓瀏覽器內(nèi)核來(lái)解析JavaScript和加載Ajax,使漏洞注入點(diǎn)的發(fā)現(xiàn)工作更有效和準(zhǔn)確.

        本文提出基于Headless瀏覽器模擬瀏覽器的網(wǎng)絡(luò)爬蟲(chóng)框架,改善傳統(tǒng)靜態(tài)爬蟲(chóng)對(duì)XSS漏洞注入點(diǎn)檢測(cè)覆蓋率小的不足;采用基于Ghost.py庫(kù)解析JavaScript和加載Ajax,并采用Beautiful Soup作為HTML解析器的解析方法,盡可能多地獲取網(wǎng)頁(yè)中的隱藏式漏洞注入點(diǎn)和非格式化漏洞注入點(diǎn),擴(kuò)大漏洞注入點(diǎn)獲取的覆蓋率.在漏洞攻擊測(cè)試向量的設(shè)計(jì)方面,通過(guò)綜合考慮字符串長(zhǎng)度、字符種類(lèi)等因素對(duì)XSS Filter Evasion Cheat Sheet[7]進(jìn)行優(yōu)化,并適當(dāng)應(yīng)用字符編碼對(duì)XSS攻擊向量進(jìn)行變形,合理使用冗余的尖括號(hào)或標(biāo)簽,以繞過(guò)服務(wù)器的過(guò)濾函數(shù),縮短漏洞檢測(cè)時(shí)間.

        1 檢測(cè)系統(tǒng)設(shè)計(jì)

        本文設(shè)計(jì)并實(shí)現(xiàn)的XSS漏洞檢測(cè)系統(tǒng)主要由爬蟲(chóng)模塊和漏洞檢測(cè)模塊組成.

        1.1 爬蟲(chóng)模塊

        爬蟲(chóng)模塊負(fù)責(zé)將網(wǎng)頁(yè)中的URL爬取出來(lái)供漏洞檢測(cè)模塊依次進(jìn)行檢測(cè).本文使用開(kāi)源的Ghost.py作為引擎,采用迭代的深度優(yōu)先爬蟲(chóng)策略,不斷地循環(huán)抓取網(wǎng)頁(yè)存入U(xiǎn)RL隊(duì)列.由于使用了瀏覽器引擎的API,該模塊可以動(dòng)態(tài)加載頁(yè)面,并觸發(fā)網(wǎng)頁(yè)中的事件以獲取JavaScript或Ajax生成的新的URL存入U(xiǎn)RL隊(duì)列.下面描述爬蟲(chóng)算法的設(shè)計(jì)和事件觸發(fā)過(guò)程.

        (1)爬蟲(chóng)算法

        網(wǎng)絡(luò)爬蟲(chóng)按照一定規(guī)則爬取特定網(wǎng)頁(yè)的程序或者腳本,它從一個(gè)或者若干初始網(wǎng)頁(yè)開(kāi)始,爬取頁(yè)面中符合規(guī)則的鏈接,然后將這些新鏈接放入等待爬取的URL隊(duì)列中.接著遍歷這個(gè)等待隊(duì)列,進(jìn)入下一個(gè)循環(huán),直到滿(mǎn)足設(shè)定好的結(jié)束條件后跳出循環(huán)終止.本文構(gòu)建了輕量的爬蟲(chóng)框架,采用的爬蟲(chóng)算法方案為迭代的深度優(yōu)先搜索.這是一種平衡深度優(yōu)先搜索和寬度優(yōu)先搜索的一個(gè)折中策略,其思想是對(duì)深度優(yōu)先搜索使用一個(gè)深度界限,一旦搜索的深度在某個(gè)層次以下,深度界限便強(qiáng)制停止對(duì)這條路徑的搜索.與深度優(yōu)先搜索相同,它的空間需求小,但分支可以達(dá)到和寬度優(yōu)先搜索一樣的效果,用戶(hù)可以設(shè)定該深度界限,當(dāng)這個(gè)值為0時(shí),系統(tǒng)只檢測(cè)當(dāng)前頁(yè)面.這樣一來(lái),方便了用戶(hù)在單頁(yè)面的漏洞檢測(cè)和全站的漏洞檢測(cè)功能間的切換.

        (2)觸發(fā)事件

        為了得到頁(yè)面中隱藏的DOM元素,本文借助Ghost.py觸發(fā)網(wǎng)頁(yè)中的事件,并通過(guò)Headless 瀏覽器對(duì)JavaScript和Ajax進(jìn)行解析.在這之前,需要找到網(wǎng)頁(yè)中可以觸發(fā)的事件,即含有事件屬性的標(biāo)簽.本文選用了Beautiful Soup庫(kù),可以很方便地搜索帶有事件屬性的標(biāo)簽,之后再用Ghost.py提供的API模擬瀏覽器行為觸發(fā)事件.下面的一段代碼是找到帶有onclick事件的標(biāo)簽并模擬點(diǎn)擊:

        list = soup.find_all(onclick=True)

        for tag in list:

        ghost.click(′′′*[onclick = "%s"]′′′ % tag[′onclick′], expect_loading=True)

        這段代碼可以將當(dāng)前頁(yè)面中所有含有點(diǎn)擊事件的標(biāo)簽點(diǎn)擊一遍,對(duì)事件進(jìn)行點(diǎn)擊后,可能引發(fā)瀏覽器解析JavaScript和加載Ajax,產(chǎn)生DOM元素的改變或者URL的跳轉(zhuǎn),對(duì)此需要采取不同的方式應(yīng)對(duì).如果跳轉(zhuǎn)到新的URL,存儲(chǔ)當(dāng)前URL并返回之前的頁(yè)面即可;若產(chǎn)生DOM元素,則需再次尋找是否出現(xiàn)了新的事件,直至不再產(chǎn)生DOM元素為止.相關(guān)過(guò)程如算法1所示.

        算法1 頁(yè)面DOM元素展開(kāi)算法

        輸入:第一次請(qǐng)求得到的頁(yè)面HTML代碼

        輸出:展開(kāi)后的頁(yè)面HTML代碼

        步驟1 獲取所有含有事件的標(biāo)簽存入tag_list,去除重復(fù)的標(biāo)簽.

        步驟2 模擬點(diǎn)擊tag_list中下一個(gè)未訪問(wèn)過(guò)的標(biāo)簽.若所有標(biāo)簽都被訪問(wèn)過(guò)則結(jié)束.

        步驟3 將該標(biāo)簽存入visit[],標(biāo)記為訪問(wèn)過(guò).

        步驟4 若頁(yè)面跳轉(zhuǎn),執(zhí)行步驟5;否則,執(zhí)行步驟6.

        步驟5 將跳轉(zhuǎn)后的頁(yè)面URL存入U(xiǎn)RL_list,執(zhí)行步驟2.

        步驟6 如果DOM元素改變,執(zhí)行步驟1.

        1.2 漏洞檢測(cè)模塊

        XSS漏洞檢測(cè)模塊包含頁(yè)面分析模塊和動(dòng)態(tài)判斷模塊,同樣使用Ghost.py作為引擎,通過(guò)Beautiful Soup庫(kù)進(jìn)行頁(yè)面內(nèi)容分析,提取注入點(diǎn).頁(yè)面分析模塊負(fù)責(zé)對(duì)爬取到的注入點(diǎn)進(jìn)行提取,動(dòng)態(tài)判斷模塊對(duì)注入點(diǎn)填充攻擊向量并提交攻擊請(qǐng)求.每次攻擊測(cè)試向量被提交后,均由動(dòng)態(tài)判斷模塊分析結(jié)果,判斷該注入點(diǎn)是否存在XSS漏洞并存儲(chǔ)結(jié)果.具體來(lái)說(shuō),就是用Ghost.py庫(kù)提供的API解析執(zhí)行JavaScript進(jìn)行攻擊向量的提交過(guò)程,以及根據(jù)部分響應(yīng)頁(yè)面的響應(yīng)信息判斷XSS漏洞是否存在.下面進(jìn)行具體介紹.

        頁(yè)面分析模塊主要負(fù)責(zé)提取注入點(diǎn)并將其存入注入點(diǎn)列表中.如前所述,執(zhí)行頁(yè)面中的事件、解析JavaScript和Ajax可以獲取頁(yè)面中的隱藏注入點(diǎn).而對(duì)于非格式化注入點(diǎn),則需要根據(jù)一定的匹配規(guī)則,將允許用戶(hù)輸入數(shù)據(jù)的元素和與之對(duì)應(yīng)的負(fù)責(zé)提交請(qǐng)求的元素從頁(yè)面中提取出來(lái).本文對(duì)現(xiàn)有的網(wǎng)絡(luò)環(huán)境中可能的注入點(diǎn)和交互點(diǎn)格式進(jìn)行了分析歸納,并按照這些可能的格式對(duì)注入點(diǎn)和交互點(diǎn)進(jìn)行查找.注入點(diǎn)與交互點(diǎn)的特征分類(lèi)如表1所示.“input”包含了HTML5環(huán)境下,input標(biāo)簽type屬性全部可能的值,其中一些type屬性的值可以使input允許用戶(hù)輸入數(shù)據(jù),它們位于表中的注入點(diǎn)一列;而另一些type屬性的值可以使input成為按鈕,允許用戶(hù)點(diǎn)擊,它們?cè)诒碇形挥诮换c(diǎn)一列.此外,注入點(diǎn)還可能以textarea標(biāo)簽存在.當(dāng)注入點(diǎn)是input標(biāo)簽時(shí),它的值存在value屬性中,而當(dāng)注入點(diǎn)是textarea標(biāo)簽時(shí),它的值可以通過(guò)innerHTML獲得.相比于注入點(diǎn)的格式,交互點(diǎn)的格式更加繁多,因此還需要通過(guò)分析頁(yè)面的DOM結(jié)構(gòu)來(lái)進(jìn)行提取.通常,注入點(diǎn)和其對(duì)應(yīng)的交互點(diǎn),以如下幾種結(jié)構(gòu)存在于HTML頁(yè)面中.

        表1 注入點(diǎn)與交互點(diǎn)的特征分類(lèi)

        〈input type="text" id="header_search_input" /〉

        〈input type="button" onclick="search($(′#header_search_input′).val())" /〉

        或者:

        〈input type="text" id="header_search_input" /〉

        〈div〉〈input type="button" onclick="search($(′#header_search_input′).val())" /〉〈/div〉

        又或者是更復(fù)雜的:

        〈div〉〈input type="text" id="header_search_input" /〉〈/div〉

        〈div〉

        〈div〉〈input type="button" onclick="search($(′#header_search_input′).val())" /〉〈/div〉

        〈div〉〈span class="SomeClass"〉Clickable〈/span〉〈/div〉

        〈/div〉

        對(duì)于第1種情況,獲取注入點(diǎn)時(shí)應(yīng)該將第1個(gè)input元素匹配為注入點(diǎn),并根據(jù)表中的信息,從第1個(gè)input的兄弟節(jié)點(diǎn)找到第2個(gè)input,匹配為其對(duì)應(yīng)的交互點(diǎn).對(duì)于第2種情況,如果第1個(gè)input的兄弟節(jié)點(diǎn)中沒(méi)有能夠匹配為交互點(diǎn)的標(biāo)簽,則從它的子節(jié)點(diǎn)中尋找.而對(duì)于較為復(fù)雜的第3種情況,第1個(gè)input的兄弟節(jié)點(diǎn)和子節(jié)點(diǎn)中均沒(méi)有能夠匹配為交互點(diǎn)的標(biāo)簽,則從第1個(gè)input的父節(jié)點(diǎn)開(kāi)始,按照之前的規(guī)則再尋找一遍.此時(shí),第2個(gè)input標(biāo)簽和span標(biāo)簽都有可能是注入點(diǎn)對(duì)應(yīng)的交互點(diǎn),因此,將它們都存入input的數(shù)據(jù)結(jié)構(gòu)中,之后的動(dòng)態(tài)判斷模塊會(huì)確定哪一個(gè)可以執(zhí)行提交請(qǐng)求的功能.網(wǎng)頁(yè)中的XSS漏洞注入點(diǎn)的解析過(guò)程如算法2所示.

        算法2 網(wǎng)頁(yè)中的XSS漏洞注入點(diǎn)的解析

        輸入:網(wǎng)頁(yè)源碼

        輸出:注入點(diǎn)列表

        步驟1 按照表1總結(jié)的注入點(diǎn)特征找到所有的標(biāo)簽,存入Input列表.

        步驟2 找到所有表單,存入Form列表.

        步驟3 對(duì)于Form列表中每個(gè)元素,同樣按照注入點(diǎn)特征找到該表單中的標(biāo)簽,并保存在該表單的輔助標(biāo)簽屬性中.

        步驟4 從Input列表中去掉和表單元素中相同的注入點(diǎn)標(biāo)簽.

        步驟5 對(duì)Input列表中每一個(gè)元素

        ①設(shè)置當(dāng)前位置cur為該Input元素在DOM樹(shù)中的位置.

        ②按照表1總結(jié)的交互點(diǎn)特征,從cur的所有兄弟節(jié)點(diǎn)及其子節(jié)點(diǎn)中找到交互點(diǎn),并保存在該注入點(diǎn)的對(duì)應(yīng)交互點(diǎn)列表中.如果不存在交互點(diǎn),執(zhí)行③.

        ③將cur賦值為cur的父節(jié)點(diǎn),執(zhí)行②.

        步驟6 結(jié)束.

        2 XSS漏洞攻擊向量

        目前,大部分網(wǎng)站都會(huì)對(duì)用戶(hù)提交的數(shù)據(jù)進(jìn)行一定程度的攔截、過(guò)濾和凈化[8-9],這種處理方式雖然在一定程度上緩解了攻擊的發(fā)生,但是仍不能從根本上消除漏洞[10].為了提高XSS漏洞動(dòng)態(tài)檢測(cè)的效果,本文針對(duì)網(wǎng)絡(luò)應(yīng)用中常見(jiàn)的數(shù)據(jù)過(guò)濾機(jī)制進(jìn)行了研究,采取了一些過(guò)濾機(jī)制的逃逸技術(shù)[11],并應(yīng)用這些技術(shù)對(duì)攻擊向量進(jìn)行優(yōu)化,將其應(yīng)用于提交攻擊向量階段中.過(guò)濾機(jī)制逃逸技術(shù)包括測(cè)試腳本編碼、混淆字符、JavaScript函數(shù)、層疊樣式表、畸形標(biāo)簽等方面的處理.最終,攻擊向量成為經(jīng)過(guò)優(yōu)化后的XSS Filter Evasion Cheat Sheet,相對(duì)于傳統(tǒng)的XSS Filter Evasion Cheat Sheet,測(cè)試樣例數(shù)量少,但效率更高,可以繞過(guò)很多XSS過(guò)濾器.

        2.1 XSS漏洞攻擊向量的生成

        首先,需要填寫(xiě)XSS攻擊向量.本文使用Ghost.py提供的填寫(xiě)表單的函數(shù)在表單欄填寫(xiě)XSS攻擊向量,如:

        ghost.set_field_value("input[name=%s]" % name, xss)

        考慮到注入點(diǎn)可能會(huì)存在前端驗(yàn)證,如限制輸入長(zhǎng)度、過(guò)濾某些字符等,這會(huì)導(dǎo)致一些XSS攻擊向量無(wú)法提交.本文設(shè)計(jì)了如下的使用JavaScript移除相關(guān)驗(yàn)證函數(shù)的方式繞過(guò)這些驗(yàn)證,以開(kāi)展攻擊注入:

        input.removeAttribute("onfocus");

        input.removeAttribute("placeholder");

        對(duì)于格式化注入點(diǎn),還可以使用如下的Ghost.py提供的模擬JavaScript語(yǔ)句來(lái)提交表單:

        ghost.evaluate("document.querySelector(′form′)[′submit′]();", expect_loading=True)

        本文設(shè)計(jì)的自動(dòng)填充攻擊向量并提交的算法可以歸納為算法3中的描述.

        算法3 自動(dòng)填充攻擊向量并提交

        輸入:格式化和非格式化注入點(diǎn)的列表

        輸出:漏洞檢測(cè)結(jié)果

        步驟1 遍歷格式化和非格式化注入點(diǎn)的列表.

        步驟2 如果為格式化注入點(diǎn),執(zhí)行步驟4.

        步驟3 如果為非格式化注入點(diǎn),遍歷其鏈接的所有交互點(diǎn).

        ①點(diǎn)擊當(dāng)前交互點(diǎn),模擬提交行為.

        ②如果提交成功,記錄該交互點(diǎn),執(zhí)行步驟4.

        步驟4 提交探子請(qǐng)求,如果在響應(yīng)頁(yè)面中檢測(cè)不到探子,執(zhí)行步驟1.

        步驟5 遍歷保存全部XSS攻擊向量的列表.

        步驟6 用當(dāng)前攻擊向量填充注入點(diǎn)并提交.

        步驟7 得到響應(yīng)頁(yè)面后,根據(jù)動(dòng)態(tài)檢測(cè)模塊提供的方法判斷是否存在XSS漏洞,如果存在執(zhí)行步驟8;否則執(zhí)行步驟1.

        步驟8 存儲(chǔ)漏洞在DOM中的位置、當(dāng)前頁(yè)面URL及其信息.

        步驟9 結(jié)束.

        2.2 漏洞的動(dòng)態(tài)判別

        漏洞的動(dòng)態(tài)判別就是在動(dòng)態(tài)提交攻擊向量后,通過(guò)對(duì)響應(yīng)結(jié)果進(jìn)行分析和判斷,得出漏洞是否存在的結(jié)果.一般的方法是先進(jìn)行探子請(qǐng)求.對(duì)于探子請(qǐng)求,如果在響應(yīng)頁(yè)面中檢測(cè)不到探子,檢測(cè)過(guò)程就會(huì)收到返回值,并跳過(guò)對(duì)全部預(yù)設(shè)的XSS攻擊向量的提交.如果被測(cè)試的某注入點(diǎn)存在XSS漏洞攻擊,在攻擊向量提交給服務(wù)器并返回響應(yīng)頁(yè)面后,提交的攻擊向量將會(huì)在瀏覽器中被解析執(zhí)行.其中,可分為如下幾種情況:

        (1)如果提交的是腳本型的攻擊向量,響應(yīng)頁(yè)面會(huì)執(zhí)行“alert(′XSS′);”代碼.此時(shí),本文動(dòng)態(tài)判斷模塊將調(diào)用Ghost.py的函數(shù)wait_for_alert(),該函數(shù)可檢測(cè)響應(yīng)頁(yè)面是否執(zhí)行了“alert(′XSS′);”代碼,如果執(zhí)行了,則可認(rèn)為該注入點(diǎn)存在XSS漏洞.

        (2)如果提交的是資源型攻擊向量,如攻擊系統(tǒng)資源、攻擊網(wǎng)絡(luò)帶寬等,響應(yīng)頁(yè)面會(huì)向指定的地址即http://wedge.sinaapp.com發(fā)送一個(gè)請(qǐng)求,攻擊向量不同,請(qǐng)求的路徑也不同.不同的請(qǐng)求會(huì)調(diào)用響應(yīng)邏輯將第三方服務(wù)器的數(shù)據(jù)庫(kù)中某一行數(shù)據(jù)修改為不同的值.之后,本文的漏洞檢測(cè)模塊會(huì)發(fā)出一個(gè)對(duì)第三方服務(wù)器的請(qǐng)求以獲得這一行數(shù)據(jù),如果這一行數(shù)據(jù)被修改成了請(qǐng)求中預(yù)設(shè)的值,那么則可認(rèn)為該注入點(diǎn)存在XSS漏洞.

        3 測(cè)試與結(jié)果分析

        本文將DVWA[12]作為測(cè)試程序,DVWA是用PHP和MySQL編寫(xiě)的一套用于常規(guī)漏洞教學(xué)和檢測(cè)的脆弱性測(cè)試程序,包含了SQL注入、XSS等常見(jiàn)的一些安全漏洞.同時(shí),本文在本地搭建了PHP和MySQL環(huán)境并使用XAMPP,它是一個(gè)集成了Apache、MySQL、PHP以及PERL的功能強(qiáng)大的建站集成軟件包,支持Windows、Linux和OS X操作系統(tǒng),并提供phpMyAdmin、Webalizer等搭建網(wǎng)絡(luò)環(huán)境的常用工具及組件.在本地安裝完XAMPP和DVWA后,將DVWA應(yīng)用移動(dòng)到XAMPP安裝目錄下的htdocs文件夾中,搭建DVWA的工作就完成了.啟動(dòng)XAMPP應(yīng)用,輸入網(wǎng)址http://127.0.0.1/dvwa即可查看首頁(yè).

        3.1 功能測(cè)試

        本文首先對(duì)DVWA進(jìn)行漏洞檢測(cè).通過(guò)Ghost.py提供的API模擬登錄,并將脆弱性測(cè)試程序的安全等級(jí)設(shè)置為中等:

        ghost.open(′http://127.0.0.1/dvwa/′)

        ghost.fill("form", {"username": ′admin′, "password": ′password′})

        ghost.click(′input[type=submit]′, expect_loading=True)

        ghost.open(′http://127.0.0.1/dvwa/security.php′)

        ghost.evaluate("document.getElementsByName(′security′)[0].value = ′medium′;")

        ghost.click(′input[type=submit]′, expect_loading=True)

        安全等級(jí)為中等時(shí),XSS表單服務(wù)器代碼為

        〈?php

        if(!array_key_exists("name", $_GET) || $_GET[′name′] == NULL || $_GET[′name′] == ′′) {

        $isempty = true;

        } else {

        echo ′〈pre〉′;

        echo ′Hello ′ . str_replace(′〈script〉′, ′′, $_GET[′name′]);

        echo ′〈/pre〉′;

        }

        ?〉

        從后臺(tái)邏輯可以看出,符合不帶有〈script〉標(biāo)簽且可以執(zhí)行的腳本都能夠繞過(guò)該過(guò)濾函數(shù).這一點(diǎn)可從下面程序運(yùn)行時(shí)顯示的結(jié)果中看出:

        〈IMG SRC=http://wedge.sinaapp.com/4〉

        〈BODY ONLOAD=alert(′XSS′)〉

        〈META HTTP-EQUIV="refresh"CONTENT="0;url=javascript:alert(′XSS′);"〉

        這個(gè)結(jié)果符合之前對(duì)后臺(tái)代碼邏輯的分析,說(shuō)明使用本文的方法可以成功檢測(cè)出表單是否具有XSS漏洞.由于篇幅有限,這里不列出檢測(cè)結(jié)果的界面.

        之后,將本文設(shè)計(jì)的系統(tǒng)用于檢測(cè)整個(gè)DVWA包含的網(wǎng)頁(yè),共計(jì)訪問(wèn)了19個(gè)頁(yè)面,總共涉及8個(gè)注入點(diǎn),測(cè)試了8個(gè)注入點(diǎn),最終檢測(cè)出http://127.0.0.1/dvwa/vulnerabilities/xss_r/頁(yè)面上的表單存在反射型XSS漏洞,http://127.0.0.1/dvwa/vulnerabilities/xss_s/頁(yè)面上的表單存在存儲(chǔ)型XSS漏洞.

        3.2 對(duì)比測(cè)試

        本文的設(shè)計(jì)方案在對(duì)比中命名為XSS scanner based on Headless browser,與XSS-Me、WebInspect、Acunetix Web Vulnerability Scanner 及Paros Proxy進(jìn)行對(duì)比測(cè)試.測(cè)試目標(biāo)網(wǎng)站為南方周末網(wǎng)和大街網(wǎng).

        XSS-Me是一個(gè)用于測(cè)試反射型XSS漏洞的漏洞檢測(cè)工具,目前還不支持存儲(chǔ)型XSS漏洞的測(cè)試.它的原理是在提交表單時(shí),用預(yù)定義的XSS攻擊向量替換表單中的參數(shù)值,以進(jìn)行測(cè)試,它可以自動(dòng)尋找注入點(diǎn)并提交請(qǐng)求.

        WebInspect是一款自動(dòng)化的網(wǎng)絡(luò)應(yīng)用漏洞評(píng)估系統(tǒng).它支持對(duì)目前應(yīng)用Web 2.0技術(shù)的網(wǎng)站進(jìn)行手動(dòng)輔助檢測(cè),具有掃描速度快、安全評(píng)估范圍廣和安全掃描結(jié)果準(zhǔn)確的優(yōu)點(diǎn).并且許多傳統(tǒng)掃描工具無(wú)法識(shí)別的安全漏洞也可以被WebInspect檢測(cè)到.

        Acunetix Web Vulnerability Scanner簡(jiǎn)稱(chēng)AWVS,是一個(gè)自動(dòng)化的網(wǎng)絡(luò)應(yīng)用程序安全測(cè)試工具,它通過(guò)網(wǎng)絡(luò)爬蟲(chóng)檢測(cè)網(wǎng)站中含有的常見(jiàn)的安全漏洞,包括XSS漏洞、SQL注入和弱口令等.優(yōu)點(diǎn)是掃描速度快、漏洞發(fā)現(xiàn)率高.

        Paros Proxy是一個(gè)基于Java的HTTP/HTTPS代理,可以用于檢測(cè)網(wǎng)絡(luò)應(yīng)用程序的漏洞.它通過(guò)網(wǎng)絡(luò)爬蟲(chóng)爬取整個(gè)網(wǎng)站并檢測(cè)其中的安全漏洞.它帶有內(nèi)置的實(shí)用工具,可以代理HTTP業(yè)務(wù),支持動(dòng)態(tài)地編輯、查看HTTP消息等.

        從表2中可以看出,對(duì)于頁(yè)面格式較為簡(jiǎn)單的南方周末網(wǎng),現(xiàn)有工具基本都能檢測(cè)出存在XSS漏洞,而對(duì)于頁(yè)面格式較為復(fù)雜,包含隱藏注入點(diǎn)和非格式化注入點(diǎn)較多的大街網(wǎng),不含有解析JavaScript和分析頁(yè)面DOM格式功能的漏洞檢測(cè)工具就無(wú)法檢測(cè)出其中的漏洞.

        表2 對(duì)比測(cè)試

        4 結(jié) 語(yǔ)

        本文的XSS漏洞檢測(cè)方法可以很好地完成包括尋找隱藏式注入點(diǎn)、觸發(fā)攻擊的工作,提高了注入點(diǎn)發(fā)現(xiàn)的覆蓋率,有效判定其引發(fā)的XSS漏洞,并且更加方便,易于二次開(kāi)發(fā).本文的研究仍需進(jìn)一步的完善,包括:嘗試引入多線程的架構(gòu)以提高爬蟲(chóng)執(zhí)行效率,將本文的方法應(yīng)用于其他注入式漏洞,如SQL注入等,可擴(kuò)大應(yīng)用范圍,并根據(jù)應(yīng)用結(jié)果加以完善.

        [1] ANTUNES N, VIEIRA M. Enhancing penetration testing with attack signatures and interface monitoring for the detection of injection vulnerabilities in web services [C] // Proceedings — 2011 IEEE International Conference on Services Computing, SCC 2011. Piscataway: IEEE Computer Society, 2011:104-111.

        [2] 吳子敬,張憲忠,管 磊,等. 基于反過(guò)濾規(guī)則集和自動(dòng)爬蟲(chóng)的XSS漏洞深度挖掘技術(shù)[J]. 北京理工大學(xué)學(xué)報(bào), 2012, 32(4):395-401.

        WU Zijing, ZHANG Xianzhong, GUAN Lei,etal. Technique for deep discovering XSS vulnerability based on anti-filter rules set and automatic crawler program [J]. Transactions of Beijing Institute of Technology, 2012, 32(4):395-401. (in Chinese)

        [3] 沈壽忠,張玉清. 基于爬蟲(chóng)的XSS漏洞檢測(cè)工具設(shè)計(jì)與實(shí)現(xiàn)[J]. 計(jì)算機(jī)工程, 2009, 35(21):151-154. SHEN Shouzhong, ZHANG Yuqing. Design and implementation of XSS vulnerability detection tool based on crawler [J]. Computer Engineering, 2009, 35(21):151-154. (in Chinese)

        [4] CHEN Janmin, WU Chialun. An automated vulnerability scanner for injection attack based on injection point [C] // ICS 2010 — International Computer Symposium. Piscataway: IEEE Computer Society, 2010:113-118.

        [5] VAN DEURSEN A, MESBAH A, NEDERLOF A. Crawl-based analysis of web applications:Prospects and challenges [J]. Science of Computer Programming, 2015, 97(P1):173-180.

        [6] WAN Fangfang, XIE Xusheng. Mining techniques of XSS vulnerabilities based on web crawler [J]. Applied Mechanics and Materials, 2014, 556-562:6290-6293.

        [7] OWASP. XSS filter evasion cheat sheet [EB/OL]. (2016-10-04). https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet.

        [8] SUNDARESWARAN S, SQUICCIARINI A C. XSS-Dec:A hybrid solution to mitigate cross-site scripting attacks [C] // Data and Applications Security and Privacy XXVI — 26th Annual IFIP WG 11.3 Conference, DBSec 2012, Proceedings. Heidelberg:Springer Verlag, 2012:223-238.

        [9] ANTUNES J, NEVES N, CORREIA M,etal. Vulnerability discovery with attack injection [J]. IEEE Transactions on Software Engineering, 2010, 36(3):357-370.

        [10] THUMMALAPENTA S, LAKSHMI K V, SINHA S,etal. Guided test generation for web applications [C] // 2013 35th International Conference on Software Engineering, ICSE 2013 — Proceedings. Washington D C: IEEE Computer Society, 2013:162-171.

        [11] 王 欣. WEB應(yīng)用系統(tǒng)安全檢測(cè)關(guān)鍵技術(shù)研究[D]. 北京:北京郵電大學(xué), 2011.

        WANG Xin. Research on key technologies of web application security detection [D]. Beijing: Beijing University of Posts and Telecommunications, 2011. (in Chinese)

        [12] Dewhurst Security. Damn Vulnerable Web App(DVWA) [CP/OL]. [2016-01-10]. http://www.dvwa.co.uk/.

        XSS vulnerability detection based on user′s behavior simulation

        WANG Dan*, LIU Yuan, ZHAO Wenbing, FU Lihua, DU Xiaolin

        ( College of Computer Science, Beijing University of Technology, Beijing 100124, China )

        To deal with the problems, such as low coverage of found vulnerability injection points in complex web page, lacking of dynamical analysis for response message from target website faced by the detection system of XSS vulnerability, a method to detect XSS vulnerability based on user′s behavior simulation is proposed to make improvement for the detection system of XSS vulnerability on extracting injection points, generating attack test vector and analyzing response results. By searching for a variety of the unformatted injection points through analyzing web page structure as well as taking into consideration the length of the string and the type of the character, the attack test vector is optimized and it can bypass the server filter function and shorten the vulnerability detection time. Test results show that the proposed method can improve the detection coverage rate of the injection point and the detection effect of XSS vulnerability.

        XSS vulnerability; detection; Headless browser; Ghost.py

        1000-8608(2017)03-0302-06

        2016-07-05;

        2017-01-17.

        國(guó)家自然科學(xué)基金重大研究計(jì)劃培育項(xiàng)目(91546111);北京市自然科學(xué)基金資助項(xiàng)目(4173072).

        王 丹*(1969-),女,教授,E-mail:neuwd@sina.com.cn.

        TP308

        A

        10.7511/dllgxb201703013

        猜你喜歡
        表單爬蟲(chóng)漏洞
        利用網(wǎng)絡(luò)爬蟲(chóng)技術(shù)驗(yàn)證房地產(chǎn)灰犀牛之說(shuō)
        漏洞
        電子表單系統(tǒng)應(yīng)用分析
        華東科技(2021年9期)2021-09-23 02:15:24
        基于Python的網(wǎng)絡(luò)爬蟲(chóng)和反爬蟲(chóng)技術(shù)研究
        淺談網(wǎng)頁(yè)制作中表單的教學(xué)
        利用爬蟲(chóng)技術(shù)的Geo-Gnutel la VANET流量采集
        大數(shù)據(jù)環(huán)境下基于python的網(wǎng)絡(luò)爬蟲(chóng)技術(shù)
        電子制作(2017年9期)2017-04-17 03:00:46
        三明:“兩票制”堵住加價(jià)漏洞
        漏洞在哪兒
        高鐵急救應(yīng)補(bǔ)齊三漏洞
        人妻系列中文字幕av| 国产亚洲午夜高清国产拍精品| 欧美成人片在线观看| 亚洲一线二线三线写真| 亚洲色大成网站www尤物| 欧美破处在线观看| 毛片av在线尤物一区二区| 久久中文字幕国产精品| 国产一区二区黄色的网站| 精品高朝久久久久9999| 最近中文字幕免费完整版| 白又丰满大屁股bbbbb| 亚州AV无码乱码精品国产| 国产无遮挡又黄又爽无VIP| 国产三区二区一区久久| 亚洲精品国产电影| 无码午夜成人1000部免费视频| 亚洲欧洲精品成人久久曰影片| 琪琪av一区二区三区| 欧美又大粗又爽又黄大片视频| 老外和中国女人毛片免费视频| 午夜短无码| 免费国产不卡在线观看| 精品国产一区二区三区av天堂| 少妇被爽到高潮喷水久久欧美精品 | 国产在线一区二区三精品乱码| 国产午夜精品一区二区三区嫩草| 藏春阁福利视频| 亚洲电影一区二区三区| 91久久精品一二三区色| 久久久久久av无码免费网站下载| 亚洲av中文无码乱人伦在线播放| 青草热久精品视频在线观看| 欧洲亚洲色一区二区色99| 国产精品午夜福利天堂| 亚洲精品无码久久久久y| 日本中文字幕一区二区高清在线| 欧美成人一区二区三区在线观看| 日本一区二区三区中文字幕视频| 国产又黄又湿又爽的免费视频| 在线观看午夜视频一区二区|