本發(fā)明涉及網(wǎng)絡(luò)信息安全領(lǐng)域,尤其涉及一種XPath注入漏洞檢測及防御系統(tǒng)及方法。
背景技術(shù):
XPath 使用路徑表達(dá)式來選取 XML 文檔中的節(jié)點或者節(jié)點集。這些路徑表達(dá)式和我們在常規(guī)的電腦文件系統(tǒng)中看到的表達(dá)式非常相似。路徑表達(dá)式是從一個XML節(jié)點(當(dāng)前的上下文節(jié)點)到另一個節(jié)點、或一組節(jié)點的書面步驟順序。
現(xiàn)代互聯(lián)網(wǎng)日新月異的發(fā)展中,各類web應(yīng)用系統(tǒng)都或多或少的應(yīng)用到XML技術(shù),由此開始出現(xiàn)了針對XML數(shù)據(jù)信息的XPath注入攻擊技術(shù)。注入攻擊是指利用系統(tǒng)沒有對其輸入進(jìn)行強制檢查,導(dǎo)致向計算機(jī)系統(tǒng)中注入代碼的技術(shù)。注入代碼的目的通常是繞過或修改程序的最初目標(biāo)功能,如果被繞過的功能涉及系統(tǒng)安全,那么結(jié)果可能是災(zāi)難性的。在XML信息被大量使用,其數(shù)據(jù)的安全性顯得非常重要,研究XPath的注入攻擊防御技術(shù)是必要的。
XPath注入攻擊是指利用XPath 解析器的松散輸入和容錯特性,在程序沒有驗證用戶查詢輸入的情況下,能夠在URL、表單或其它信息上附帶惡意的XPath 查詢代碼,以獲得權(quán)限信息的訪問權(quán)并更改這些信息。XPath注入攻擊是針對Web服務(wù)應(yīng)用的攻擊方法,它允許攻擊者在事先不知道XPath查詢相關(guān)知識的情況下,可以導(dǎo)致邏輯錯誤和認(rèn)證繞過,獲取后端XML文件內(nèi)容。
由于XML沒有用戶或者權(quán)限的概念,因此可以對其數(shù)據(jù)庫、表、行或者列執(zhí)行細(xì)粒度的訪問控制,這意味著整個數(shù)據(jù)庫都可以被用戶讀取,在應(yīng)用中屬于很嚴(yán)重的安全漏洞。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的是針對現(xiàn)有技術(shù)存在的缺陷,提出一種XPath注入漏洞檢測及防御方案,該方案能有效識別XPath注入攻擊并阻斷XPath注入攻擊,有效保護(hù)用戶的數(shù)據(jù)安全。
本發(fā)明提出了一種XPath注入漏洞檢測及防御方法,具體包括:
步驟一:基于XPath詞法語法分析,建立基于XPath語法元素及XPath語法字段的XPath注入特征庫 ;
步驟二:獲取XPath注入攻擊目標(biāo)數(shù)據(jù),對所述目標(biāo)數(shù)據(jù)進(jìn)行XPath詞法語法分析,獲取所述目標(biāo)數(shù)據(jù)中包含的所有XPath語法元素及XPath語法字段 ;
步驟三:將所述目標(biāo)數(shù)據(jù)中包含的所有XPath語法元素及XPath語法字段與所述XPath注入特征庫進(jìn)行匹配,如果匹配成功,則確定存在XPath注入攻擊;
步驟四:阻斷http請求。
本發(fā)明還提供了一種XPath注入漏洞檢測及防御系統(tǒng),具體包括:XPath注入特征庫建立模塊、XPath語句分析模塊、匹配模塊及阻斷模塊,其中,
所述XPath注入特征庫建立模塊主要是基于XPath詞法語法分析,建立基于XPath語法元素及XPath語法字段規(guī)則庫;
所述XPath語句分析模塊主要針對XPath注入攻擊目標(biāo)數(shù)據(jù)進(jìn)行XPath詞法語法分析,獲取所述目標(biāo)數(shù)據(jù)中包含的所有XPath語法元素及XPath語法字段 ;
所述匹配模塊主要將從所述目標(biāo)數(shù)據(jù)中獲取的所有XPath語法元素及XPath語法字段與XPath注入特征庫建立模塊中的規(guī)則描述進(jìn)行匹配,如果匹配成功,則確定存在XPath注入攻擊;
所述阻斷模塊主要用于阻斷XPath注入攻擊請求,當(dāng)確定存在XPath注入攻擊時,該工具將會阻斷該http請求,當(dāng)來之同一ip地址3次類似攻擊請求,則將該ip加入黑名單。
進(jìn)一步的,所述的一種XPath注入漏洞檢測及防御系統(tǒng)還包括權(quán)重設(shè)置模塊,所述權(quán)重設(shè)置模塊主要為所述XPath注入特征庫中XPath語法元素及XPath語法字段規(guī)則設(shè)置權(quán)重;
進(jìn)一步的,所述的一種XPath注入漏洞檢測及防御系統(tǒng)還包括提取及判斷模塊,所述提取及判斷模塊主要用于提取http請求中的XPath注入攻擊目標(biāo)數(shù)據(jù),并將XPath注入攻擊目標(biāo)數(shù)據(jù)與所述XPath注入特征庫中規(guī)則進(jìn)行匹配分析,同時確定XPath注入攻擊目標(biāo)數(shù)據(jù)的最大權(quán)重值,當(dāng)所述最大權(quán)重值大于或等于權(quán)重閾值時,這說明該http請求含有XPath注入攻擊。
進(jìn)一步的,所述XPath注入攻擊目標(biāo)數(shù)據(jù)是http請求數(shù)據(jù)包中post消息或get消息。
進(jìn)一步的,所述XPath注入特征庫所包含的規(guī)則是由XPath語法元素及XPath語法字段構(gòu)成的關(guān)鍵字組成。
進(jìn)一步的,所述XPath語法元素包括標(biāo)識符、函數(shù)、運算符、標(biāo)簽、注釋及保留關(guān)鍵字。
進(jìn)一步的,所述XPath語法字段包括字段、條件、命令。
本發(fā)明的有益效果在于:①對http請求進(jìn)行XPath詞法語義分析,得到XPath語法元素及XPath語法字段,再將這些XPath語句解析結(jié)果與特征庫進(jìn)行模式匹配,由于不是對數(shù)據(jù)進(jìn)行字符比對,而是針對特定的XPath語句解析結(jié)果進(jìn)行有針對性的比對,因此提高了識別效率;②對數(shù)據(jù)所包含的所有XPath語句都進(jìn)行了分析提取,從而可盡量減少漏報;③針對http的post請求,特別建立了由大數(shù)據(jù)分析得到的XPath語句構(gòu)成的特征庫,并給每個條post相關(guān)的特征賦予權(quán)重值,對于post請求,將解析的XPath語句與XPath注入特征庫中規(guī)則描述符匹配分析,得到一個最大權(quán)重值,當(dāng)其大于或等于權(quán)重閾值時,這說明該http請求含有XPath注入攻擊,該方法能最大限度的識別XPath注入攻擊并阻斷XPath注入攻擊,有效保護(hù)用戶的數(shù)據(jù)安全。
具體實施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚明白,下文對本發(fā)明技術(shù)方案作進(jìn)一步詳細(xì)說明。需要說明的是,在不沖突的情況下,本申請的實施例和實施例中的特征可以任意相互組合。
一種XPath注入漏洞檢測及防御方法,具體包括:
步驟一:基于XPath詞法語法分析,建立基于XPath語法元素及XPath語法字段的XPath注入特征庫 ;
步驟二:獲取XPath注入攻擊目標(biāo)數(shù)據(jù),對所述目標(biāo)數(shù)據(jù)進(jìn)行XPath詞法語法分析,獲取所述目標(biāo)數(shù)據(jù)中包含的所有XPath語法元素及XPath語法字段 ;
步驟三:將所述目標(biāo)數(shù)據(jù)中包含的所有XPath語法元素及XPath語法字段與所述XPath注入特征庫進(jìn)行匹配,如果匹配成功,則確定存在XPath注入攻擊;
步驟四:阻斷http請求。
一種XPath注入漏洞檢測及防御系統(tǒng),具體包括:XPath注入特征庫建立模塊、XPath語句分析模塊、匹配模塊及阻斷模塊,其中,
所述XPath注入特征庫建立模塊主要是基于XPath詞法語法分析,建立基于XPath語法元素及XPath語法字段規(guī)則庫;
所述XPath語句分析模塊主要針對XPath注入攻擊目標(biāo)數(shù)據(jù)進(jìn)行XPath詞法語法分析,獲取所述目標(biāo)數(shù)據(jù)中包含的所有XPath語法元素及XPath語法字段 ;
所述匹配模塊主要將從所述目標(biāo)數(shù)據(jù)中獲取的所有XPath語法元素及XPath語法字段與XPath注入特征庫建立模塊中的規(guī)則描述進(jìn)行匹配,如果匹配成功,則確定存在XPath注入攻擊;
所述阻斷模塊主要用于阻斷XPath注入攻擊請求,當(dāng)確定存在XPath注入攻擊時,該工具將會阻斷該http請求,當(dāng)來之同一ip地址3次類似攻擊請求,則將該ip加入黑名單。
所述的一種XPath注入漏洞檢測及防御系統(tǒng)還包括權(quán)重設(shè)置模塊,所述權(quán)重設(shè)置模塊主要為所述XPath注入特征庫中XPath語法元素及XPath語法字段規(guī)則設(shè)置權(quán)重;
所述的一種XPath注入漏洞檢測及防御系統(tǒng)還包括提取及判斷模塊,所述提取及判斷模塊主要用于提取http請求中的XPath注入攻擊目標(biāo)數(shù)據(jù),并將XPath注入攻擊目標(biāo)數(shù)據(jù)與所述XPath注入特征庫中規(guī)則進(jìn)行匹配分析,同時確定XPath注入攻擊目標(biāo)數(shù)據(jù)的最大權(quán)重值,當(dāng)所述最大權(quán)重值大于或等于權(quán)重閾值時,這說明該http請求含有XPath注入攻擊。
所述XPath注入攻擊目標(biāo)數(shù)據(jù)是http請求數(shù)據(jù)包中post消息或get消息。
所述XPath注入特征庫所包含的規(guī)則是由XPath語法元素及XPath語法字段構(gòu)成的關(guān)鍵字組成。
所述XPath語法元素包括標(biāo)識符、函數(shù)、運算符、標(biāo)簽、注釋及保留關(guān)鍵字。
所述XPath語法字段包括字段、條件、命令。
以上所述,僅為本發(fā)明的較佳實例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。