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

跨站腳本漏洞滲透測試技術

2017-12-06 06:46:42王丹顧明昌趙文兵
哈爾濱工程大學學報 2017年11期
關鍵詞:頁面分類檢測

王丹,顧明昌,趙文兵

(北京工業大學 計算機學院, 北京 100124)

跨站腳本漏洞滲透測試技術

王丹,顧明昌,趙文兵

(北京工業大學 計算機學院, 北京 100124)

為提升跨站腳本(XSS)漏洞檢測方法的檢測效果,本文提出了基于隱馬爾科夫模型(HMM)的攻擊向量動態生成和優化方法。采用決策樹模型和代碼混淆策略對攻擊向量進行分類和變形,獲得測試用攻擊向量。使用注入點去重處理和探子技術去除一部分不存在XSS漏洞的Web頁面,避免重復檢測不同Web頁面中相同的漏洞注入點,減少測試階段與Web服務器的交互次數;進一步采用XPath路徑定位技術提高漏洞檢測結果分析的效率。對比實驗結果表明,本文提出的方法降低了響應時間和漏報率,提高了檢測效率。

跨站腳本漏洞; 滲透測試; 隱馬爾科夫模型; 攻擊向量; 注入點

當用戶訪問Web頁面時,如果瀏覽器執行了攻擊者向Web頁面中插入的惡意腳本代碼時,就會引發跨站腳本(cross site script,XSS)漏洞攻擊,造成竊取用戶敏感信息、劫持用戶瀏覽器等安全問題[1-2]。XSS漏洞攻擊屬于代碼注入式漏洞攻擊,根據開放式Web應用程序安全項目(open web application security project,OWASP)[3]發布的Web應用安全漏洞統計,XSS漏洞已連續幾年均列十大安全漏洞前三名。目前,隨著JavaScript語言和Ajax技術的普遍使用,動態交互的網絡應用在豐富網絡內容、增加用戶體驗的同時,也容易引發較嚴重的網絡安全問題,因為任何能夠提供用戶信息交互的地方都可能成為XSS攻擊者提交惡意攻擊腳本的載體,成為漏洞的注入點[4]。如果Web應用系統未對輸入的內容進行有效驗證,也沒有嚴格的過濾機制對可能含有惡意腳本的內容進行過濾,就可能引發XSS漏洞攻擊[5]。滲透測試技術通過模擬攻擊和對Web響應進行分析來檢測安全漏洞,已成為動態發現Web漏洞的有效手段之一[6-7]。如何有效發現漏洞注入點、并構造測試有效的攻擊向量以提升漏洞檢測效率和覆蓋率是滲透測試需要研究解決的關鍵問題之一,尤其是XSS漏洞攻擊本身具有復雜的攻擊方式,檢測效果在很大程度上依賴于漏洞注入點發現的全面性和漏洞攻擊向量設計的完整性。

本文提出了基于隱馬爾科夫模型(hidden Markov model,HMM)的攻擊向量動態生成和優化方法,并基于數據的輸出位置對攻擊向量進行了分類,設計并實現了基于滲透測試的XSS漏洞檢測的原型系統。

1 攻擊向量生成及優化

1.1種子攻擊向量

目前,在使用攻擊向量進行XSS漏洞動態檢測過程中,絕大多數都是使用基于XSS Cheat Sheet的攻擊向量集,并在此基礎上進行相關的變形,作為最后的攻擊向量。在此過程中,種子攻擊向量的選擇一般都來自現有的攻擊向量集合,包括XSS Cheat Sheet攻擊腳本,以及根據xssed網站中發布的XSS攻擊所采用的腳本。

種子攻擊向量是對攻擊變量進行變形的基礎,它被從攻擊向量隊列中讀出之后經過如下幾種操作,如URL編碼、HTML實體替換、UTF-8編碼、Base64編碼、Hex編碼以及用String.fromCharCode()函數和插入特殊字符、隨機字符的大小寫變形等,產生多種變形后成為新的攻擊向量,隨后再經過對重復的攻擊向量的篩除,繼續作為下一次攻擊向量種子,最后通過響應函數prifix()函數引入的前綴符號,如 “;”、“〉”、“&”、“′〉”、“+〉”、“>”和“>”等,與Web頁面中的“<”,“+”閉合,使上述攻擊向量成為能夠被瀏覽器解析執行的自由腳本。

1.2攻擊向量結構

引發XSS攻擊的攻擊向量有很多種,它們本身有一定的組成規則:1)它所包含的惡意腳本被瀏覽器加載執行;2)能夠執行具有特定目的攻擊動作;3)符合HTML語義邏輯。本文基于語法規則,將攻擊向量的語法分為備選符號集、攻擊向量形式說明、變形規則說明三部分,分析如下。

1)備選符號集。如HTML中標簽、JavaScript的敏感詞和CSS的敏感符號,即可能出現于攻擊向量中的語法符號。參考并整理文獻[8-9],本文涉及的備選符號集分為如表1所示的三部分。

表1 備選符號集分類

2)攻擊向量形式說明。通過相關的文獻和收集的攻擊向量發現:攻擊向量主要由分隔符、HTML標簽、一個或者多個屬性的組合,表2給出部分示例。

3)變形規則說明。通過編碼、混編大小寫、添加空白字符等變形操作而繞過代碼過濾,是攻擊向量常用的一種策略。攻擊向量的變異就是通過使用變形規則自動生成攻擊向量,達到繞過Web站點中過濾器的目的。

表2 攻擊向量的組合形式

1.3攻擊向量分類

本文以合法請求向量在Web頁面中的輸出點為依據,對攻擊向量進行分類,達到減少訪問XSS注入點、減少與服務器交互次數、提高效率的目的。輸出點分類如表3所示。

1.4攻擊向量生成

本文攻擊向量自動化生成方法的基本過程是:根據前文攻擊向量的結構分析中選取一種攻擊向量的組合形式,然后從攻擊向量符號集中選擇一個備選字符集的值,并且隨機選取惡意符號功能集和分隔符集中的元素值,最后根據組合規則組合生成一個基本的攻擊向量。基本攻擊向量結構定義如下:

Class BasicAttackVector{

String vectorType;//基本攻擊向量組合形式

String vectorPattern; //攻擊向量符號集類型

String vectorValue; //攻擊向量備選字符}

下面給出一個攻擊向量生成實例:

1)vectorType:基本攻擊向量組合形式。假設為。為了生成攻擊向量,首先選取該種攻擊向量的組合形式。

2)vectorPattern:HTML備選字符集。以組合形式為基礎,分別從HTML_TAG、HTML_EVENT集中選取HTML標簽和事件屬性,并且從惡意功能符號集中選擇JS_S類型,組成基本的攻擊向量。

3)vectorValue:備選符號集的值。根據步驟2)中的符號集,選取對應符號集備選值中的任意一個,如