999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種自動化的跨站腳本漏洞發現模型

2018-08-17 01:23:06馬富天
計算機工程 2018年8期
關鍵詞:頁面檢測模型

馬富天,,

(江南大學 物聯網工程學院 物聯網技術應用教育部工程研究中心,江蘇 無錫 214122)

0 概述

跨站腳本(Cross-site Scripting,XSS)是當前最為普遍的Web安全漏洞之一。根據OWASP(Open Web Application Security Project)開放式Web應用程序安全項目在2007年—2017年期間進行了四次十大Web應用安全漏洞統計,報告顯示跨站腳本攻擊一直高居前列,是黑客攻擊Web應用的主要手段之一。根據XSS攻擊方式及特征,可以將它分為反射型跨站腳本(reflected-XSS)、存儲型跨站腳本(stored-XSS)和基于文檔對象模型的跨站腳本(DOM-based XSS)[1],其中,存儲型跨站攻擊的危害較大。產生跨站腳本的直接原因是由于Web應用程序缺少對用戶輸入的數據進行有效驗證與過濾[2-3]。攻擊者利用存在的漏洞把惡意腳本注入到頁面中,當用戶瀏覽這些頁面時,會觸發頁面中惡意腳本的執行,對受害者發起信息盜取、會話劫持、網頁木馬掛載及破壞頁面結構等各類攻擊。

通常檢測跨站腳本的方法主要有靜態分析、動態分析和動靜結合方式檢測[4]。靜態分析是通過審核源代碼的方式來挖掘潛在的漏洞,如文獻[5-6],其檢測準確率和效率比動態分析方法高一些。但在多數情況下,檢測人員都無法直接獲得Web應用的源代碼,并且它對程序邏輯數據處理中出現的問題不能有效的檢測,對編程語言的類型也有一定的要求,同時其檢測能力也受限于源代碼的框架,可擴展性能力較差。動態分析是指在無需源代碼的前提下,采用模糊測試的方法來挖掘漏洞。在動態分析方法中,文獻[7]通過分析HTML5的新標簽、新屬性,引入了14個HTML5元素相關的初始攻擊向量,基于這些攻擊向量構建了攻擊向量庫,實現一個側重于Webmail系統的動態跨站腳本檢測工具,該工具能夠有效的利用基于HTML5的攻擊向量檢測出系統中的XSS。文獻[8]提出通過攻擊向量規則庫生成初始攻擊向量,然后對初始攻擊向量使用機器學習算法進行優化,大幅度的減少初始攻擊向量庫的大小,得到最后的攻擊向量庫。

本文針對反射型和存儲型跨站腳本漏洞,提出一種動態檢測XSS的方法。該方法首先通過自動爬蟲爬取并分析Web應用的所有頁面及注入點,然后根據輸入點、輸出點類型自動生成合法向量與攻擊向量,在攻擊過程中自適應調整攻擊向量的優先級,優先選取當前時刻優先級較高的攻擊向量類型,向服務器提交HTTP請求,根據反饋信息判斷漏洞是否存在,待整個攻擊過程結束,對站點進行二次遍歷,重新檢測每個頁面中尚未被驗證的攻擊向量。

1 測試向量

Web應用程序為了避免受到跨站腳本攻擊,所有的不受信數據都必須要經過過濾模塊才能被寫入數據庫或返回至客戶端瀏覽器。過濾模塊是指Web應用程序中用來過濾或凈化用戶所輸入的數據以防止引起跨站腳本攻擊的函數或模塊。過濾模塊比較常用的方法[9]包括黑名單過濾,一般使用正則表達式進行合法性校驗;另一種做法是只接收已知的合法數據(白名單過濾)或對輸入長度與編碼進行限制;最后一種方法是將特殊字符或標簽轉成無害的。

因此,為了能夠充分測試過濾模塊是否有效,需要精心地構造出盡可能全面且有效的測試向量來繞過各種驗證函數,從而挖掘出由于過濾模塊過濾不夠全面而造成的跨站腳本。測試向量包括攻擊向量、合法向量。傳統的檢測方法在攻擊過程中,對每個注入點的所有注入變量同時發送攻擊向量,但這會極大降低攻擊的成功率。本文模型提出在發送攻擊的過程中,每次攻擊僅對注入點的某個注入變量發送攻擊向量,而其他的注入變量使用合法向量。

1.1 攻擊向量

針對Web應用程序過濾模塊可能采取的過濾方式[10],表1列舉部分常見的過濾方式,可依此制定出能夠繞過過濾模塊的攻擊向量。

表1 Web應用程序過濾方式

攻擊向量即指能夠執行JavaScript代碼的惡意字符串(例如:),攻擊向量的類型多種多樣。通過分析許多著名安全工程師共同總結出的XSS Cheat Sheet(XSS過濾繞過備忘單)[11],本文在HTML4元素的基礎上,也引入了HTML5新標簽、新屬性構建了基本候選元素庫(見表2),并構造出基于HTML5的攻擊向量(見表3),最后總結出初始攻擊向量種子庫(見表4)。初始攻擊向量種子庫是指所有尚未經過格式變換的已知的可以用于跨站攻擊的XSS代碼集合,庫中的每一個XSS代碼都代表了一種XSS攻擊類型。

表2 基本候選元素庫

表3 基于HTML5的攻擊向量示例

表4 初始攻擊向量種子庫

如果在Web應用的過濾模塊中,對某種編碼格式不支持的話,則可能通過編碼格式轉換的方式來繞過過濾[12-13]。在實際中,攻擊者會對攻擊向量做各種形式的變換來試圖規避過濾模塊對用戶輸入進行的過濾和凈化。其中編碼變換有十六進制編碼、八進制編碼或UTF-8編碼等。在初始攻擊向量經過變換規則(見表5)變形后,添加模糊前綴,得到最終的攻擊向量。針對不同的輸出點類型應該選取相應的攻擊向量種子(見表6),才能夠在該輸出點位置上觸發JavaScript代碼的執行。最后,由于僅通過攻擊向量自動生成算法構造的攻擊向量并不能完全涵蓋所有的類型,因此本文模型另外構建了攻擊向量靜態庫作為補充,使其覆蓋范圍更為全面。

表5 攻擊向量變換規則庫

表6 攻擊向量輸出點類型

1.2 合法向量

傳統檢測方法沒有針對合法向量的選取與生成進行詳細分析,但合法向量的選取也是至為重要的。若僅使用數字與字母組合隨機生成的字符串作為合法向量,極為可能無法繞過過濾模塊,導致注入失敗。因此,本文提出根據表單相關信息(即輸入點類型),構造出相應的合法向量。

例如:對于表單元素,通過有效信息可以判斷需要輸入的是郵箱地址,因此,自動生成向量如:xSs_sCanner123@test.com等,對于,通過分析相關有效信息可以判斷需要輸入的是網址,可生成向量如:http://www.scanner1.com等。表7列舉部分表單元素相關信息,利用這些信息有助于生成更加準確有效的合法向量。

表7 表單元素相關信息

2 總體結構與檢測流程

本文模型總體結構(如圖1所示)主要分為3個模塊,分別是注入點分析模塊、測試向量挖掘模塊、攻擊與分析模塊。各個模塊之間通過查詢與操作session對象或數據庫來完成相互協作。

圖1 本文模型總體結構

2.1 注入點分析模塊

完整、準確、高效地挖掘出所有頁面及漏洞注入點是增強檢測能力、減少漏報誤報的關鍵問題之一,注入點分析模塊(如圖2所示)在檢測中起著重要的作用。當前,網頁提供給用戶輸入數據的方式各式各樣,而傳統檢測中爬蟲的功能較為單一(如文獻[14]),僅能夠提取出表單內容,比較難解析基于JavaScript或Ajax的提交方式,對于需要登錄后才能夠訪問的頁面無法獲取到。為了獲取更為全面的注入點,將跨站腳本攻擊的注入點可大致分為3類:1)表單輸入類;2)含參數的url類;3)基于JavaScript或Ajax的數據提交方式。注入點分析模塊通過爬蟲爬取目標站點的所有頁面,并分析頁面以獲取注入點及相關信息。本文采用多線程網絡爬蟲,在爬取過程中采取廣度優先搜索策略,使用正則表達式匹配頁面中的url,過濾不屬于目標站點的url,并將相對路徑的url轉成絕對路徑加入到待爬取隊列中,同時使用Bloom Filter算法[15]對url進行去重。

圖2 注入點分析模塊結構

在整個爬取過程中需要與Web服務器進行多次交互,針對一些需要登錄后才能訪問的頁面,需要保持會話狀態,否則在訪問頁面時Web應用會拒絕訪問或者頁面重定向。本文方法運用cookie技術來解決這一問題,預先輸入用戶登錄的相關信息(如賬號、密碼等)以獲取返回的cookie信息,并需要將退出登錄的鏈接從待爬取url集合中刪去,當再次訪問頁面時,則將相應的cookie信息添加到爬蟲的HTTP請求協議頭中,使其能夠在爬取過程中保持會話狀態,以獲取更多頁面。

在爬取url的過程中,分析注入點,將含參的url類與基于Ajax的數據提交類注入點使用表單類形式保存,統一注入點形式,同樣也需對注入點進行去重處理。

2.2 測試向量生成模塊

由第1節提供的攻擊向量基本候選元素庫,以及攻擊向量變換規則庫,并添加模糊數據,例如注釋、空白符、tab鍵等,且動態生成模糊前綴,生成最終的攻擊向量(見表8)。

表8 最終的攻擊向量

2.3 檢測與分析模塊

并非所有用戶能夠輸入數據的地方都能夠導致跨站腳本的產生。發生反射型和存儲型跨站腳本攻擊的必要條件是用戶輸入的數據能夠在某一個時刻被Web應用程序調用且加載到Web頁面中。

傳統檢測方法將攻擊向量提交至漏洞注入點,且對該注入點的所有注入變量同時使用攻擊向量進行攻擊,在攻擊過程中判斷漏洞是否存在只需檢測響應頁面中是否含有該攻擊向量,就能大致判斷漏洞是否存在。但這種檢測方法是不完善的,易造成漏報誤報,因為攻擊向量不僅可能出現在服務器響應頁面中,還可能某一個時刻出現在其他任何頁面中,并且在同一頁面中也可能有若干個不同的輸出點類型(如圖3所示)。

圖3 輸入數據輸出終點的處理過程示意圖

在檢測效率方面,傳統檢測方法針對每個注入點,將攻擊向量庫中的攻擊向量全部提交完成后才判斷漏洞是否存在,這樣會大大降低檢測效率。在現有動態生成攻擊向量的方法中,對于攻擊向量的選取大多數采用隨機選取方法,其優點在于簡單快速,易于理解與實現,但由于隨機選取方法中并沒有利用其他任何相關的信息,其檢測能力往往不是很理想。因此,如何使用較少的攻擊向量來盡快發現漏洞是尤為重要的。

為解決上述問題,本文提出單次攻擊只對某一注入點的某一個注入變量在某一輸出點類型上進行攻擊。首先,在檢測過程中根據注入變量的輸出點類型自動生成攻擊向量,并隨著當前時刻的檢測結果自適應調整攻擊向量優先級,優先選取攻擊成功概率較高的攻擊向量類型,以盡可能早地發現漏洞,彌補隨機選取方法的不足。

為了對不同漏洞注入點注入的攻擊向量進行區分,需要對每個注入點的某一個注入變量的攻擊向量分配一個唯一的標識(即攻擊向量ID),同時其他的注入變量根據輸入點類型自動選取相應合法向量,向Web應用服務器發送Get或Post請求。當檢測到特殊字符如<,>等標簽已經被后臺實體化或過濾后,導致無法執行腳本代碼,則停止對此注入點變量的攻擊。另外,將獲取到的輸出點類型攻擊完畢之后,若依舊沒有發現漏洞,則對每個注入變量都需要提交其他尚未選取的輸出點類型自動選取對應的攻擊向量進行攻擊,避免在其他頁面中有不同輸出點類型中出現,造成漏報。在判斷攻擊是否成功的過程中,將分析頁面范圍擴大至注入點展示頁面、請求頁面以及服務器響應頁面,判斷漏洞存在當且僅當攻擊向量類型與輸出點類型相符合,并且攻擊向量ID與注入點變量相匹配,能夠觸發腳本代碼,才判定漏洞存在,這樣可以降低誤報率。

當所有注入點被攻擊完成后,對整個網站進行二次遍歷,檢測尚未被驗證的注入變量。如圖3所示,用戶輸入的數據可能在任何頁面的任何輸出點位置上,且每個輸出點位置可能是不同的輸出點類型,因此,僅僅在攻擊過程中同時根據反饋信息來判斷漏洞是否存在會造成漏報問題,二次遍歷對Web應用的原有頁面與新頁面進行重新遍歷搜索,查找所有尚未得到驗證的攻擊向量,一旦確認查找到的攻擊向量與相應的輸出點類型匹配,則判斷該攻擊向量對應的注入點變量是存在跨站腳本漏洞的,并將該注入點變量對應的所有攻擊向量移除,然后繼續匹配直到待查找的攻擊向量為空或者所有頁面已遍歷完畢,則整個檢測過程結束。

假設I指注入點集合,其中,Ii指第i個注入點,Iij指Ii的第j個注入變量,i∈{1,2,…,n}(n是注入點總數),j={1,2,…,m}(m是Ii的注入變量總數),P指輸出點類型集合,Pk指Iij的第k個輸出點位置,k∈{1,2,…,s}(s是Iij的輸出點類型總數),q指對Iij在Pk上的攻擊次數,Ht指對Iij在位置Pk發送的第t次http請求,t∈{1,2,…,q},U指url集合,V指具有Iij標識的攻擊向量,Vlist指待檢測的攻擊向量列表。

輸入注入點集合I,url集合U

輸出發現的跨站腳本漏洞

具體檢測算法描述如下:

1)若i

2)若j

3)若k

4)若t

5)檢測相關反饋頁面中出現的V所在輸出點類型是否與攻擊向量V相符合,若是,則判定Iij存在漏洞,更新V的優先級,并從Vlist中移除與Iij相關的V,停止攻擊Iij,重復第4個步驟。

6)檢測相關反饋頁面中出現的V所在輸出點類型,更新Iij的輸出點類型集合P。

7)檢測相關反饋頁面中出現的url,更新集合U。

8)檢測相關反饋頁面中是否存在被實體化后的攻擊向量,若是,且在Pk不符合觸發腳本執行條件,判定此輸出點類型不存在漏洞,并結束對Iij在Pk的攻擊,重復第3個步驟;若否,重復第4個步驟。

9)遍歷U中所有的url,匹配Vlist中的V,若輸出點類型與V的類型相符合,則判定存在漏洞,并從Vlist中刪除與Iij相關的V。當U遍歷完畢或Vlist為空時,則檢測結束并輸出結果。

3 實驗結果與分析

依據本文提出的檢測方法,設計并實現了一款自動化跨站腳本發現模型WXS,模型使用PHP作為服務器端腳本語言,具有易于進行維護和二次開發的特點。檢測流程簡單、實用性強、自動化程度高。為了驗證模型的有效性,同時使用著名商業工具WVS(Web Vulnerability Scanner)與APPScan對2個測試站點進行掃描測試。其中,站點1是自行搭建的個人博客站點,該網站使用PHP語言開發,使用MySQL數據庫,站點2是某論壇網站,采用.NET框架,提供用戶留言評論等功能。檢測結果如表9和表10所示,表11為檢測耗時比較。

表9 站點1檢測結果

表10 站點2檢測結果

表11 檢測耗時比較

為了更好地體現出模型WXS的有效性,需要在真實環境下做測試。據XSSed官方(XSS漏洞公布平臺)截止到目前不完全數據顯示,現收集有45 884個XSS漏洞,已修復3 026個漏洞。本文實驗從XSSed平臺中分別收集已修復和尚未修復的漏洞各50例作為測試樣本,分別使用上述3種模型對其進行檢測,檢測結果如表12所示。

表12 XSSed平臺收集的測試樣本檢測結果

實驗結果表明,本文設計的模型WXS與其他工具相比較,能夠檢測出更多頁面和注入點,挖掘出漏洞數量較多,并且誤報數少。APPScan沒有針對Ajax提交數據的注入點類進行分析與研究,不能檢測出此類注入點。WVS與APPScan沒有進行二次遍歷掃描,并且缺乏對合法向量進行挖掘,容易被后臺過濾模塊過濾,存在漏報問題。在耗時方面,WXS發送的http請求次數(攻擊次數)少于WVS與APPScan,說明在攻擊向量與合法向量的選取上有較強的能力。

4 結束語

本文在分析跨站腳本攻擊原理的基礎上,提出一種動態檢測反射型與存儲型跨站腳本方法,設計并實現了一款自動化檢測模型。該模型與同類檢測工具相比,能夠降低誤報率和漏報率,從而更加有效地發現Web應用中的跨站腳本漏洞。下一步將針對Dom-based XSS進行分析與研究,使所提模型能夠檢測出該類型的跨站腳本漏洞。

猜你喜歡
頁面檢測模型
大狗熊在睡覺
一半模型
刷新生活的頁面
保健醫苑(2022年1期)2022-08-30 08:39:14
“不等式”檢測題
“一元一次不等式”檢測題
“一元一次不等式組”檢測題
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
3D打印中的模型分割與打包
小波變換在PCB缺陷檢測中的應用
主站蜘蛛池模板: 亚洲国产高清精品线久久| 国产成人精品优优av| 亚瑟天堂久久一区二区影院| 精品国产一区二区三区在线观看| 久久综合色播五月男人的天堂| 国产91精品久久| 天堂av综合网| 一级黄色网站在线免费看| 亚洲人妖在线| 成人一区专区在线观看| 国内精品免费| 欧美国产日韩在线播放| 国产福利一区视频| www.亚洲天堂| 久操线在视频在线观看| 97视频免费看| 亚州AV秘 一区二区三区| 99尹人香蕉国产免费天天拍| 成人毛片免费在线观看| 午夜影院a级片| 国产九九精品视频| 亚洲午夜国产精品无卡| 亚洲毛片在线看| 国产乱子伦一区二区=| 亚洲精品国产精品乱码不卞| 亚洲国产成人精品无码区性色| 经典三级久久| av一区二区三区在线观看| 波多野结衣久久高清免费| 亚洲AV电影不卡在线观看| 在线观看无码a∨| 亚洲AV电影不卡在线观看| 久久夜色精品| 国产成人福利在线视老湿机| 成年人免费国产视频| 欧美精品亚洲精品日韩专区| 国产精品丝袜视频| 99热这里只有免费国产精品| 99久久无色码中文字幕| 久久精品只有这里有| 亚洲毛片网站| 国产性精品| av一区二区无码在线| 国产黄色爱视频| 日本91视频| 久久91精品牛牛| 亚洲综合国产一区二区三区| 成人毛片免费在线观看| 欧美精品另类| 不卡网亚洲无码| 青青青视频蜜桃一区二区| 欧美a级完整在线观看| 一级一级一片免费| 毛片免费视频| 91人妻在线视频| 亚洲欧美h| 欧美日韩国产成人在线观看| 久久免费看片| 精品久久久久久中文字幕女| 国产女人综合久久精品视| 久青草国产高清在线视频| 日本在线免费网站| 无码中文AⅤ在线观看| 欧美www在线观看| 亚洲欧美另类日本| 99久视频| 国产色婷婷视频在线观看| 毛片免费在线| 久久精品一卡日本电影| 亚洲欧洲日产国产无码AV| 中文字幕亚洲精品2页| 91免费在线看| 全色黄大色大片免费久久老太| 中国国产A一级毛片| 国产精品99一区不卡| 亚洲日韩精品综合在线一区二区| 成年网址网站在线观看| 美女潮喷出白浆在线观看视频| 精品人妻一区二区三区蜜桃AⅤ | 一区二区三区在线不卡免费| 免费人成视频在线观看网站| 女人18毛片一级毛片在线|