本發(fā)明涉及網(wǎng)絡(luò)信息安全領(lǐng)域,尤其涉及一種檢測(cè)HTTP參數(shù)污染漏洞的方法。
背景技術(shù):
HTTP參數(shù)污染攻擊是由于缺少對(duì)HTTP請(qǐng)求參數(shù)內(nèi)容進(jìn)行嚴(yán)格校驗(yàn)審查,使得帶有惡意攻擊的參數(shù)覆蓋或添加HTTP請(qǐng)求中GET和POST方法的參數(shù),惡意參數(shù)被服務(wù)器解析,導(dǎo)致服務(wù)器遭受攻擊。
參數(shù)污染攻擊可以描述為:對(duì)于已有合法參數(shù)P和惡意參數(shù)P,應(yīng)用程序沒(méi)有對(duì)輸入?yún)?shù)進(jìn)行合法性的檢查和過(guò)濾,則參數(shù)P會(huì)被程序接收而執(zhí)行攻擊者意圖,這就是參數(shù)污染攻擊。
利用參數(shù)污染攻擊漏洞,可以修改HTTP硬編碼參數(shù),改變web應(yīng)用程序行為,訪問(wèn)或利用不可控變量,以及繞過(guò)輸入驗(yàn)證檢查和web應(yīng)用防火墻規(guī)則等。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是針對(duì)現(xiàn)有技術(shù)存在的缺陷,能有效避免HTTP參數(shù)是否被污染。
本發(fā)明所述一種檢測(cè)HTTP參數(shù)污染漏洞的方法包括:
步驟一:網(wǎng)頁(yè)爬行模塊抓取HTTP協(xié)議的web頁(yè)面;
步驟二:HTML解析模塊對(duì)網(wǎng)頁(yè)爬行模塊抓取的web頁(yè)面進(jìn)行解析以獲取web頁(yè)面DOM結(jié)構(gòu),以及, HTML解析模塊提取web頁(yè)面中所有鏈接和表單內(nèi)的URL及調(diào)用參數(shù);
步驟三:將所述URL及調(diào)用參數(shù)傳遞給頁(yè)面響應(yīng)模塊進(jìn)行頁(yè)面請(qǐng)求;
步驟四:頁(yè)面響應(yīng)模塊利用參數(shù)優(yōu)先級(jí)判定算法判斷調(diào)用參數(shù)優(yōu)先級(jí);
步驟五:根據(jù)調(diào)用參數(shù)優(yōu)先級(jí)實(shí)施漏洞掃描,判定漏洞是否存在參數(shù)污染漏洞。
進(jìn)一步的,所述網(wǎng)頁(yè)爬行模塊抓取HTTP協(xié)議的web頁(yè)面的方式為:遍歷URL中遵循HTTP協(xié)議的web站點(diǎn),自動(dòng)抽取web站點(diǎn)層次結(jié)構(gòu),增加URL鏈接到web層次結(jié)構(gòu)中,從中找到所有含有傳遞參數(shù)的可瀏覽和交互的web頁(yè)面。
進(jìn)一步的,所述漏洞掃描的方法為:按照所述調(diào)用參數(shù)傳遞的優(yōu)先級(jí),將經(jīng)過(guò)url編碼的測(cè)試參數(shù)注入到頁(yè)面查詢字符串中已有的參數(shù),檢查響應(yīng)頁(yè)面link元素和form元素中的action域和hidden域是否有注入的測(cè)試參數(shù),借以判斷是否存在參數(shù)污染漏洞。
進(jìn)一步的,所述參數(shù)優(yōu)先級(jí)判定算法為:
對(duì)同一個(gè)調(diào)用參數(shù)進(jìn)行三次不同傳遞值進(jìn)行頁(yè)面請(qǐng)求,設(shè)定第一次調(diào)用參數(shù)傳遞值為A,第二次調(diào)用參數(shù)傳遞值為B,第三次調(diào)用參數(shù)傳遞值為A+B;三次頁(yè)面請(qǐng)求得到的響應(yīng)頁(yè)面分別為P1、P2、P3;通過(guò)判斷所述響應(yīng)頁(yè)面P1、P2、P3的異同進(jìn)行參數(shù)優(yōu)先級(jí)的確定,具體判定為:
當(dāng)響應(yīng)頁(yè)面P1與P3相同時(shí),對(duì)同名異值參數(shù)優(yōu)先級(jí)判定為第一次調(diào)用參數(shù)傳遞值高于第二次調(diào)用參數(shù)傳遞值;
當(dāng)響應(yīng)頁(yè)面P2和P3相同時(shí),對(duì)同名異值參數(shù)優(yōu)先級(jí)判定為第二次調(diào)用參數(shù)傳遞值高于第一次調(diào)用參數(shù)傳遞值;
當(dāng)響應(yīng)頁(yè)面P1、P2與P3均不相同時(shí),使用逗號(hào)、空格符等字符串連接符將第一次調(diào)用參數(shù)傳遞值與第二次調(diào)用參數(shù)傳遞值連接形成組合調(diào)用參數(shù)傳遞值,然后將組合調(diào)用參數(shù)傳遞值與第三次調(diào)用參數(shù)傳遞值進(jìn)行比較,如相同,則對(duì)同名異值參數(shù)優(yōu)先級(jí)判定為第一次調(diào)用參數(shù)傳遞值與第二次調(diào)用參數(shù)傳遞值相同;否則說(shuō)明響應(yīng)頁(yè)面P1、P2 、P3中包含動(dòng)態(tài)信息內(nèi)容,此時(shí),處理響應(yīng)頁(yè)面P1、P2 、P3中的動(dòng)態(tài)信息,重新進(jìn)行參數(shù)優(yōu)先級(jí)判定。
本發(fā)明的有益效果在于:避免了HTTP參數(shù)污染攻擊,防止惡意行為修改HTTP硬編碼參數(shù)、改變web應(yīng)用程序行為、訪問(wèn)或利用不可控變量以及繞過(guò)輸入驗(yàn)證檢查和web應(yīng)用防火墻規(guī)則,有效提高了服務(wù)器的安全性。
具體實(shí)施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,下文對(duì)本發(fā)明技術(shù)方案作進(jìn)一步詳細(xì)說(shuō)明。需要說(shuō)明的是,在不沖突的情況下,本申請(qǐng)的實(shí)施例和實(shí)施例中的特征可以任意相互組合。
本發(fā)明所述的一種檢測(cè)HTTP參數(shù)污染漏洞的方法包括:
步驟一:網(wǎng)頁(yè)爬行模塊抓取HTTP協(xié)議的web頁(yè)面;
步驟二:HTML解析模塊對(duì)網(wǎng)頁(yè)爬行模塊抓取的web頁(yè)面進(jìn)行解析以獲取web頁(yè)面DOM結(jié)構(gòu),以及, HTML解析模塊提取web頁(yè)面中所有鏈接和表單內(nèi)的URL及調(diào)用參數(shù);
步驟三:將所述URL及調(diào)用參數(shù)傳遞給頁(yè)面響應(yīng)模塊進(jìn)行頁(yè)面請(qǐng)求;
步驟四:頁(yè)面響應(yīng)模塊利用參數(shù)優(yōu)先級(jí)判定算法判斷調(diào)用參數(shù)優(yōu)先級(jí);
步驟五:根據(jù)調(diào)用參數(shù)優(yōu)先級(jí)實(shí)施漏洞掃描,判定漏洞是否存在參數(shù)污染漏洞。
進(jìn)一步的,所述網(wǎng)頁(yè)爬行模塊抓取HTTP協(xié)議的web頁(yè)面的方式為:遍歷URL中遵循HTTP協(xié)議的web站點(diǎn),自動(dòng)抽取web站點(diǎn)層次結(jié)構(gòu),增加URL鏈接到web層次結(jié)構(gòu)中,從中找到所有含有傳遞參數(shù)的可瀏覽和交互的web頁(yè)面。
進(jìn)一步的,所述漏洞掃描的方法為:按照所述調(diào)用參數(shù)傳遞的優(yōu)先級(jí),將經(jīng)過(guò)url編碼的測(cè)試參數(shù)注入到頁(yè)面查詢字符串中已有的參數(shù),檢查響應(yīng)頁(yè)面link元素和form元素中的action域和hidden域是否有注入的測(cè)試參數(shù),借以判斷是否存在參數(shù)污染漏洞。
進(jìn)一步的,所述參數(shù)優(yōu)先級(jí)判定算法為:對(duì)同一個(gè)調(diào)用參數(shù)進(jìn)行三次不同傳遞值進(jìn)行頁(yè)面請(qǐng)求,設(shè)定第一次調(diào)用參數(shù)傳遞值為A,第二次調(diào)用參數(shù)傳遞值為B,第三次調(diào)用參數(shù)傳遞值為A+B;三次頁(yè)面請(qǐng)求得到的響應(yīng)頁(yè)面分別為P1、P2、P3;通過(guò)判斷所述響應(yīng)頁(yè)面P1、P2、P3的異同進(jìn)行參數(shù)優(yōu)先級(jí)的確定,具體判定為:
當(dāng)響應(yīng)頁(yè)面P1與P3相同時(shí),對(duì)同名異值參數(shù)優(yōu)先級(jí)判定為第一次調(diào)用參數(shù)傳遞值高于第二次調(diào)用參數(shù)傳遞值;
當(dāng)響應(yīng)頁(yè)面P2和P3相同時(shí),對(duì)同名異值參數(shù)優(yōu)先級(jí)判定為第二次調(diào)用參數(shù)傳遞值高于第一次調(diào)用參數(shù)傳遞值;
當(dāng)響應(yīng)頁(yè)面P1、P2與P3均不相同時(shí),使用逗號(hào)、空格符等字符串連接符將第一次調(diào)用參數(shù)傳遞值與第二次調(diào)用參數(shù)傳遞值連接形成組合調(diào)用參數(shù)傳遞值,然后將組合調(diào)用參數(shù)傳遞值與第三次調(diào)用參數(shù)傳遞值進(jìn)行比較,如相同,則對(duì)同名異值參數(shù)優(yōu)先級(jí)判定為第一次調(diào)用參數(shù)傳遞值與第二次調(diào)用參數(shù)傳遞值相同;否則說(shuō)明響應(yīng)頁(yè)面P1、P2 、P3中包含動(dòng)態(tài)信息內(nèi)容,此時(shí),處理響應(yīng)頁(yè)面P1、P2 、P3中的動(dòng)態(tài)信息,重新進(jìn)行參數(shù)優(yōu)先級(jí)判定。
以上所述,僅為本發(fā)明的較佳實(shí)例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。