一種檢測(cè)sql注入漏洞的方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及網(wǎng)絡(luò)安全技術(shù),特別涉及一種檢測(cè)SQL注入漏洞的方法及裝置。
【背景技術(shù)】
[0002] 結(jié)構(gòu)化查詢語(yǔ)言(StructuredQueryLanguage,SQL)注入是web應(yīng)用安全中的 常見(jiàn)漏洞。在存在SQL注入的web應(yīng)用中,攻擊者可利用該web應(yīng)用的代碼缺陷,通過(guò)將 SQL命令插入到任何能夠影響數(shù)據(jù)庫(kù)查詢的應(yīng)用程序參數(shù)值中,欺騙服務(wù)器執(zhí)行插入的惡 意SQL命令,從而獲取該web應(yīng)用的敏感信息甚至控制該web應(yīng)用的整個(gè)服務(wù)器。因此,需 要設(shè)計(jì)有效的SQL注入檢測(cè)方法來(lái)檢測(cè)SQL注入漏洞,以防止SQL注入攻擊。
[0003] 實(shí)際應(yīng)用中,SQL注入檢測(cè)方法也是SQL注入攻擊方法,即是采用設(shè)定的SQL注入 攻擊方法對(duì)目標(biāo)服務(wù)器進(jìn)行攻擊,根據(jù)目標(biāo)服務(wù)器的反饋判定是否存在SQL注入漏洞。
[0004] SQL盲注一般分為3類:布爾型、時(shí)間型和錯(cuò)誤注入型。
[0005] 簡(jiǎn)言之,目前基于時(shí)間的SQL注入漏洞檢測(cè)存在的問(wèn)題如下:
[0006] 1)在有限的檢測(cè)時(shí)間內(nèi),無(wú)法獲取大量數(shù)據(jù)去評(píng)估當(dāng)前的網(wǎng)絡(luò)情況;
[0007] 2)在不考慮時(shí)間消耗的情況下,獲取大量數(shù)據(jù)需要發(fā)送大量的請(qǐng)求,在多并發(fā)掃 描的情況下會(huì)對(duì)目標(biāo)服務(wù)器站點(diǎn)造成很大壓力,同時(shí)消耗資源量增大;
[0008] 3)由于掃描過(guò)程中網(wǎng)絡(luò)的不穩(wěn)定性,無(wú)法設(shè)計(jì)一個(gè)合理有效的響應(yīng)時(shí)間區(qū)間預(yù)估 算法;
[0009] 4)為保證掃描結(jié)果的準(zhǔn)確性,均多次使用延時(shí)函數(shù)進(jìn)行判斷,而且單次的延時(shí)時(shí) 間都較長(zhǎng),導(dǎo)致整體掃描耗時(shí)很長(zhǎng);
[0010] 5)對(duì)于數(shù)據(jù)庫(kù)在執(zhí)行含有sle印〇、delay〇等延時(shí)函數(shù)的攻擊向量時(shí),執(zhí)行了攻 擊向量中所描述時(shí)間的整數(shù)倍的情況,傳統(tǒng)的基于時(shí)間區(qū)間的判斷方法會(huì)造成漏報(bào);
[0011] 6)對(duì)于使用含有banchmarkO等重復(fù)執(zhí)行特征表達(dá)式的攻擊向量做基于時(shí)間的 SQL注入漏洞檢測(cè)時(shí),由于不同目標(biāo)環(huán)境執(zhí)行一次特征表達(dá)式的時(shí)間不是固定的,因此,傳 統(tǒng)的基于時(shí)間區(qū)間的判斷方法極易出現(xiàn)誤報(bào)。
[0012] 由此可見(jiàn),現(xiàn)有的時(shí)間型SQL注入漏洞檢測(cè)方法不能夠快速、準(zhǔn)確的進(jìn)行基于時(shí) 間的SQL注入漏洞的檢測(cè)。而且,使用現(xiàn)有的檢測(cè)方法經(jīng)常會(huì)出現(xiàn)漏報(bào)、誤報(bào),嚴(yán)重影響web 應(yīng)用漏洞掃描系統(tǒng)整體的檢測(cè)性能。
【發(fā)明內(nèi)容】
[0013] 本發(fā)明實(shí)施例提供一種檢測(cè)SQL注入漏洞的方法及裝置,用以提高時(shí)間型SQL注 入漏洞的檢測(cè)準(zhǔn)確率,以及降低檢測(cè)時(shí)web應(yīng)用漏洞掃描系統(tǒng)的運(yùn)行負(fù)荷。
[0014] 本發(fā)明實(shí)施例提供的具體技術(shù)方案如下:
[0015] -種檢測(cè)SQL注入漏洞的方法,包括:
[0016] 確定待測(cè)目標(biāo),并根據(jù)選定的延時(shí)矩陣中包含的第一延時(shí)指示和第二延時(shí)指示, 分別生成第一SQL攻擊向量和第二SQL攻擊向量;
[0017] 針對(duì)待測(cè)目標(biāo),依次發(fā)送第一SQL攻擊向量和第二SQL攻擊向量,并記錄響應(yīng)矩 陣,所述響應(yīng)矩陣中分別記錄有對(duì)應(yīng)第一SQL攻擊向量的第一響應(yīng)時(shí)間,以及對(duì)應(yīng)第二SQL 攻擊向量的第二響應(yīng)時(shí)間;
[0018] 計(jì)算所述延時(shí)矩陣和所述響應(yīng)矩陣的相似度,確定所述相似度達(dá)到設(shè)定閾值時(shí), 判定存在時(shí)間型SQL注入漏洞。
[0019] 這樣,可以根據(jù)實(shí)際的響應(yīng)時(shí)間和攻擊向量中期望的延時(shí)時(shí)間所計(jì)算出的相似度 進(jìn)行漏洞存在與否的判定。對(duì)于使用延時(shí)函數(shù)的攻擊向量,不需要再使用較長(zhǎng)的延時(shí)時(shí)間, 也不需要考慮實(shí)際的延時(shí)時(shí)間是否和期望的延時(shí)時(shí)間一致;對(duì)于使用重復(fù)執(zhí)行特征表達(dá)式 的攻擊向量,不需要考慮不同目標(biāo)單次執(zhí)行的時(shí)間差。而且,由于在相近時(shí)刻內(nèi)響應(yīng)時(shí)間受 到的網(wǎng)絡(luò)影響基本一致,在計(jì)算期望的延時(shí)時(shí)間和實(shí)際的響應(yīng)時(shí)間的相似度時(shí),相近的變 化幅度不會(huì)對(duì)相似度的計(jì)算結(jié)果造成決定性的影響,所以不會(huì)影漏洞存在判定的準(zhǔn)確性。 因此,可以保證在不同的網(wǎng)絡(luò)情況及不同的目標(biāo)環(huán)境下,程序能夠快速準(zhǔn)確的檢測(cè)出基于 時(shí)間的SQL注入漏洞,同時(shí),也有效降低了判定SQL注入漏洞給web應(yīng)用漏洞掃描系統(tǒng)帶來(lái) 的運(yùn)行負(fù)荷。
[0020] 較佳的,所述第一延時(shí)指示和第二延時(shí)指示中,直接記錄了需要執(zhí)行的延時(shí)時(shí)長(zhǎng), 或者,記錄了表示特征表達(dá)式重復(fù)執(zhí)行次數(shù)的影響因子,以間接指示延時(shí)時(shí)長(zhǎng)。
[0021] 較佳的,針對(duì)待測(cè)目標(biāo),依次發(fā)送第一SQL攻擊向量和第二SQL攻擊向量,包括:
[0022] 基于所述待測(cè)目標(biāo)表征的目標(biāo)鏈接以及待檢測(cè)對(duì)象,以及基于所述第一SQL攻擊 向量和第二SQL攻擊向量,分別生成第一攻擊請(qǐng)求和第二攻擊請(qǐng)求;
[0023] 依次向所述待測(cè)目標(biāo)發(fā)送所述第一攻擊請(qǐng)求和第二攻擊請(qǐng)求,其中,在接收到所 述第一攻擊請(qǐng)求的響應(yīng)時(shí),再發(fā)送所述第二攻擊請(qǐng)求。
[0024] 較佳的,記錄所述響應(yīng)矩陣之后,在計(jì)算所述延時(shí)矩陣和所述響應(yīng)矩陣的相似度 之前,進(jìn)一步包括:
[0025] 將所述第二響應(yīng)時(shí)間與所述第二延時(shí)指示表征的延時(shí)時(shí)長(zhǎng)進(jìn)行比較,若確定所述 第二響應(yīng)時(shí)間為所述第二延時(shí)指示表征的延時(shí)時(shí)長(zhǎng)的整數(shù)倍,則判定能夠執(zhí)行相似度判 斷;其中,第二延時(shí)指示對(duì)應(yīng)的延時(shí)時(shí)長(zhǎng)大于第一延時(shí)指示對(duì)應(yīng)的延時(shí)時(shí)長(zhǎng)。
[0026] 較佳的,進(jìn)一步包括:
[0027] 若確定所述第二響應(yīng)時(shí)間不為所述第二延時(shí)指示表征的延時(shí)時(shí)長(zhǎng)的整數(shù)倍,則判 定不存在時(shí)間型SQL注入漏洞。
[0028] 較佳的,計(jì)算所述延時(shí)矩陣和所述響應(yīng)矩陣的相似度,包括:
[0029] 采用以下公式計(jì)算所述延時(shí)矩陣和響應(yīng)矩陣的相似度:
[0030]
[0031] 其中,t。表示第一延時(shí)指示,ti表示第二延時(shí)指示,r。表示對(duì)應(yīng)第一SQL攻擊向量 記錄的第一響應(yīng)時(shí)間,^表示對(duì)應(yīng)第二SQL攻擊向量記錄的第二響應(yīng)時(shí)間。
[0032] -種檢測(cè)SQL注入漏洞的裝置,包括:
[0033] 生成單元,用于確定待測(cè)目標(biāo),并根據(jù)選定的延時(shí)矩陣中包含的第一延時(shí)指示和 第二延時(shí)指示,分別生成第一SQL攻擊向量和第二SQL攻擊向量;
[0034] 通信單元,用于針對(duì)待測(cè)目標(biāo),依次發(fā)送第一SQL攻擊向量和第二SQL攻擊向量, 并記錄響應(yīng)矩陣,所述響應(yīng)矩陣中分別記錄有對(duì)應(yīng)第一SQL攻擊向量的第一響應(yīng)時(shí)間,以 及對(duì)應(yīng)第二SQL攻擊向量的第二響應(yīng)時(shí)間;
[0035] 判定單元,用于計(jì)算所述延時(shí)矩陣和所述響應(yīng)矩陣的相似度,確定所述相似度達(dá) 到設(shè)定閾值時(shí),判定存在時(shí)間型SQL注入漏洞。
[0036] 這樣,可以根據(jù)實(shí)際的響應(yīng)時(shí)間和攻擊向量中期望的延時(shí)時(shí)間所計(jì)算出的相似度 進(jìn)行漏洞存在與否的判定。對(duì)于使用延時(shí)函數(shù)的攻擊向量,不需要再使用較長(zhǎng)的延時(shí)時(shí)間, 也不需要考慮實(shí)際的延時(shí)時(shí)間是否和期望的延時(shí)時(shí)間一致;對(duì)于使用重復(fù)執(zhí)行特征表達(dá)式 的攻擊向量,不需要考慮不同目標(biāo)單次執(zhí)行的時(shí)間差。而且,由于在相近時(shí)刻內(nèi)響應(yīng)時(shí)間受 到的網(wǎng)絡(luò)影響基本一致,在計(jì)算期望的延時(shí)時(shí)間和實(shí)際的響應(yīng)時(shí)間的相似度時(shí),相近的變 化幅度不會(huì)對(duì)相似度的計(jì)算結(jié)果造成決定性的影響,所以不會(huì)影漏洞存在判定的準(zhǔn)確性。 因此,可以保證在不同的網(wǎng)絡(luò)情況及不同的目標(biāo)環(huán)境下,程序能夠快速準(zhǔn)確的檢測(cè)出基于 時(shí)間的SQL注入漏洞,同時(shí),也有效降低了判定SQL注入漏洞給web應(yīng)用漏洞掃描系統(tǒng)帶來(lái) 的運(yùn)行負(fù)荷。
[0037] 較佳的,所述生成單元選定的所述第一延時(shí)指示和第二延時(shí)指示中,直接記錄了 需要執(zhí)行的延時(shí)時(shí)長(zhǎng),或者,記錄了表示特征表達(dá)式重復(fù)執(zhí)行次數(shù)的影響因子,以間接指示 延時(shí)時(shí)長(zhǎng)。
[0