專利名稱:Sql注入漏洞檢測(cè)中的注入點(diǎn)提取方法
技術(shù)領(lǐng)域:
本發(fā)明屬于Web應(yīng)用系統(tǒng)安全漏洞檢測(cè)領(lǐng)域,特別是涉及ー種SQL注入漏洞檢測(cè)中的注入點(diǎn)提取方法。
背景技術(shù):
結(jié)構(gòu)化查詢語(yǔ)言(以下簡(jiǎn)稱SQL)注入攻擊是ー種應(yīng)用廣泛、具有很大威脅性的Web 攻擊技術(shù),被列為 OWASP(Open Web Application Security Project)十大 Web 應(yīng)用系統(tǒng)安全威脅之首。其基本思想是通過(guò)猜解和驗(yàn)證目標(biāo)系統(tǒng)的SQL執(zhí)行邏輯,構(gòu)造能夠欺騙解釋器的攻擊載荷,執(zhí)行攻擊性的命令或者訪問(wèn)未被授權(quán)的數(shù)據(jù)。這種攻擊方法隱蔽性強(qiáng),受攻擊后的Web應(yīng)用系統(tǒng)可能會(huì)產(chǎn)生敏感信息的泄漏或破壞,給正常業(yè)務(wù)造成非常嚴(yán)重的影響。傳統(tǒng)SQL注入檢測(cè)技術(shù)主要采用基于文檔對(duì)象模型(以下簡(jiǎn)稱D0M)的分析法,通過(guò)分析目標(biāo)網(wǎng)頁(yè)的D0M,找出向服務(wù)器提交數(shù)據(jù)的URL、Form和Cookies,構(gòu)建注入點(diǎn)測(cè)試列表。以此為依據(jù),依次構(gòu)建相應(yīng)的測(cè)試用例,通過(guò)對(duì)服務(wù)器響應(yīng)數(shù)據(jù)進(jìn)行特征匹配或差異化分析,構(gòu)建漏洞列表來(lái)確定SQL注入漏洞。隨著Web2. O技術(shù)的廣泛應(yīng)用,SQL注入漏洞檢測(cè)技術(shù)面臨諸多的挑戰(zhàn),主要表現(xiàn)為ー是以AJAX為代表的Web2. O技術(shù),通過(guò)Web瀏覽器中的XMLHttpRequest對(duì)象,實(shí)現(xiàn)HTTP請(qǐng)求和數(shù)據(jù)的異步交換。其請(qǐng)求發(fā)送過(guò)程、請(qǐng)求URL等均由瀏覽器客戶端腳本動(dòng)態(tài)生成,傳統(tǒng)方法既無(wú)法對(duì)腳本內(nèi)容和執(zhí)行結(jié)果進(jìn)行分析,也不能對(duì)該環(huán)境中的通信過(guò)程和數(shù)據(jù)流實(shí)施全面分析檢查。ニ是瀏覽器客戶端腳本的大量使用,給SQL注入點(diǎn)檢測(cè)過(guò)程設(shè)置了很多障礙,從<a>標(biāo)記中提取“href”屬性標(biāo)識(shí)鏈接地址的做法不再有效,客戶端腳本可方便地與DOM元素綁定,從而完成鏈接跳轉(zhuǎn)、屬性改變等操作。在Web2. O環(huán)境中,鏈接的實(shí)現(xiàn)方式變得日趨多樣和復(fù)雜,其概念也有了擴(kuò)展和延伸。對(duì)Web應(yīng)用系統(tǒng)進(jìn)行安全性檢測(cè)主要采用基于源代碼復(fù)查的白盒檢測(cè)方法和基于滲透測(cè)試的黑盒檢測(cè)方法。白盒檢測(cè)法有針對(duì)性地對(duì)代碼依賴關(guān)系進(jìn)行分析,對(duì)變量和數(shù)據(jù)流進(jìn)行跟蹤。其分析方法主要有三種基于字符串的模式匹配、詞法標(biāo)記匹配和基于抽象語(yǔ)法的數(shù)據(jù)流分析。其在復(fù)查代碼上具有較高的檢查效率,但缺點(diǎn)是誤報(bào)率和漏報(bào)率都比較高,并且需要程序員進(jìn)行復(fù)查。黑盒檢測(cè)法主要通過(guò)構(gòu)建測(cè)試用例,分析Web應(yīng)用系統(tǒng)對(duì)不同輸入的響應(yīng)信息,以此來(lái)確認(rèn)漏洞。由于黑盒檢測(cè)法限制條件少,針對(duì)性強(qiáng),檢測(cè)準(zhǔn)確率高,更適用于對(duì)Web應(yīng)用系統(tǒng)進(jìn)行安全性檢測(cè)。本發(fā)明主要采用黑盒檢測(cè)法。學(xué)者已經(jīng)提出了幾種用于遠(yuǎn)程掃描Web應(yīng)用系統(tǒng)SQL注入漏洞的方法,已經(jīng)公開的黑盒檢測(cè)方法有中國(guó)專利CN 101312393B和CN 102136051A等。CN 101312393B公開的方法是向服務(wù)器提交正常的訪問(wèn)請(qǐng)求數(shù)據(jù)和不同類型的SQL注入數(shù)據(jù),接收服務(wù)器的返回結(jié)果,然后交叉比較不同請(qǐng)求的返回結(jié)果,并根據(jù)比較結(jié)果判斷服務(wù)器對(duì)提交數(shù)據(jù)的處理是否存在SQL注入漏洞。在提交SQL注入數(shù)據(jù)時(shí),定義了四種不同的攻擊模板,模板既定義了注入SQL攻擊命令的模式,也定義了返回結(jié)果交叉驗(yàn)證函數(shù)的組成,模板可以單獨(dú)或組合使用。其公開的方法主要解決當(dāng)服務(wù)器屏蔽出錯(cuò)信息時(shí),依靠服務(wù)器返回狀態(tài)碼來(lái)判斷是否存在漏洞的方法導(dǎo)致的漏報(bào)和通過(guò)關(guān)鍵字來(lái)判斷服務(wù)器運(yùn)行是否出錯(cuò)的方法導(dǎo)致的漏報(bào)和誤報(bào)。CN 102136051A公開的方法通過(guò)定義模型驅(qū)動(dòng)的測(cè)試框架,以框架中的SGM-SQL注入模型表達(dá)的信息為指導(dǎo),定義SQL注入安全漏洞形式化定義和滲透測(cè)試用例的形式化表述體系,為滲透測(cè)試提供漏洞存在性準(zhǔn)確判定準(zhǔn)則和有序完備的測(cè)試用例,從而提高滲透測(cè)試準(zhǔn)確度,彌補(bǔ)當(dāng)前滲透測(cè)試準(zhǔn)確度不高的缺點(diǎn)。但是,這兩個(gè)專利所公開的方法都未涉及對(duì)Web2. O環(huán)境中復(fù)雜Web應(yīng)用系統(tǒng)的SQ L注入漏洞檢測(cè)問(wèn)題。
發(fā)明內(nèi)容
為了克服現(xiàn)有的Web環(huán)境下SQL注入漏洞檢測(cè)方法準(zhǔn)確性差的不足,本發(fā)明提供ー種SQL注入漏洞檢測(cè)中的注入點(diǎn)提取方法。該方法從獲取Web應(yīng)用系統(tǒng)的數(shù)據(jù)注入點(diǎn)入手,通過(guò)構(gòu)建有針對(duì)性的測(cè)試用例,對(duì)系統(tǒng)潛在的SQL注入漏洞進(jìn)行全面檢測(cè)。由于增加了對(duì)網(wǎng)頁(yè)腳本的解析處理流程,對(duì)復(fù)雜網(wǎng)頁(yè)中的URL進(jìn)行準(zhǔn)確提取,可以解決傳統(tǒng)測(cè)試方法存在的漏報(bào)問(wèn)題,提高測(cè)試的覆蓋率;使用的測(cè)試用例依據(jù)數(shù)據(jù)注入點(diǎn)的類型和參數(shù)構(gòu)成,對(duì)字符串、數(shù)值、注釋和延遲測(cè)試,有效應(yīng)對(duì)URL參數(shù)和表單提交數(shù)據(jù)過(guò)濾不嚴(yán)造成注入漏洞的測(cè)試;通過(guò)分析響應(yīng),建立的SQL注入漏洞判定規(guī)則,可以提高測(cè)試的準(zhǔn)確性。本發(fā)明解決其技術(shù)問(wèn)題所采用的技術(shù)方案是ー種SQL注入漏洞檢測(cè)中的注入點(diǎn)提取方法,其特點(diǎn)是包括以下步驟步驟I、根據(jù)被測(cè)試網(wǎng)站起始URL進(jìn)行的預(yù)處理;分析頁(yè)面Frame幀結(jié)構(gòu),下載幀集合中的所有幀頁(yè)面;下載網(wǎng)頁(yè)中鏈接的全部腳本文件;獲取并存儲(chǔ)測(cè)試網(wǎng)站設(shè)置的
しookies ;步驟2、根據(jù)網(wǎng)頁(yè)HTML源碼中的標(biāo)記對(duì)或者關(guān)鍵字區(qū)分網(wǎng)頁(yè)類型;網(wǎng)頁(yè)HTML源碼中不包含“〈scriptX/script〉”標(biāo)記對(duì)或“ javascript: ”關(guān)鍵字的網(wǎng)頁(yè)為簡(jiǎn)單網(wǎng)頁(yè);網(wǎng)頁(yè)HTML源碼中包含“〈scriptX/script〉”標(biāo)記對(duì)或“ javascript: ”關(guān)鍵字的網(wǎng)頁(yè)為復(fù)雜網(wǎng)頁(yè);步驟3、提取簡(jiǎn)單網(wǎng)頁(yè)中的數(shù)據(jù)輸入點(diǎn);根據(jù)網(wǎng)頁(yè)HTML源碼,建立相應(yīng)的DOM樹;遍歷DOM樹,提取“〈form〉”元素的屬性和全部子元素;根據(jù)“〈form〉”元素及其子元素的屬性,建立表單提交向量;遍歷DOM樹,提取“<a>”元素的屬性和全部子元素;對(duì)“〈&>”元素的“href”屬性值進(jìn)行鏈接規(guī)范化處理和濾除重復(fù)后加入到URL列表;步驟4、提取復(fù)雜網(wǎng)頁(yè)中的數(shù)據(jù)輸入點(diǎn);根據(jù)網(wǎng)頁(yè)HTML源碼,建立相應(yīng)的DOM樹;建立并初始化自定義DOM對(duì)象和BOM對(duì)象;遍歷DOM樹,提取所有綁定腳本事件的DOM元素;提取所有具有“JavaScript”偽協(xié)議的“<a>”元素;初始化腳本引擎,按照DOM樹的遍歷次序,建立腳本事件的運(yùn)行隊(duì)列;執(zhí)行綁定在DOM元素上的腳本,分析腳本運(yùn)行后網(wǎng)頁(yè)DOM的變化;對(duì)具有“ JavaScript”偽協(xié)議的“<a>”元素,提取其運(yùn)行函數(shù)的名稱和參數(shù);將函數(shù)及參數(shù)提交給腳本引擎,分析腳本運(yùn)行后網(wǎng)頁(yè)DOM的變化;如果腳本運(yùn)行后產(chǎn)生跳轉(zhuǎn)鏈接或HTTP異步請(qǐng)求,則提取出鏈接地址;對(duì)提取出的鏈接進(jìn)行整形處理,將整形后的鏈接加入U(xiǎn)RL列表;處理完運(yùn)行隊(duì)列中的其他腳本,結(jié)束復(fù)雜頁(yè)面的數(shù)據(jù)輸入點(diǎn)提??;步驟5、根據(jù)數(shù)據(jù)數(shù)據(jù)輸入點(diǎn)構(gòu)建測(cè)試用例;使用編程語(yǔ)言和數(shù)據(jù)庫(kù)中的注釋符、連接符、界定符、數(shù)據(jù)庫(kù)中的默認(rèn)表素材構(gòu)建測(cè)試用例;建立基于字符串、數(shù)值、注釋語(yǔ)句和延時(shí)測(cè)試的測(cè)試用例;步驟6、提交測(cè)試用例,分析服務(wù)響應(yīng);步驟7、建立存在SQL注入漏洞的判定規(guī)則,確認(rèn)注入點(diǎn)。所述的表單提交向量是Host、Port、PageURL> ActionURL、Method、FormData、Cookies或者Charset ;其中,Host是待測(cè)試Web應(yīng)用系統(tǒng)的主機(jī)IP地址;Port是Web服務(wù)器的端口號(hào);PageURL是包含表單的網(wǎng)頁(yè)地址;ActionURL是表單實(shí)際請(qǐng)求的URL ;Method是表單請(qǐng)求的方法;FormData是表單提交的數(shù)據(jù)實(shí)體;Cookies是訪問(wèn)網(wǎng)頁(yè)時(shí)Web應(yīng)用系統(tǒng)設(shè)置的Cookies ;Charset是網(wǎng)頁(yè)的編碼字符集。所述的鏈接規(guī)范化處理步驟包括刪除錨點(diǎn),過(guò)濾協(xié)議,將鏈接到壓縮文件、文檔、圖像、視頻、音頻以及ニ進(jìn)制文件的鏈接過(guò)濾。
所述的腳本引擎是開源JavaScript引擎。所述的自定義DOM對(duì)象和BOM對(duì)象是使用JavaScript引擎的編程接ロ創(chuàng)建的宿
主對(duì)象。所述的分析服務(wù)響應(yīng)包括基于關(guān)鍵字的匹配和HTTP響應(yīng)代碼的服務(wù)器出錯(cuò)信息分析;異常響應(yīng)內(nèi)容與原始響應(yīng)內(nèi)容的比較;測(cè)量響應(yīng)的延遲時(shí)間。所述的SQL注入漏洞的判定規(guī)則是注入命令后引起數(shù)據(jù)庫(kù)出錯(cuò),響應(yīng)信息中包含出錯(cuò)類型及代碼位置信息;注入命令后數(shù)據(jù)庫(kù)運(yùn)行正常,響應(yīng)信息與原始信息相同;Web應(yīng)用系統(tǒng)響應(yīng)時(shí)間受注入的延時(shí)參數(shù)影響,與原始響應(yīng)時(shí)延不一致;注入無(wú)效命令后,響應(yīng)總定位到某個(gè)固定位置或內(nèi)容,可能存在盲注入漏洞;如果沒(méi)有規(guī)則能夠確認(rèn)SQL注入漏洞存在,則當(dāng)前的檢測(cè)項(xiàng)被認(rèn)為是疑似漏洞,待詳細(xì)分析。本發(fā)明的有益效果是由于從獲取Web應(yīng)用系統(tǒng)的數(shù)據(jù)注入點(diǎn)入手,通過(guò)構(gòu)建有針對(duì)性的測(cè)試用例,對(duì)系統(tǒng)潛在的SQL注入漏洞進(jìn)行全面檢測(cè)。由于增加了對(duì)網(wǎng)頁(yè)腳本的解析處理流程,對(duì)復(fù)雜網(wǎng)頁(yè)中的URL進(jìn)行準(zhǔn)確提取,解決了傳統(tǒng)測(cè)試方法存在的漏報(bào)問(wèn)題,提高了測(cè)試的覆蓋率;使用的測(cè)試用例依據(jù)數(shù)據(jù)注入點(diǎn)的類型和參數(shù)構(gòu)成,對(duì)字符串、數(shù)值、注釋和延遲測(cè)試,有效應(yīng)對(duì)URL參數(shù)和表單提交數(shù)據(jù)過(guò)濾不嚴(yán)造成注入漏洞的測(cè)試;通過(guò)分析響應(yīng),建立的SQL注入漏洞判定規(guī)則,明顯提高了測(cè)試的準(zhǔn)確性。下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作詳細(xì)說(shuō)明。
圖I是本發(fā)明方法對(duì)簡(jiǎn)單網(wǎng)頁(yè)數(shù)據(jù)注入點(diǎn)提取流程圖。圖2是本發(fā)明方法對(duì)復(fù)雜網(wǎng)頁(yè)數(shù)據(jù)注入點(diǎn)提取流程圖。
具體實(shí)施例方式本發(fā)明SQL注入漏洞檢測(cè)中的注入點(diǎn)提取方法具體步驟如下I、預(yù)處理。根據(jù)被測(cè)試網(wǎng)站的起始URL下載網(wǎng)頁(yè),對(duì)下載的網(wǎng)頁(yè)進(jìn)行預(yù)處理。預(yù)處理的目的是降低后續(xù)步驟的復(fù)雜度,同時(shí)提供后續(xù)處理所需的數(shù)據(jù)。預(yù)處理工作包括分析Frame幀頁(yè)面和獲取Cookies兩部分。如果網(wǎng)頁(yè)包含幀集合,則將幀集合中的頁(yè)面ー并下載。同時(shí),保存Web應(yīng)用系統(tǒng)設(shè)置的Cookies,保存的Cookies在后續(xù)測(cè)試中作為構(gòu)建HTTP數(shù)據(jù)包的素材。2、網(wǎng)頁(yè)類型區(qū)分。為了簡(jiǎn)化處理,本方法在處理網(wǎng)頁(yè)時(shí),根據(jù)網(wǎng)頁(yè)HTML源碼中是否包含“<script>〈/script>”標(biāo)記對(duì)或者是否包含“〈javascript: ”關(guān)鍵字將網(wǎng)頁(yè)分為簡(jiǎn)單網(wǎng)頁(yè)和復(fù)雜網(wǎng)頁(yè)。簡(jiǎn)單網(wǎng)頁(yè)不包含任何腳本元素,因而其主要處理內(nèi)容為網(wǎng)頁(yè)中的超級(jí)鏈接和表単。復(fù)雜網(wǎng)頁(yè)因包含腳本,因而其處理內(nèi)容包括腳本解析、運(yùn)行結(jié)果評(píng)估、表單分析及超級(jí)鏈接處理。3、簡(jiǎn)單網(wǎng)頁(yè)數(shù)據(jù)注入點(diǎn)提取。如圖I所示,根據(jù)網(wǎng)頁(yè)HTML源代碼,構(gòu)建相應(yīng)的DOM(文檔對(duì)象模型)樹。首先,判斷“〈form〉”元素是否存在,如果存在,則提取“〈form〉”元素的“id”、“name'“method”和“action”屬性,提取“〈form〉”元素包含的全部子元素。屬性為“hidden”的不可見子元素,其數(shù)據(jù)仍會(huì)被表單提交,因此所有子元素都必須提取。提取子元素的“ id”、“name”、 “claSS”、“type”和“value”屬性。根據(jù)“type”屬性可預(yù)先對(duì)子元素賦值,并建立表單提交向量。其次,判斷“<a>”元素是否存在,如果存在,則提取“<a>”元素的“ href”屬性,其值即需要處理的鏈接URL地址。如果鏈接包含“#,,字符,則鏈接中包含錨點(diǎn)。如果錨點(diǎn)鏈接到該頁(yè)面,則直接丟棄該URL ;如果錨點(diǎn)鏈接到其他頁(yè)面,則應(yīng)確定鏈接是否為站外鏈接,站外鏈接超出測(cè)試的范圍直接丟棄。對(duì)站內(nèi)鏈接進(jìn)行URL規(guī)范化處理,內(nèi)容包括刪除錨點(diǎn),由于錨點(diǎn)并不向服務(wù)器提交,僅為控制瀏覽器進(jìn)行頁(yè)面導(dǎo)航,所以在處理包含錨點(diǎn)的站內(nèi)鏈接時(shí)統(tǒng)一將錨點(diǎn)刪除;過(guò)濾協(xié)議,本方法僅處理HTTP協(xié)議及JavaScript偽協(xié)議鏈接,不考慮FTP、MMS等其他協(xié)議鏈接;過(guò)濾鏈接,將鏈接到壓縮文件、文檔、圖像、視頻、音頻、ニ進(jìn)制文件的鏈接過(guò)濾。由于靜態(tài)鏈接不包含查詢參數(shù),因此靜態(tài)鏈接只用來(lái)分析站點(diǎn)結(jié)構(gòu),并不包含數(shù)據(jù)注入點(diǎn),為簡(jiǎn)化處理過(guò)程暫不考慮服務(wù)器端使用ReWrite技術(shù)后對(duì)URL的影響。濾除重復(fù)鏈接后,將其加入到URL列表中。處理重復(fù)鏈接時(shí),重點(diǎn)分析URL中的“abs_path”和“query”兩部分。通常將“abs_path”相同,“query”中參數(shù)名相同而參數(shù)值不同的兩個(gè)或多個(gè)URL歸類為重復(fù)鏈接。實(shí)際處理時(shí),按照其格式取一個(gè)鏈接加入到URL列表中。最后,遍歷DOM樹,提取“<a>”元素的屬性和全部子元素^寸“化^’元素的“^社”屬性值進(jìn)行鏈接規(guī)范化處理和濾除重復(fù)后加入到URL列表;處理全部“<a>”元素,結(jié)束單頁(yè)面的數(shù)據(jù)注入點(diǎn)提取。鏈接規(guī)范化處理步驟(I)刪除錨點(diǎn),由于錨點(diǎn)并不向服務(wù)器提交,僅為控制瀏覽器進(jìn)行頁(yè)面導(dǎo)航,所以在處理包含錨點(diǎn)的站內(nèi)鏈接時(shí)統(tǒng)一將錨點(diǎn)刪除;(2)過(guò)濾協(xié)議,本方法僅處理HTTP協(xié)議及JavaScript偽協(xié)議鏈接,不考慮FTP、MMS等其他協(xié)議鏈接;(3)過(guò)濾鏈接,將鏈接到壓縮文件、文檔、圖像、視頻、音頻、ニ進(jìn)制文件的鏈接過(guò)濾。上述表單提交向量是Host、Port、PageURL、ActionURL、Method、FormData、Cookies或者Charset ;其中,Host是待測(cè)試Web應(yīng)用系統(tǒng)的主機(jī)IP地址;Port是Web服務(wù)器的端口號(hào);PageURL是包含表單的網(wǎng)頁(yè)地址;ActionURL是表單實(shí)際請(qǐng)求的URL ;Method是表單請(qǐng)求的方法;FormData是表單提交的數(shù)據(jù)實(shí)體;Cookies是訪問(wèn)網(wǎng)頁(yè)時(shí)Web應(yīng)用系統(tǒng)設(shè)置的Cookies ;Charset是網(wǎng)頁(yè)的編碼字符集。
本實(shí)施例定義待驗(yàn)證的網(wǎng)頁(yè)地址為http ://192. 168. O. 11:8080/info/exceed_fine_bulletin. php。分析該網(wǎng)頁(yè)為簡(jiǎn)單網(wǎng)頁(yè),存在ー個(gè)表單,需要用戶提交一個(gè)關(guān)鍵字。分析表單的屬性得到action= “ inf o_search. php”、method= “get”。分析表單包含的子元素,得到ー個(gè)“〈select〉”和兩個(gè)“〈input〉”元素。“〈select〉”元素的屬性為class= “option”name =“s_type”,并包含兩個(gè)“〈option〉”子元素,屬性分別為:value= “certid”和value= “redrid”。由元素的屬性可知,這是包含兩個(gè)選項(xiàng)的下拉列表,其缺省值為“S_type=Certid”。兩個(gè)表單子元素“〈input〉”的屬性分別為type= “text”name= “q” 和 type= “submit”name= “submit” value= “檢索”。屬性為“submit”的“〈input〉”元素為表單的提交按鈕,其缺省值為“submit=檢索”。屬性為“text”的“〈input〉”元素為表單的單行文本輸入框,其缺省值為“q=””,即q為空串。由于表單的 提交方法為“ GET”,因此表單請(qǐng)求的URL由表單子元素的值以及“ action”屬性構(gòu)成。給文本輸入框的“〈input〉”元素賦值,隨機(jī)選擇不超過(guò)其屬性的數(shù)值或是字符串,例如6位隨機(jī)數(shù)“798797”或6位隨機(jī)字符串“ xxxxxx”。本實(shí)施例構(gòu)建的表單提交向量格式為[Host,Port, PageURL, ActionURL, Method, FormData, Cookies, Charset]。其中,Host 為待測(cè)試Web應(yīng)用系統(tǒng)的主機(jī)IP地址,Port為Web服務(wù)器的端口號(hào),PageURL為包含表單的網(wǎng)頁(yè)地址,ActionURL為表單實(shí)際請(qǐng)求的URL,Method為表單請(qǐng)求的方法,F(xiàn)ormData為表單提交的數(shù)據(jù)實(shí)體,Cookies為訪問(wèn)網(wǎng)頁(yè)時(shí)Web應(yīng)用系統(tǒng)設(shè)置的Cookies, Charset為網(wǎng)頁(yè)的編碼字符集,字符集主要用于對(duì)DataString中的字符進(jìn)行編碼。本實(shí)施例構(gòu)建的表單提交向量具體為
權(quán)利要求
1.ー種SQL注入漏洞檢測(cè)中的注入點(diǎn)提取方法,其特征在于包括以下步驟步驟I、根據(jù)被測(cè)試網(wǎng)站起始URL進(jìn)行的預(yù)處理;分析頁(yè)面Frame幀結(jié)構(gòu),下載幀集合中的所有幀頁(yè)面;下載網(wǎng)頁(yè)中鏈接的全部腳本文件;獲取并存儲(chǔ)測(cè)試網(wǎng)站設(shè)置的Cookies ;步驟2、根據(jù)網(wǎng)頁(yè)HTML源碼中的標(biāo)記對(duì)或者關(guān)鍵字區(qū)分網(wǎng)頁(yè)類型;網(wǎng)頁(yè)HTML源碼中不包含“〈scriptX/script〉”標(biāo)記對(duì)或“ javascript: ”關(guān)鍵字的網(wǎng)頁(yè)為簡(jiǎn)單網(wǎng)頁(yè);網(wǎng)頁(yè)HTML源碼中包含“<script>〈/script>”標(biāo)記對(duì)或“ javascript: ”關(guān)鍵字的網(wǎng)頁(yè)為復(fù)雜網(wǎng)頁(yè);步驟3、提取簡(jiǎn)單網(wǎng)頁(yè)中的數(shù)據(jù)輸入點(diǎn);根據(jù)網(wǎng)頁(yè)HTML源碼,建立相應(yīng)的DOM樹;遍歷DOM樹,提取“〈form〉”元素的屬性和全部子元素;根據(jù)“〈form〉”元素及其子元素的屬性,建立表單提交向量;遍歷DOM樹,提取“<a>”元素的屬性和全部子元素;對(duì)“<a>”元素的“href”屬性值進(jìn)行鏈接規(guī)范化處理和濾除重復(fù)后加入到URL列表;步驟4、提取復(fù)雜網(wǎng)頁(yè)中的數(shù)據(jù)輸入點(diǎn);根據(jù)網(wǎng)頁(yè)HTML源碼,建立相應(yīng)的DOM樹;建立并初始化自定義DOM對(duì)象和BOM對(duì)象;遍歷DOM樹,提取所有綁定腳本事件的DOM元素;提取所有具有“ JavaScript”偽協(xié)議的“<a>”元素;初始化腳本引擎,按照DOM樹的遍歷次序,建立腳本事件的運(yùn)行隊(duì)列;執(zhí)行綁定在DOM元素上的腳本,分析腳本運(yùn)行后網(wǎng)頁(yè)DOM的變化;對(duì)具有“ JavaScript”偽協(xié)議的“<a>”元素,提取其運(yùn)行函數(shù)的名稱和參數(shù);將函數(shù)及參數(shù)提交給腳本引擎,分析腳本運(yùn)行后網(wǎng)頁(yè)DOM的變化;如果腳本運(yùn)行后產(chǎn)生跳轉(zhuǎn)鏈接或HTTP異步請(qǐng)求,則提取出鏈接地址;對(duì)提取出的鏈接進(jìn)行整形處理,將整形后的鏈接加入U(xiǎn)RL列表;處理完運(yùn)行隊(duì)列中的其他腳本,結(jié)束復(fù)雜頁(yè)面的數(shù)據(jù)輸入點(diǎn)提??;步驟5、根據(jù)數(shù)據(jù)數(shù)據(jù)輸入點(diǎn)構(gòu)建測(cè)試用例;使用編程語(yǔ)言和數(shù)據(jù)庫(kù)中的注釋符、連接符、界定符、數(shù)據(jù)庫(kù)中的默認(rèn)表素材構(gòu)建測(cè)試用例;建立基于字符串、數(shù)值、注釋語(yǔ)句和延時(shí)測(cè)試的測(cè)試用例;步驟6、提交測(cè)試用例,分析服務(wù)響應(yīng);步驟7、建立存在SQL注入漏洞的判定規(guī)則,確認(rèn)注入點(diǎn)。
2.根據(jù)權(quán)利要求I所述的SQL注入漏洞檢測(cè)中的注入點(diǎn)提取方法,其特征在于所述的表單提交向量是 Host、Port、PageURL> ActionURL、Method、FormData、Cookies 或者Charset ;其中,Host是待測(cè)試Web應(yīng)用系統(tǒng)的主機(jī)IP地址;Port是Web服務(wù)器的端ロ號(hào);PageURL是包含表單的網(wǎng)頁(yè)地址;ActionURL是表單實(shí)際請(qǐng)求的URL ;Method是表單請(qǐng)求的方法;FormData是表單提交的數(shù)據(jù)實(shí)體;Cookies是訪問(wèn)網(wǎng)頁(yè)時(shí)Web應(yīng)用系統(tǒng)設(shè)置的Cookies ;Charset是網(wǎng)頁(yè)的編碼字符集。
3.根據(jù)權(quán)利要求I所述的SQL注入漏洞檢測(cè)中的注入點(diǎn)提取方法,其特征在于所述的鏈接規(guī)范化處理步驟包括刪除錨點(diǎn),過(guò)濾協(xié)議,將鏈接到壓縮文件、文檔、圖像、視頻、音頻以及ニ進(jìn)制文件的鏈接過(guò)濾。
4.根據(jù)權(quán)利要求I所述的SQL注入漏洞檢測(cè)中的注入點(diǎn)提取方法,其特征在于所述的腳本引擎是開源JavaScript引擎。
5.根據(jù)權(quán)利要求I所述的SQL注入漏洞檢測(cè)中的注入點(diǎn)提取方法,其特征在于所述的自定義DOM對(duì)象和BOM對(duì)象是使用JavaScript引擎的編程接ロ創(chuàng)建的宿主對(duì)象。
6.根據(jù)權(quán)利要求I所述的SQL注入漏洞檢測(cè)中的注入點(diǎn)提取方法,其特征在于所述的分析服務(wù)響應(yīng)包括基于關(guān)鍵字的匹配和HTTP響應(yīng)代碼的服務(wù)器出錯(cuò)信息分析;異常響應(yīng)內(nèi)容與原始響應(yīng)內(nèi)容的比較;測(cè)量響應(yīng)的延遲時(shí)間。
7.根據(jù)權(quán)利要求I所述的SQL注入漏洞檢測(cè)中的注入點(diǎn)提取方法,其特征在于所述的SQL注入漏洞的判定規(guī)則是注入命令后引起數(shù)據(jù)庫(kù)出錯(cuò),響應(yīng)信息中包含出錯(cuò)類型及代碼位置信息;注入命令后數(shù)據(jù)庫(kù)運(yùn)行正常,響應(yīng)信息與原始信息相同;Web應(yīng)用系統(tǒng)響應(yīng)時(shí)間受注入的延時(shí)參數(shù)影響,與原始響應(yīng)時(shí)延不一致;注入無(wú)效命令后,響應(yīng)總定位到某個(gè)固定位置或內(nèi)容,可能存在盲注入漏洞;如果沒(méi)有規(guī)則能夠確認(rèn)SQL注入漏洞存在,則當(dāng)前的檢測(cè)項(xiàng)被認(rèn)為是疑似漏洞,待詳細(xì)分析。
全文摘要
本發(fā)明公開了一種SQL注入漏洞檢測(cè)中的注入點(diǎn)提取方法,用于解決現(xiàn)有的Web環(huán)境下SQL注入漏洞檢測(cè)方法準(zhǔn)確性差的技術(shù)問(wèn)題。技術(shù)方案是首先對(duì)下載的網(wǎng)頁(yè)進(jìn)行預(yù)處理,將網(wǎng)頁(yè)分為簡(jiǎn)單網(wǎng)頁(yè)和復(fù)雜網(wǎng)頁(yè),對(duì)簡(jiǎn)單網(wǎng)頁(yè)數(shù)據(jù)注入點(diǎn)進(jìn)行提取,對(duì)復(fù)雜網(wǎng)頁(yè)數(shù)據(jù)注入點(diǎn)進(jìn)行提取,通過(guò)構(gòu)建測(cè)試用例,提交測(cè)試用例,分析服務(wù)響應(yīng),建立存在SQL注入漏洞的判定規(guī)則。本發(fā)明從獲取Web應(yīng)用系統(tǒng)的數(shù)據(jù)注入點(diǎn)入手,通過(guò)構(gòu)建有針對(duì)性的測(cè)試用例,使用的測(cè)試用例依據(jù)數(shù)據(jù)注入點(diǎn)的類型和參數(shù)構(gòu)成,對(duì)字符串、數(shù)值、注釋和延遲測(cè)試,有效應(yīng)對(duì)URL參數(shù)和表單提交數(shù)據(jù)過(guò)濾不嚴(yán)造成注入漏洞的測(cè)試;通過(guò)分析響應(yīng),建立的SQL注入漏洞判定規(guī)則,提高了測(cè)試的準(zhǔn)確性。
文檔編號(hào)G06F11/36GK102831345SQ20121026873
公開日2012年12月19日 申請(qǐng)日期2012年7月30日 優(yōu)先權(quán)日2012年7月30日
發(fā)明者蔡皖東, 馬凱, 姚燁 申請(qǐng)人:西北工業(yè)大學(xué)