本發(fā)明涉及計(jì)算機(jī)軟件信息技術(shù)領(lǐng)域,尤其涉及一種基于數(shù)據(jù)庫(kù)注入測(cè)試的安全測(cè)試系統(tǒng)及方法。
背景技術(shù):
隨著網(wǎng)絡(luò)和計(jì)算機(jī)軟件信息技術(shù)的發(fā)展,網(wǎng)絡(luò)安全越來(lái)越受到大家的重視和關(guān)注,相關(guān)的安全測(cè)試也越來(lái)越必不可少。在安全測(cè)試中,數(shù)據(jù)庫(kù)注入測(cè)試都會(huì)做為一個(gè)使用頻繁的常用安全測(cè)試方法,測(cè)試人員可以通過(guò)該方法模擬黑客進(jìn)行攻擊,驗(yàn)證被測(cè)網(wǎng)址是否對(duì)于用戶提交的參數(shù)未做過(guò)濾就直接放到sql語(yǔ)句中執(zhí)行,導(dǎo)致參數(shù)中的特殊字符打破了sql語(yǔ)句原有邏輯,而被黑客利用該漏洞執(zhí)行了任意sql語(yǔ)句,從而提高被測(cè)網(wǎng)站的安全等級(jí);但是很多云端業(yè)務(wù)系統(tǒng)已經(jīng)部署了waf或已經(jīng)在云端部署了數(shù)據(jù)校驗(yàn)的代碼功能,由于waf或云端業(yè)務(wù)安全代碼對(duì)很多常見特殊字符進(jìn)行了過(guò)濾,導(dǎo)致基于數(shù)據(jù)庫(kù)注入的特殊數(shù)據(jù)庫(kù)構(gòu)造語(yǔ)句不能被正確的解析而在云端業(yè)務(wù)系統(tǒng)生成數(shù)據(jù)庫(kù)語(yǔ)句并提交到后臺(tái)數(shù)據(jù)庫(kù)進(jìn)行合法的執(zhí)行,造成數(shù)據(jù)庫(kù)注入測(cè)試無(wú)法成功;目前的數(shù)據(jù)庫(kù)注入測(cè)試語(yǔ)句,要么是提供了基本的特殊字符,要么只有簡(jiǎn)單的數(shù)據(jù)庫(kù)構(gòu)造語(yǔ)句,只能對(duì)沒有waf或者無(wú)數(shù)據(jù)庫(kù)注入過(guò)濾機(jī)制的業(yè)務(wù)系統(tǒng)進(jìn)行測(cè)試;這些語(yǔ)句很多過(guò)于簡(jiǎn)單,且增加了安全測(cè)試的時(shí)間,以現(xiàn)在比較流行的數(shù)據(jù)庫(kù)注入工具啊d、明小子為例,數(shù)據(jù)庫(kù)注入測(cè)試語(yǔ)句僅僅是簡(jiǎn)單的單引號(hào),and,or等語(yǔ)句;由于waf的存在,通常這些特殊字都會(huì)被轉(zhuǎn)義掉,無(wú)法讓云端業(yè)務(wù)系統(tǒng)最后生成的數(shù)據(jù)庫(kù)語(yǔ)句在提交到數(shù)據(jù)庫(kù)后合法的執(zhí)行;這導(dǎo)致了數(shù)據(jù)庫(kù)注入測(cè)試的局限性,也給安全測(cè)試工作帶來(lái)了很多的不便。因此需要一個(gè)能使數(shù)據(jù)庫(kù)注入自動(dòng)判斷過(guò)濾方式并進(jìn)行有效數(shù)據(jù)庫(kù)注入構(gòu)造的手段,以實(shí)現(xiàn)在安全測(cè)試工作中更簡(jiǎn)單、更快捷、更有效地對(duì)目標(biāo)網(wǎng)站進(jìn)行數(shù)據(jù)庫(kù)注入測(cè)試的需求。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)現(xiàn)有技術(shù)存在的不足之處,本發(fā)明的目的在于提供一種基于數(shù)據(jù)庫(kù)注入測(cè)試的安全測(cè)試系統(tǒng)及方法,可以快速且自動(dòng)的遍歷多種類型及編碼方式的數(shù)據(jù)庫(kù)注入構(gòu)造方法,省去了人工進(jìn)行數(shù)據(jù)庫(kù)過(guò)濾機(jī)制的判斷,實(shí)現(xiàn)了安全測(cè)試的高效性,快捷性和準(zhǔn)確性。
本發(fā)明的目的通過(guò)下述技術(shù)方案實(shí)現(xiàn):
一種基于數(shù)據(jù)庫(kù)注入測(cè)試的安全測(cè)試系統(tǒng),包括云端被防御業(yè)務(wù)系統(tǒng)和若干個(gè)客戶端,所述客戶端與云端被防御業(yè)務(wù)系統(tǒng)網(wǎng)絡(luò)通信連接,所述客戶端內(nèi)部包括響應(yīng)監(jiān)聽模塊、消息識(shí)別模塊、信息收集模塊、信息構(gòu)造模塊和信息發(fā)送模塊;所述客戶端內(nèi)部具有待測(cè)業(yè)務(wù)系統(tǒng),所述待測(cè)業(yè)務(wù)系統(tǒng)包括請(qǐng)求報(bào)文,所述請(qǐng)求報(bào)文包括響應(yīng)數(shù)據(jù)、數(shù)據(jù)流信息;所述云端被防御業(yè)務(wù)系統(tǒng)用于進(jìn)行數(shù)據(jù)庫(kù)注入測(cè)試;
所述響應(yīng)監(jiān)聽模塊用于對(duì)待測(cè)業(yè)務(wù)系統(tǒng)前端請(qǐng)求報(bào)文的響應(yīng)數(shù)據(jù)進(jìn)行監(jiān)視,對(duì)網(wǎng)絡(luò)上信息傳輸進(jìn)行管理,判斷并抓取數(shù)據(jù)流信息;
所述消息識(shí)別模塊用于判斷響應(yīng)監(jiān)聽模塊所抓取的數(shù)據(jù)流信息中的云端響應(yīng)信息是否存在對(duì)數(shù)據(jù)庫(kù)注入的過(guò)濾行為,若屬于數(shù)據(jù)庫(kù)注入過(guò)濾行為則將該數(shù)據(jù)流信息傳遞給信息收集模塊,否則不動(dòng)作;
所述信息收集模塊用于獲取數(shù)據(jù)流信息中關(guān)于數(shù)據(jù)庫(kù)注入過(guò)濾的特定參數(shù)信息,所述特定參數(shù)信息包括特殊字符及特殊數(shù)據(jù)庫(kù)注入構(gòu)造語(yǔ)句;
所述信息構(gòu)造模塊用于接收從信息收集模塊傳遞來(lái)的特定參數(shù)信息,分析并處理特定參數(shù)信息,然后以特定的方式生成一個(gè)新的數(shù)據(jù)庫(kù)注入語(yǔ)句,并將該語(yǔ)句傳遞給信息發(fā)送模塊;
所述信息發(fā)送模塊用于對(duì)從信息構(gòu)造模塊獲取到的數(shù)據(jù)庫(kù)注入語(yǔ)句進(jìn)行語(yǔ)法的檢測(cè),若新的數(shù)據(jù)庫(kù)注入語(yǔ)句語(yǔ)法合法,則直接提交云端被防御業(yè)務(wù)系統(tǒng)進(jìn)行數(shù)據(jù)庫(kù)注入測(cè)試;否則信息發(fā)送模塊將該語(yǔ)句重新傳輸至信息構(gòu)造模塊,并等待信息構(gòu)造模塊重新生成新的數(shù)據(jù)庫(kù)注入語(yǔ)句。
為了更好地實(shí)現(xiàn)本發(fā)明安全測(cè)試系統(tǒng),所述客戶端以軟件開發(fā)工具包sdk的形式安裝或集成在待測(cè)目標(biāo)上;所述待測(cè)目標(biāo)包括網(wǎng)站、服務(wù)器、終端設(shè)備或應(yīng)用軟件。
一種基于數(shù)據(jù)庫(kù)注入測(cè)試的安全測(cè)試方法,包括安全測(cè)試系統(tǒng),所述安全測(cè)試系統(tǒng)包括云端被防御業(yè)務(wù)系統(tǒng)和若干個(gè)客戶端,所述客戶端與云端被防御業(yè)務(wù)系統(tǒng)網(wǎng)絡(luò)通信連接,所述客戶端內(nèi)部包括響應(yīng)監(jiān)聽模塊、消息識(shí)別模塊、信息收集模塊、信息構(gòu)造模塊和信息發(fā)送模塊;其方法如下:
a、所述客戶端內(nèi)部具有待測(cè)業(yè)務(wù)系統(tǒng),所述待測(cè)業(yè)務(wù)系統(tǒng)包括請(qǐng)求報(bào)文,所述請(qǐng)求報(bào)文包括響應(yīng)數(shù)據(jù)、數(shù)據(jù)流信息;所述客戶端與云端被防御業(yè)務(wù)系統(tǒng)連接,所述客戶端的數(shù)量至少為一個(gè);
b、所述客戶端以軟件開發(fā)工具包sdk的形式安裝或集成在待測(cè)目標(biāo)上,客戶端的響應(yīng)監(jiān)聽模塊對(duì)待測(cè)目標(biāo)的網(wǎng)絡(luò)狀態(tài)進(jìn)行數(shù)據(jù)流程監(jiān)視,對(duì)待測(cè)目標(biāo)的網(wǎng)絡(luò)上信息傳輸進(jìn)行管理,判斷并抓取數(shù)據(jù)流信息,所述待測(cè)目標(biāo)至少包括網(wǎng)站、服務(wù)器、終端設(shè)備及應(yīng)用軟件;所述客戶端的消息識(shí)別模塊判斷抓取的數(shù)據(jù)流信息中的報(bào)文請(qǐng)求是否屬于數(shù)據(jù)庫(kù)注入過(guò)濾的行為,是,則進(jìn)入步驟c,否,則不動(dòng)作;
c、所述客戶端的信息收集模塊獲取數(shù)據(jù)流信息中關(guān)于數(shù)據(jù)庫(kù)注入過(guò)濾的特定參數(shù)信息,并將獲取到特定參數(shù)信息發(fā)送至信息構(gòu)造模塊;所述特定參數(shù)信息至少包括特殊字符及特殊數(shù)據(jù)庫(kù)注入構(gòu)造語(yǔ)句;
d、所述客戶端的信息構(gòu)造模塊接收從信息收集模塊傳遞來(lái)的特定參數(shù)信息,分析并處理特定參數(shù)信息,然后以特定的方式生成一個(gè)新的數(shù)據(jù)庫(kù)注入語(yǔ)句,并將該數(shù)據(jù)庫(kù)注入語(yǔ)句傳遞給信息發(fā)送模塊;
e、所述客戶端的信息發(fā)送模塊對(duì)從信息構(gòu)造模塊獲取到的數(shù)據(jù)庫(kù)注入語(yǔ)句進(jìn)行語(yǔ)法的檢測(cè),若新的數(shù)據(jù)庫(kù)注入語(yǔ)句語(yǔ)法合法,則直接提交云端被防御業(yè)務(wù)系統(tǒng)進(jìn)行數(shù)據(jù)庫(kù)注入測(cè)試;否則進(jìn)入步驟d。
在安全測(cè)試方法中,首先,將客戶端及云端被防御業(yè)務(wù)系統(tǒng)之間建立連接;其次,響應(yīng)監(jiān)聽模塊對(duì)被防御目標(biāo)的網(wǎng)絡(luò)狀態(tài)進(jìn)行數(shù)據(jù)流程監(jiān)視,判斷并抓取數(shù)據(jù)流信息,并將其發(fā)送給消息識(shí)別模塊;消息識(shí)別模塊判斷抓取的數(shù)據(jù)流信息中的云端響應(yīng)信息是否存在對(duì)數(shù)據(jù)庫(kù)注入的過(guò)濾行為,若屬于數(shù)據(jù)庫(kù)注入過(guò)濾行為則將該數(shù)據(jù)流信息傳遞給信息收集模塊;信息收集獲取數(shù)據(jù)流信息中關(guān)于數(shù)據(jù)庫(kù)注入過(guò)濾的特定參數(shù)信息,并發(fā)送給信息構(gòu)造模塊;信息構(gòu)造模塊利用從信息收集模塊傳遞來(lái)的特定參數(shù)信息,分析并處理特定參數(shù)信息,然后以特定的方式生成一個(gè)新的數(shù)據(jù)庫(kù)注入語(yǔ)句(如新的編碼格式),并將該語(yǔ)句傳遞給信息發(fā)送模塊;最后,信息發(fā)送模塊對(duì)從信息構(gòu)造模塊獲取到的數(shù)據(jù)庫(kù)語(yǔ)句進(jìn)行語(yǔ)法的檢測(cè),若新的數(shù)據(jù)庫(kù)語(yǔ)句語(yǔ)法合法,則直接提交云端進(jìn)行數(shù)據(jù)庫(kù)注入測(cè)試,否則信息發(fā)送模塊將該語(yǔ)句重新傳輸至信息構(gòu)造模塊,并等待信息構(gòu)造模塊重新生成新的語(yǔ)句。
本發(fā)明較現(xiàn)有技術(shù)相比,具有以下優(yōu)點(diǎn)及有益效果:
采用本發(fā)明對(duì)被測(cè)試目標(biāo)進(jìn)行數(shù)據(jù)庫(kù)注入響應(yīng)的監(jiān)測(cè),并針對(duì)響應(yīng)信息對(duì)新數(shù)據(jù)庫(kù)注入測(cè)試語(yǔ)句的自動(dòng)構(gòu)造,在云端數(shù)據(jù)庫(kù)注入測(cè)試中,可以快速且自動(dòng)的遍歷多種類型及編碼方式的數(shù)據(jù)庫(kù)注入構(gòu)造方法,省去了人工進(jìn)行數(shù)據(jù)庫(kù)過(guò)濾機(jī)制的判斷,實(shí)現(xiàn)了安全測(cè)試的高效性,快捷性和準(zhǔn)確性。
附圖說(shuō)明
圖1為本發(fā)明的原理結(jié)構(gòu)框圖。
具體實(shí)施方式
下面結(jié)合實(shí)施例對(duì)本發(fā)明作進(jìn)一步地詳細(xì)說(shuō)明:
實(shí)施例
如圖1所示,一種基于數(shù)據(jù)庫(kù)注入測(cè)試的安全測(cè)試系統(tǒng),包括云端被防御業(yè)務(wù)系統(tǒng)和若干個(gè)客戶端,所述客戶端與云端被防御業(yè)務(wù)系統(tǒng)網(wǎng)絡(luò)通信連接,所述客戶端內(nèi)部包括響應(yīng)監(jiān)聽模塊、消息識(shí)別模塊、信息收集模塊、信息構(gòu)造模塊和信息發(fā)送模塊;所述客戶端內(nèi)部具有待測(cè)業(yè)務(wù)系統(tǒng),所述待測(cè)業(yè)務(wù)系統(tǒng)包括請(qǐng)求報(bào)文,所述請(qǐng)求報(bào)文包括響應(yīng)數(shù)據(jù)、數(shù)據(jù)流信息;所述云端被防御業(yè)務(wù)系統(tǒng)用于進(jìn)行數(shù)據(jù)庫(kù)注入測(cè)試;所述客戶端以軟件開發(fā)工具包sdk的形式安裝或集成在待測(cè)目標(biāo)上,所述待測(cè)目標(biāo)包括網(wǎng)站、服務(wù)器、終端設(shè)備或應(yīng)用軟件。
所述響應(yīng)監(jiān)聽模塊用于對(duì)待測(cè)業(yè)務(wù)系統(tǒng)前端請(qǐng)求報(bào)文的響應(yīng)數(shù)據(jù)進(jìn)行監(jiān)視,對(duì)網(wǎng)絡(luò)上信息傳輸進(jìn)行管理,判斷并抓取數(shù)據(jù)流信息;
所述消息識(shí)別模塊用于判斷響應(yīng)監(jiān)聽模塊所抓取的數(shù)據(jù)流信息中的云端響應(yīng)信息是否存在對(duì)數(shù)據(jù)庫(kù)注入的過(guò)濾行為,若屬于數(shù)據(jù)庫(kù)注入過(guò)濾行為則將該數(shù)據(jù)流信息傳遞給信息收集模塊,否則不動(dòng)作;
所述信息收集模塊用于獲取數(shù)據(jù)流信息中關(guān)于數(shù)據(jù)庫(kù)注入過(guò)濾的特定參數(shù)信息,所述特定參數(shù)信息包括特殊字符及特殊數(shù)據(jù)庫(kù)注入構(gòu)造語(yǔ)句;
所述信息構(gòu)造模塊用于接收從信息收集模塊傳遞來(lái)的特定參數(shù)信息,分析并處理特定參數(shù)信息,然后以特定的方式生成一個(gè)新的數(shù)據(jù)庫(kù)注入語(yǔ)句,并將該語(yǔ)句傳遞給信息發(fā)送模塊;
所述信息發(fā)送模塊用于對(duì)從信息構(gòu)造模塊獲取到的數(shù)據(jù)庫(kù)注入語(yǔ)句進(jìn)行語(yǔ)法的檢測(cè),若新的數(shù)據(jù)庫(kù)注入語(yǔ)句語(yǔ)法合法,則直接提交云端被防御業(yè)務(wù)系統(tǒng)進(jìn)行數(shù)據(jù)庫(kù)注入測(cè)試;否則信息發(fā)送模塊將該語(yǔ)句重新傳輸至信息構(gòu)造模塊,并等待信息構(gòu)造模塊重新生成新的數(shù)據(jù)庫(kù)注入語(yǔ)句。
本發(fā)明通過(guò)對(duì)待測(cè)目標(biāo)的響應(yīng)數(shù)據(jù)流進(jìn)行抓取分析,當(dāng)發(fā)現(xiàn)其為數(shù)據(jù)庫(kù)注入過(guò)濾行為時(shí),則對(duì)數(shù)據(jù)流中的特定參數(shù)信息,例如:特殊字符及數(shù)據(jù)庫(kù)注入構(gòu)造語(yǔ)句信息,進(jìn)行采集。并根據(jù)采集到的特殊字符及數(shù)據(jù)庫(kù)注入構(gòu)造語(yǔ)句信息進(jìn)行重新構(gòu)造(如將and、單引號(hào)等替換成其他編碼格式),當(dāng)重新構(gòu)造語(yǔ)句并提交到云端后,云端業(yè)務(wù)系統(tǒng)會(huì)由于缺少對(duì)應(yīng)的過(guò)濾機(jī)制而導(dǎo)致數(shù)據(jù)庫(kù)注入攻擊,從而數(shù)據(jù)庫(kù)注入測(cè)試成功;以此,來(lái)實(shí)現(xiàn)數(shù)據(jù)庫(kù)注入過(guò)濾機(jī)制的自動(dòng)判斷和繞過(guò),提高了網(wǎng)站的安全性和安全測(cè)試的有效性。
一種基于數(shù)據(jù)庫(kù)注入測(cè)試的安全測(cè)試方法,包括安全測(cè)試系統(tǒng),所述安全測(cè)試系統(tǒng)包括云端被防御業(yè)務(wù)系統(tǒng)和若干個(gè)客戶端,所述客戶端與云端被防御業(yè)務(wù)系統(tǒng)網(wǎng)絡(luò)通信連接,所述客戶端內(nèi)部包括響應(yīng)監(jiān)聽模塊、消息識(shí)別模塊、信息收集模塊、信息構(gòu)造模塊和信息發(fā)送模塊;其方法如下:
a、所述客戶端內(nèi)部具有待測(cè)業(yè)務(wù)系統(tǒng),所述待測(cè)業(yè)務(wù)系統(tǒng)包括請(qǐng)求報(bào)文,所述請(qǐng)求報(bào)文包括響應(yīng)數(shù)據(jù)、數(shù)據(jù)流信息;所述客戶端與云端被防御業(yè)務(wù)系統(tǒng)連接,所述客戶端的數(shù)量至少為一個(gè);為了保證同時(shí)對(duì)多個(gè)用戶或終端能對(duì)被測(cè)目標(biāo)進(jìn)行數(shù)據(jù)庫(kù)注入過(guò)濾規(guī)則的自動(dòng)判斷和繞過(guò),本實(shí)施例中,客戶端可以是多個(gè),也可以是一個(gè),具體數(shù)量根據(jù)用戶或終端而定。本實(shí)施例中客戶端以sdk的形式安裝或集成在待測(cè)目標(biāo)上,但在實(shí)際應(yīng)用中可以以其他方式進(jìn)行安裝或集成,此處不再贅述。所述被測(cè)目標(biāo)至少包括網(wǎng)站、服務(wù)器、終端設(shè)備及應(yīng)用軟件。
b、所述客戶端以軟件開發(fā)工具包sdk的形式安裝或集成在待測(cè)目標(biāo)上,客戶端的響應(yīng)監(jiān)聽模塊對(duì)待測(cè)目標(biāo)的網(wǎng)絡(luò)狀態(tài)進(jìn)行數(shù)據(jù)流程監(jiān)視,對(duì)待測(cè)目標(biāo)的網(wǎng)絡(luò)上信息傳輸進(jìn)行管理,判斷并抓取數(shù)據(jù)流信息,所述待測(cè)目標(biāo)至少包括網(wǎng)站、服務(wù)器、終端設(shè)備及應(yīng)用軟件;所述客戶端的消息識(shí)別模塊判斷抓取的數(shù)據(jù)流信息中的報(bào)文請(qǐng)求是否屬于數(shù)據(jù)庫(kù)注入過(guò)濾的行為,是,則進(jìn)入步驟c,否,則不動(dòng)作;
c、所述客戶端的信息收集模塊獲取數(shù)據(jù)流信息中關(guān)于數(shù)據(jù)庫(kù)注入過(guò)濾的特定參數(shù)信息,并將獲取到特定參數(shù)信息發(fā)送至信息構(gòu)造模塊;所述特定參數(shù)信息至少包括特殊字符及特殊數(shù)據(jù)庫(kù)注入構(gòu)造語(yǔ)句;
d、所述客戶端的信息構(gòu)造模塊接收從信息收集模塊傳遞來(lái)的特定參數(shù)信息,分析并處理特定參數(shù)信息,然后以特定的方式生成一個(gè)新的數(shù)據(jù)庫(kù)注入語(yǔ)句,并將該數(shù)據(jù)庫(kù)注入語(yǔ)句傳遞給信息發(fā)送模塊;
e、所述客戶端的信息發(fā)送模塊對(duì)從信息構(gòu)造模塊獲取到的數(shù)據(jù)庫(kù)注入語(yǔ)句進(jìn)行語(yǔ)法的檢測(cè),若新的數(shù)據(jù)庫(kù)注入語(yǔ)句語(yǔ)法合法,則直接提交云端被防御業(yè)務(wù)系統(tǒng)進(jìn)行數(shù)據(jù)庫(kù)注入測(cè)試;否則進(jìn)入步驟d。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。