首页 / 专利库 / 人工智能 / 置信度 / 一种二阶SQL注入漏洞检测方法、装置及设备

一种二阶SQL注入漏洞检测方法、装置及设备

阅读:1037发布:2020-07-02

专利汇可以提供一种二阶SQL注入漏洞检测方法、装置及设备专利检索,专利查询,专利分析的服务。并且本 说明书 实施例 提供一种二阶SQL注入漏洞检测方法、装置及设备。所述方法包括:获取与所述测试攻击场景相匹配的待验证网页,构建第一待测页面集合和第二待测页面集合;在攻击 载荷 集合中选取测试攻击载荷填充至第一待测页面;获取第二待测页面集合中表单元素与所述第一待测页面的表单元素匹配的页面,构建第三待测页面集合;根据第一待测页面对第三待测页面进行填充,并执行所述第一待测页面和所述第三待测页面;若报错信息集合中存在与所获取的执行结果信息相匹配的报错信息,将所述第一待测页面、所述第三待测页面和所述执行结果信息作为二阶SQL注入漏洞进行反馈。上述方法能够方便准确地对待测 网站 中可能存在的二阶SQL漏洞进行检测。,下面是一种二阶SQL注入漏洞检测方法、装置及设备专利的具体信息内容。

1.一种二阶SQL注入漏洞检测方法,其特征在于,包括:
获取待验证网页;
在所接受到的运行模式信号为测试模式信号时,从攻击场景集合中获取测试攻击场景集合;
获取与测试攻击场景相匹配的待验证网页,构建第一待测页面集合和第二待测页面集合;
在攻击载荷集合中选取测试攻击载荷填充至第一待测页面;
获取第二待测页面集合中表单元素与所述第一待测页面的表单元素匹配的页面,构建第三待测页面集合;
根据第一待测页面对第三待测页面进行填充,并执行所述第一待测页面和所述第三待测页面;
若报错信息集合中存在与所获取的执行结果信息相匹配的报错信息,更新所述攻击场景集合、所述攻击载荷集合和所述报错信息集合;
将所述第一待测页面、所述第三待测页面和所述执行结果信息作为二阶SQL注入漏洞进行反馈。
2.如权利要求1所述的方法,其特征在于,所述攻击场景集合中的攻击场景对应有攻击场景置信度;相应的,所述从攻击场景集合中获取测试攻击场景集合,包括:
基于攻击场景置信度阈值,在攻击场景集合中根据攻击场景置信度的大小选取攻击场景构建测试攻击场景集合。
3.如权利要求1所述的方法,其特征在于,所述攻击载荷集合中的攻击载荷对应有攻击载荷置信度;相应的,所述在攻击载荷集合中选取攻击载荷填充至第一待测页面,包括:
基于攻击载荷置信度阈值,在攻击载荷集合中根据攻击载荷置信度的大小选取攻击载荷构建测试攻击载荷集合;
选取测试攻击载荷集合中的测试攻击载荷填充至第一待测页面。
4.如权利要求1所述的方法,其特征在于,所述报错信息集合中的报错信息对应有报错信息响应次数;所述报错信息响应次数,表示填充所述攻击载荷后触发所述报错信息的次数;相应的,所述根据所述第一待测页面和所述第三待测页面更新所述攻击场景集合、所述攻击载荷集合和所述报错信息集合,包括:
增加填充所述攻击载荷后触发所述报错信息对应的报错信息响应次数。
5.如权利要求1所述的方法,其特征在于,所述获取待验证网页包括:
利用爬虫程序检测目标网站中的网页,获取其中包含表单且能够正常访问的网页,作为待验证网页。
6.如权利要求5所述的方法,其特征在于,所述利用爬虫程序检测目标网站中的网页,获取其中包含表单且能够正常访问的网页,作为待验证网页之后,还包括:
根据所述待验证网页中与待验证URL链表相对应的页面元素,构建网页信息映射集;所述网页信息映射集,包括:入链锚文本、出链锚文本、表单参数信息、表单填充信息、网页标题和服务器正常响应状态码。
7.如权利要求1所述的方法,其特征在于,所述测试攻击场景,包括存储点功能名称和触发点功能名称;所述获取与所述测试攻击场景相匹配的待验证网页,构建第一待测页面集合和第二待测页面集合,包括:
获取待验证网页中功能名称与所述存储点功能名称相匹配的网页,加入所述第一待测页面集合;
获取待验证网页中功能名称与所述触发点功能名称相匹配的网页,加入所述第二待测页面集合;所述功能名称,包括网页入链锚文本。
8.如权利要求1所述的方法,其特征在于,所述在攻击载荷集合中选取攻击载荷填充至第一待测页面之前,还包括:
在所述第一待测页面集合中选取第一待测页面;
获取所述第二待测页面集合中功能名称与所述第一待测页面的功能名称相匹配的页面,构建第二待测页面子集;
相应的,所述获取第二待测页面集合中表单元素与所述第一待测页面匹配的页面,构建第三待测页面集合,包括:
获取第二待测页面子集中表单元素与所述第一待测页面匹配的页面,构建第三待测页面集合。
9.如权利要求1所述的方法,其特征在于,所述在攻击载荷集合中选取攻击载荷填充至第一待测页面,包括:
在第一待测页面集合中选取第一待测页面;
根据第一待测页面中的表单输入项,构建第一待测页面输入项集合;
在第一待测页面输入项集合中选取第一待测页面填充项;
在攻击载荷集合中选取攻击载荷填充至所述第一待测页面填充项。
10.如权利要求9所述的方法,其特征在于,所述在攻击载荷集合中选取攻击载荷填充至所述第一待测页面填充项之后,还包括:
获取除第一待测页面填充项外的第一待测页面输入项,作为第一待测页面补充项;
在主题-实例对集合中获取与所述第一待测页面补充项匹配的主题-实例对,将所述主题-实例对中的实例填充至所述第一待测页面补充项。
11.如权利要求10所述的方法,其特征在于,所述主题-实例对对应有主题-实例对置信度;所述在主题-实例对集合中获取与所述第一待测页面补充项匹配的主题-实例对,将所述主题-实例对中的实例填充至所述第一待测页面补充项,包括:
在主题-实例对集合中获取与所述第一待测页面补充项匹配的至少一个主题-实例对;
根据所述至少一个主题-实例对的主题-实例对置信度的大小,选取主题-实例对并将所述主题-实例对中的实例填充至所述第一待测页面补充项。
12.如权利要求9所述的方法,其特征在于,所述在第一待测页面输入项集合中选取第一待测页面填充项之后,还包括:
若攻击载荷集合对应于所述第一待测页面填充项不存在对应的攻击载荷,在第一待测页面输入项集合中选取未检测的第一待测页面输入项作为第一待测页面填充项。
13.如权利要求9所述的方法,其特征在于,所述将所述第一待测页面、所述第三待测页面和所述执行结果信息作为二阶SQL注入漏洞进行反馈之后,还包括:
判断所述第一待测页面输入项集合中是否存在未检测的第一待测页面输入项集合;
若存在,重复执行选取第一待测页面填充项步骤、填充第一待测页面填充项步骤、构建第三待测页面集合步骤、执行待测页面步骤、更新集合步骤以及反馈步骤直至第一待测页面输入项集合中不存在未检测的第一待测页面输入项为止。
14.如权利要求1所述的方法,其特征在于,所述表单元素,包括:表单标签关键词、表单域参数名、表单域描述性关键词。
15.如权利要求1所述的方法,其特征在于,所述根据第一待测页面对第三待测页面进行填充,包括:
获取所述第三待测页面与所述第一待测页面中表单标识性元素相同的输入项,作为等同输入项;
将所述第一待测页面中的等同输入项的输入值填入所述第三待测页面中的等同输入项中;
获取第三待测页面中除等同输入项以外的输入项,作为非等同输入项;
获取与所述非等同输入项相匹配的主题-实例对,根据其中的实例对所述非等同输入项进行填充。
16.如权利要求6所述的方法,其特征在于,所述执行所述第一待测页面和所述第三待测页面,包括:
将所述第一待测页面发送至页面执行服务器;
在服务器返回的对应于所述第一待测页面的状态码与服务器正常响应状态码相匹配且在正常响应信息集合中存在与所述执行结果信息相匹配的正常响应信息时,将所述第三待测页面发送至页面执行服务器;
获取执行结果信息。
17.如权利要求16所述的方法,其特征在于,所述将所述第一待测页面发送至页面执行服务器之后,还包括:
若服务器返回的对应于所述第一待测页面的状态码与服务器正常响应状态码不匹配或在正常响应信息集合中不存在与所述执行结果信息相匹配的正常响应信息,重新选取攻击载荷进行检测。
18.如权利要求1所述的方法,其特征在于,所述根据第一待测页面对第三待测页面进行填充,并执行所述第一待测页面和所述第三待测页面之后,还包括:
若报错信息集合中不存在与所获取的执行结果信息相匹配的报错信息,判断正常响应信息集合中是否存在与所述执行结果信息相匹配的正常响应信息;
若存在,判断所述第三待测页面不是二阶SQL注入触发点。
19.如权利要求18所述的方法,其特征在于,所述判断正常响应信息集合中是否存在与所述执行结果信息相匹配的正常响应信息之后,还包括:
若正常响应信息集合中不存在与所述执行结果信息相匹配的正常响应信息,获取所述执行结果信息与正常响应信息的区别部分,作为异常信息;
计算对应于所述异常信息的异常信息置信度;
更新所述报错信息集合;
若所述异常信息置信度大于所述异常信息判断阈值,更新所述攻击场景集合和所述攻击载荷集合;
将所述第一待测页面、所述第三待测页面和所述异常信息作为二阶SQL注入漏洞进行反馈。
20.如权利要求19所述的方法,其特征在于,所述异常信息对应有异常信息响应次数;
所述获取所述执行结果信息与正常响应信息的区别部分,作为异常信息之后,还包括:
增加填充所述攻击载荷后触发的所述异常信息对应的异常信息响应次数。
21.如权利要求19所述的方法,其特征在于,所述更新所述攻击场景集合、所述攻击载荷集合和所述报错信息集合,包括:
将所述异常信息置信度和所述攻击载荷对应的异常信息响应次数更新至报错信息集合;
计算所述攻击场景和所述攻击载荷对应的攻击场景置信度和攻击载荷置信度,并更新至所述攻击场景集合和所述攻击载荷集合。
22.如权利要求19所述的方法,其特征在于,所述异常信息对应有异常信息数据等级;
所述计算所述异常信息的执行结果置信度,包括:
当所述异常信息数据等级为低级时,根据公式confidence(i)=RP(i)×IPF(i)计算异常信息置信度,式中,confidence(i)为异常信息i的置信度, 为
异常信息i的响应概率, 为异常信息i的置信度的逆向攻击载荷频
率;|{j|i∈a(j)}|为能够触发所述异常信息i的攻击载荷的数量,ne(j)为注入所述攻击载荷j时出现报错信息的次数,na(j)为注入所述攻击载荷j时出现异常信息的次数,na(i,j)为注入所述攻击载荷j时出现所述异常信息i的次数,|P|为攻击载荷集合中的攻击载荷的数量;
当所述异常信息数据等级为负高级时,将所述异常信息置信度设置为无效值。
23.如权利要求1所述的方法,其特征在于,所述更新所述攻击场景集合、所述攻击载荷集合和所述报错信息集合,包括:
设置所述第一待测页面的功能名称和所述第二待测页面的功能名称对应的攻击场景的攻击场景置信度;
设置所述攻击载荷的攻击载荷置信度;
设置所述报错信息的报错信息置信度。
24.如权利要求23所述的方法,其特征在于,所述攻击场景对应有攻击场景数据等级;
所述攻击场景置信度,根据以下方式获取:
当所述攻击场景数据等级为中级时,若攻击场景集合中存在所述攻击场景,利用公式confidencenew(d)=max(confidenceold(d),n)计算攻击场景置信度,式中,confidencenew(d)为计算得到的攻击场景置信度,max(confidenceold(d),n)为攻击场景集合中所述攻击场景对应的原攻击场景置信度与信任值之间的较大值;若攻击场景集合中不存在所述攻击场景,将所述攻击场景置信度设置为信任值;
当所述攻击场景数据等级为低级时,若攻击场景集合中存在所述攻击场景,利用公式confidencenew(d)=confidenceold(d)+1计算攻击场景置信度,式中,confidencenew(d)为计算得到的攻击场景置信度,confidenceold(d)为攻击场景原本对应的攻击场景置信度;若攻击场景集合中不存在所述攻击场景,将所述攻击场景置信度设置为起始值;
当所述攻击场景数据等级为负高级时,将所述攻击场景置信度设置为无效值。
25.如权利要求23所述的方法,其特征在于,所述攻击载荷对应有攻击载荷数据等级;
所述攻击载荷置信度,根据以下方式获取:
当所述攻击载荷数据等级为高级时,若攻击载荷集合中存在所述攻击载荷,利用公式confidencenew(dn)=max(confidenceold(dn))+1计算攻击载荷置信度,式中,confidencenew(dn)为计算得到的攻击载荷置信度,max(confidenceold(dn))为攻击载荷集合中所述攻击载荷的最大值;若攻击载荷集合中不存在所述攻击载荷,将所述攻击载荷置信度设置为信任值;
当所述攻击载荷数据等级为中级时,若攻击载荷集合中存在所述攻击载荷,利用公式confidencenew(d)=max(confidenceold(d),n)计算攻击载荷置信度,式中,confidencenew(d)为计算得到的攻击载荷置信度,max(confidenceold(d),n)为攻击载荷集合中所述攻击载荷对应的原攻击载荷置信度与信任值之间的较大值;若攻击载荷集合中不存在所述攻击载荷,将所述攻击载荷置信度设置为信任值;
当所述攻击载荷数据等级为低级时,若攻击载荷集合中存在所述攻击载荷,利用公式confidencenew(d)=confidenceold(d)+1计算攻击载荷置信度,式中,confidencenew(d)为计算得到的攻击载荷置信度,confidenceold(d)为攻击载荷原本对应的攻击载荷置信度;若攻击载荷集合中不存在所述攻击载荷,将所述攻击载荷置信度设置为起始值;
当所述攻击载荷数据等级为负高级时,利用公式confidencenew(d)=confidenceold(d)-1计算攻击载荷置信度,式中,confidencenew(d)为计算得到的攻击载荷置信度,confidenceold(d)为攻击载荷原本对应的攻击载荷置信度。
26.如权利要求11所述的方法,其特征在于,所述主题-实例对对应有主题-实例对数据等级;所述主题-实例对置信度,根据以下方式获取:
当所述主题-实例对数据等级为高级时,若主题-实例对集合中存在所述主题t,利用公式 计算主题-实例对置信度,式中,(t,i)为主
题-实例对,confidence(t,i)为计算得到的主题-实例对置信度,
为主题-实例对集合中所述主题t对应的主题-实例对置信度的最大值;若主题-实例对集合中不存在所述主题-实例对,将所述主题-实例对置信度设置为信任值;
当所述主题-实例对数据等级为中级时,若主题-实例对集合中存在所述主题-实例对,利用公式confidencenew(d)=max(confidenceold(d),n)计算主题-实例对置信度,式中,confidencenew(d)为计算得到的主题-实例对置信度,max(confidenceold(d),n)为主题-实例对集合中所述主题-实例对对应的原主题-实例对置信度与信任值之间的较大值;若主题-实例对集合中不存在所述主题-实例对,将所述主题-实例对置信度设置为信任值;
当所述主题-实例对数据等级为低级时,若主题-实例对集合中存在所述主题-实例对,利用公式confidencenew(d)=confidenceold(d)+1计算主题-实例对置信度,式中,confidencenew(d)为计算得到的主题-实例对置信度,confidenceold(d)为主题-实例对原本对应的主题-实例对置信度;若主题-实例对集合中不存在所述主题-实例对,将所述主题-实例对置信度设置为起始值。
27.如权利要求23所述的方法,所述报错信息对应有报错信息数据等级;所述报错信息置信度,根据以下方式获取:
当所述报错信息数据等级为中级时,将所述报错信息置信度设置为信任值。
28.如权利要求3所述的方法,其特征在于,所述将所述第一待测页面、所述第三待测页面和所述执行结果信息作为二阶SQL注入漏洞进行反馈之后,还包括:
判断所述第三待测页面集合中是否存在未被检测的第三待测页面;
若存在,重复执行待测页面步骤、更新集合步骤以及反馈步骤直至第三待测页面集合中不存在未被检测的第三待测页面。
29.如权利要求3所述的方法,其特征在于,所述将所述第一待测页面、所述第三待测页面和所述执行结果信息作为二阶SQL注入漏洞进行反馈之后,还包括:
判断所述测试攻击载荷集合中是否存在未被选取的测试攻击载荷;
若存在,重复执行填充攻击载荷步骤、构建第三待测页面集合步骤、执行待测页面步骤、更新集合步骤以及反馈步骤直至所述测试攻击载荷集合中不存在未被选取的测试攻击载荷。
30.如权利要求1所述的方法,其特征在于,所述将所述第一待测页面、所述第三待测页面和所述执行结果信息作为二阶SQL注入漏洞进行反馈之后,还包括:
判断第一待测页面集合中是否存在未检测的页面;
若存在,重复执行获取其中未检测的页面作为第一待测页面、填充攻击载荷步骤、构建第三待测页面集合步骤、执行待测页面步骤、更新集合步骤以及反馈步骤直至第一待测页面集合中不存在未检测的页面。
31.一种二阶SQL注入漏洞检测装置,其特征在于,包括:
网页获取模,用于获取待验证网页;
攻击场景获取模块,用于在所接受到的运行模式信号为测试模式信号时,从攻击场景集合中获取测试攻击场景集合;
页面集合构建模块,用于获取与测试攻击场景相匹配的待验证网页,构建第一待测页面集合和第二待测页面集合;
攻击载荷填充模块,用于在攻击载荷集合中选取攻击载荷填充至第一待测页面;
第三待测页面集合构建模块,用于获取第二待测页面集合中表单元素与所述第一待测页面的表单元素匹配的页面,构建第三待测页面集合;
页面执行模块,用于根据第一待测页面对第三待测页面进行填充,并执行所述第一待测页面和所述第三待测页面;
集合更新模块,用于在报错信息集合中存在与所获取的执行结果信息相匹配的报错信息时,更新所述攻击场景集合、所述攻击载荷集合和所述报错信息集合;
反馈模块,用于将所述第一待测页面、所述第三待测页面和所述执行结果信息作为二阶SQL注入漏洞进行反馈。
32.如权利要求31所述的装置,其特征在于,所述攻击场景对应有攻击场景置信度;所述攻击载荷对应有攻击载荷置信度;所述报错信息对应有报错信息置信度;所述装置还包括:
用户接口模块,用于接收主题-实例对、攻击场景、攻击载荷、报错信息并扩充主体实例对集合、攻击场景集合、攻击载荷集合和报错信息集合;还用于接收置信度设定指令,并根据所述置信度设定指令来设定主题-实例对置信度和/或攻击场景置信度和/或攻击载荷置信度和/或报错信息置信度和/或异常信息置信度;还用于接收待测网站信息;还用于反馈检测结果。
33.一种二阶SQL注入漏洞检测设备,其特征在于,包括:
存储器,用于存储计算机指令;
处理器,用于执行所述计算机指令实现以下步骤:获取待验证网页;在所接受到的运行模式信号为测试模式信号时,从攻击场景集合中获取测试攻击场景集合;获取与测试攻击场景相匹配的待验证网页,构建第一待测页面集合和第二待测页面集合;在攻击载荷集合中选取攻击载荷填充至第一待测页面;获取第二待测页面集合中表单元素与所述第一待测页面的表单元素匹配的页面,构建第三待测页面集合;根据第一待测页面对第三待测页面进行填充,并执行所述第一待测页面和所述第三待测页面;若报错信息集合中存在与所获取的执行结果信息相匹配的报错信息,更新所述攻击场景集合、所述攻击载荷集合和所述报错信息集合;将所述第一待测页面、所述第三待测页面和所述执行结果信息作为二阶SQL注入漏洞进行反馈。
34.一种二阶SQL漏洞检测方法,其特征在于,包括:
获取待验证网页;
在所接受到的运行模式信号为训练模式信号时,基于所述待验证网页构建第一待测页面集合和第二待测页面集合;
在攻击载荷集合中选取攻击载荷填充至第一待测页面;
获取第二待测页面集合中表单元素与所述第一待测页面的表单元素匹配的页面,构建第三待测页面集合;
根据第一待测页面对第三待测页面进行填充,并执行所述第一待测页面和所述第三待测页面;
若报错信息集合中存在与所获取的执行结果信息相匹配的报错信息,更新攻击场景集合、所述攻击载荷集合和所述报错信息集合;
将所述第一待测页面、所述第三待测页面和所述执行结果信息作为二阶SQL注入漏洞进行反馈。
35.如权利要求34所述的方法,其特征在于,所述报错信息集合中的报错信息对应有报错信息响应次数;所述报错信息响应次数,表示触发二阶SQL注入攻击时返回所述报错信息的次数;相应的,所述根据所述第一待测页面和所述第三待测页面更新所述攻击场景集合、所述攻击载荷集合和所述报错信息集合,包括:
增加填充所述攻击载荷时后触发所述报错信息对应的报错信息响应次数。
36.如权利要求34所述的方法,其特征在于,所述获取待验证网页包括:
利用爬虫程序检测目标网站中的网页,获取其中包含表单且能够正常访问的网页,作为待验证网页。
37.如权利要求36所述的方法,其特征在于,所述利用爬虫程序检测目标网站中的网页,获取其中包含表单且能够正常访问的网页,作为待验证网页之后,还包括:
根据所述待验证网页中与待验证URL链表相对应的页面元素,构建网页信息映射集;所述网页信息映射集,包括:入链锚文本、出链锚文本、表单参数信息、表单填充信息、网页标题和服务器正常响应状态码。
38.如权利要求34所述的方法,其特征在于,所述基于所述待验证网页构建第一待测页面集合和第二待测页面集合,包括:
选取所有待验证网页分别构建第一待测页面集合和第二待测页面集合。
39.如权利要求34所述的方法,其特征在于,所述在攻击载荷集合中选取攻击载荷填充至第一待测页面,包括:
在第一待测页面集合中选取第一待测页面;
根据第一待测页面中的表单输入项,构建第一待测页面输入项集合;
在第一待测页面输入项集合中选取第一待测页面填充项;
在攻击载荷集合中选取攻击载荷填充至所述第一待测页面输入项。
40.如权利要求39所述的方法,其特征在于,所述在攻击载荷集合中选取攻击载荷填充至所述第一待测页面填充项之后,还包括:
获取除第一待测页面填充项外的第一待测页面输入项,作为第一待测页面补充项;
在主题-实例对集合中获取与所述第一待测页面补充项匹配的主题-实例对,将所述主题-实例对中的实例填充至所述第一待测页面补充项。
41.如权利要求40所述的方法,其特征在于,所述主题-实例对对应有主题-实例对置信度;所述在主题-实例对集合中获取与所述第一待测页面补充项匹配的主题-实例对,将所述主题-实例对中的实例填充至所述第一待测页面补充项,包括:
在主题-实例对集合中获取与所述第一待测页面补充项匹配的至少一个主题-实例对;
根据所述至少一个主题-实例对的主题-实例对置信度的大小,选取主题-实例对并将所述主题-实例对中的实例填充至所述第一待测页面补充项。
42.如权利要求39所述的方法,其特征在于,所述在第一待测页面输入项集合中选取第一待测页面填充项之后,还包括:
若攻击载荷集合对应于所述第一待测页面填充项不存在对应的攻击载荷,在第一待测页面输入项集合中选取未检测的第一待测页面输入项作为第一待测页面填充项。
43.如权利要求39所述的方法,其特征在于,所述将所述第一待测页面、所述第三待测页面和所述执行结果信息作为二阶SQL注入漏洞进行反馈之后,还包括:
判断所述第一待测页面输入项集合中是否存在未检测的第一待测页面输入项集合;
若存在,重复执行选取第一待测页面填充项步骤、填充第一待测页面填充项步骤、构建第三待测页面集合步骤、执行待测页面步骤、更新集合步骤以及反馈步骤直至第一待测页面输入项集合中不存在未检测的第一待测页面输入项为止。
44.如权利要求34所述的方法,其特征在于,所述表单元素,包括:表单标签关键词、表单域参数名、表单域描述性关键词。
45.如权利要求34所述的方法,其特征在于,所述根据第一待测页面对第三待测页面进行填充,包括:
获取所述第三待测页面与所述第一待测页面中表单标识性元素相同的输入项,作为等同输入项;
将所述第一待测页面中的等同输入项的输入值填入所述第三待测页面中的等同输入项中;
获取第三待测页面中除等同输入项以外的输入项,作为非等同输入项;
获取与所述非等同输入项相匹配的主题-实例对,根据其中的实例对所述非等同输入项进行填充。
46.如权利要求34所述的方法,其特征在于,所述执行所述第一待测页面和所述第三待测页面,包括:
将所述第一待测页面发送至页面执行服务器;
在服务器返回的对应于所述第一待测页面的状态码与服务器正常响应状态码相匹配且在正常响应信息集合中存在与所述执行结果信息相匹配的正常响应信息时,将所述第三待测页面发送至页面执行服务器;
获取执行结果信息。
47.如权利要求46所述的方法,其特征在于,所述将所述第一待测页面发送至页面执行服务器之后,还包括:
若服务器返回的对应于所述第一待测页面的状态码与服务器正常响应状态码不匹配或在正常响应信息集合中不存在与所述执行结果信息相匹配的正常响应信息,重新选取攻击载荷进行检测。
48.如权利要求34所述的方法,其特征在于,所述根据第一待测页面对第三待测页面进行填充,并执行所述第一待测页面和所述第三待测页面之后,还包括:
若报错信息集合中不存在与所获取的执行结果信息相匹配的报错信息,判断正常响应信息集合中是否存在与所述执行结果信息相匹配的正常响应信息;
若存在,判断所述第三待测页面不是二阶SQL注入触发点。
49.如权利要求48所述的方法,其特征在于,所述判断正常响应信息集合中是否存在于所述执行结果信息相匹配的正常响应信息之后,还包括:
若正常响应信息集合中不存在与所述执行结果信息相匹配的正常响应信息,获取所述执行结果信息与正常响应信息的区别部分,作为异常信息;
计算对应于所述异常信息的异常信息置信度;
更新所述报错信息集合;
若所述异常信息置信度大于所述异常信息判断阈值,更新所述攻击场景集合、所述攻击载荷集合和所述报错信息集合;
将所述第一待测页面、所述第三待测页面和所述执行结果信息作为二阶SQL注入漏洞进行反馈。
50.如权利要求49所述的方法,其特征在于,所述异常信息对应有异常信息响应次数;
所述获取所述执行结果信息与正常响应信息的区别部分,作为异常信息之后,还包括:
增加填充所述攻击载荷后触发所述异常信息对应的异常信息响应次数。
51.如权利要求49所述的方法,其特征在于,所述更新所述攻击场景集合、所述攻击载荷集合和所述报错信息集合,包括:
将所述异常信息置信度和所述攻击载荷对应的异常信息响应次数更新至报错信息集合;
计算所述攻击场景和所述攻击载荷所述报错信息对应的攻击场景置信度和攻击载荷置信度,并更新至所述攻击场景集合和所述攻击载荷集合。
52.如权利要求49所述的方法,其特征在于,所述异常信息对应有异常信息数据等级;
所述计算所述执行结果信息的执行结果置信度,包括:
当所述异常信息数据等级为低级时,根据公式confidence(i)=RP(i)×IPF(i)计算异常信息置信度,式中,confidence(i)为异常信息i的置信度, 为
异常信息i的响应概率, 为异常信息i的置信度的逆向攻击载荷频
率;|{j|i∈a(j)}|为能够触发所述异常信息i的攻击载荷的数量,ne(j)为注入所述攻击载荷j时出现报错信息的次数,na(j)为注入所述攻击载荷j时出现异常信息的次数,na(i,j)为注入所述攻击载荷j时出现所述异常信息i的次数,|P|为攻击载荷集合中的攻击载荷的数量;
当所述异常信息数据等级为负高级时,将所述异常信息置信度设置为无效值。
53.如权利要求34所述的方法,其特征在于,所述更新所述攻击场景集合、所述攻击载荷集合和所述报错信息集合,包括:
将所述第一待测页面的功能名称和所述第二待测页面的功能名称加入所述攻击场景集合,并设置所述第一待测页面的功能名称和所述第二待测页面的功能名称对应的攻击场景的攻击场景置信度;
将所述攻击载荷加入所述攻击载荷集合,并设置所述攻击载荷的攻击载荷置信度;
设置所述报错信息的报错信息置信度。
54.如权利要求53所述的方法,其特征在于,所述攻击场景对应有攻击场景数据等级;
所述攻击场景置信度,根据以下方式获取:
当所述攻击场景数据等级为中级时,若攻击场景集合中存在所述攻击场景,利用公式confidencenew(d)=max(confidenceold(d),n)计算攻击场景置信度,式中,confidencenew(d)为计算得到的攻击场景置信度,max(confidenceold(d),n)为攻击场景集合中所述攻击场景对应的原攻击场景置信度与信任值之间的较大值;若攻击场景集合中不存在所述攻击场景,将所述攻击场景置信度设置为信任值;
当所述攻击场景数据等级为低级时,若攻击场景集合中存在所述攻击场景,利用公式confidencenew(d)=confidenceold(d)+1计算攻击场景置信度,式中,confidencenew(d)为计算得到的攻击场景置信度,confidenceold(d)为攻击场景原本对应的攻击场景置信度;若攻击场景集合中不存在所述攻击场景,将所述攻击场景置信度设置为起始值;
当所述攻击场景数据等级为负高级时,将所述攻击场景置信度设置为无效值。
55.如权利要求53所述的方法,其特征在于,所述攻击载荷对应有攻击载荷数据等级;
所述攻击载荷置信度,根据以下方式获取:
当所述攻击载荷数据等级为高级时,若攻击载荷集合中存在所述攻击载荷,利用公式confidencenew(dn)=max(confidenceold(dn))+1计算攻击载荷置信度,式中,confidencenew(dn)为计算得到的攻击载荷置信度,max(confidenceold(dn))为攻击载荷集合中所述攻击载荷的最大值;若攻击载荷集合中不存在所述攻击载荷,将所述攻击载荷置信度设置为信任值;
当所述攻击载荷数据等级为中级时,若攻击载荷集合中存在所述攻击载荷,利用公式confidencenew(d)=max(confidenceold(d),n)计算攻击载荷置信度,式中,confidencenew(d)为计算得到的攻击载荷置信度,max(confidenceold(d),n)为攻击载荷集合中所述攻击载荷对应的原攻击载荷置信度与信任值之间的较大值;若攻击载荷集合中不存在所述攻击载荷,将所述攻击载荷置信度设置为信任值;
当所述攻击载荷数据等级为低级时,若攻击载荷集合中存在所述攻击载荷,利用公式confidencenew(d)=confidenceold(d)+1计算攻击载荷置信度,式中,confidencenew(d)为计算得到的攻击载荷置信度,confidenceold(d)为攻击载荷原本对应的攻击载荷置信度;若攻击载荷集合中不存在所述攻击载荷,将所述攻击载荷置信度设置为起始值;
当所述攻击载荷数据等级为负高级时,利用公式confidencenew(d)=confidenceold(d)-1计算攻击载荷置信度,式中,confidencenew(d)为计算得到的攻击载荷置信度,confidenceold(d)为攻击载荷原本对应的攻击载荷置信度。
56.如权利要求41所述的方法,其特征在于,所述主题-实例对对应有主题-实例对数据等级;所述主题-实例对置信度,根据以下方式获取:
当所述主题-实例对数据等级为高级时,若主题-实例对集合中存在所述主题t,利用公式 计算主题-实例对置信度,式中,(t,i)为主
题-实例对,confidence(t,i)为计算得到的主题-实例对置信度,
为主题-实例对集合中所述主题t对应的主题-实例对置信度的最大值;若主题-实例对集合中不存在所述主题-实例对,将所述主题-实例对置信度设置为信任值;
当所述主题-实例对数据等级为中级时,若主题-实例对集合中存在所述主题-实例对,利用公式confidencenew(d)=max(confidenceold(d),n)计算主题-实例对置信度,式中,confidencenew(d)为计算得到的主题-实例对置信度,max(confidenceold(d),n)为主题-实例对集合中所述主题-实例对对应的原主题-实例对置信度与信任值之间的较大值;若主题-实例对集合中不存在所述主题-实例对,将所述主题-实例对置信度设置为信任值;
当所述主题-实例对数据等级为低级时,若主题-实例对集合中存在所述主题-实例对,利用公式confidencenew(d)=confidenceold(d)+1计算主题-实例对置信度,式中,confidencenew(d)为计算得到的主题-实例对置信度,confidenceold(d)为主题-实例对原本对应的主题-实例对置信度;若主题-实例对集合中不存在所述主题-实例对,将所述主题-实例对置信度设置为起始值。
57.如权利要求53所述的方法,所述报错信息对应有报错信息数据等级;所述报错信息置信度,根据以下方式获取:
当所述报错信息数据等级为中级时,将所述报错信息置信度设置为信任值。
58.如权利要求34所述的方法,其特征在于,所述将所述第一待测页面、所述第三待测页面和所述执行结果信息作为二阶SQL注入漏洞进行反馈之后,还包括:
判断所述第三待测页面集合中是否存在未被检测的第三待测页面;
若存在,重复执行待测页面步骤、更新集合步骤以及反馈步骤直至第三待测页面集合中不存在未被检测的第三待测页面。
59.如权利要求34所述的方法,其特征在于,所述将所述第一待测页面、所述第三待测页面和所述执行结果信息作为二阶SQL注入漏洞进行反馈之后,还包括:
判断所述攻击载荷集合中是否存在未被选取的攻击载荷;
若存在,重复执行填充攻击载荷步骤、构建第三待测页面集合步骤、执行待测页面步骤、更新集合步骤以及反馈步骤直至所述攻击载荷集合中不存在未被选取的攻击载荷。
60.如权利要求34所述的方法,其特征在于,所述将所述第一待测页面、所述第三待测页面和所述执行结果信息作为二阶SQL注入漏洞进行反馈之后,还包括:
判断第一待测页面集合中是否存在未检测的页面;
若存在,重复执行获取其中未检测的页面作为第一待测页面、填充攻击载荷步骤、构建第三待测页面集合步骤、执行待测页面步骤、更新集合步骤以及反馈步骤直至第一待测页面集合中不存在未检测的页面。
61.一种二阶SQL注入漏洞检测装置,其特征在于,包括:
网页获取模块,用于获取待验证网页;
集合构建模块,用于在所接受到的运行模式信号为训练模式信号时,基于所述待验证网页构建第一待测页面集合和第二待测页面集合;
攻击载荷填充模块,用于在攻击载荷集合中选取攻击载荷填充至第一待测页面;
第三待测页面集合构建模块,用于获取第二待测页面集合中表单元素与所述第一待测页面的表单元素匹配的页面,构建第三待测页面集合;
页面执行模块,用于根据第一待测页面对第三待测页面进行填充,并执行所述第一待测页面和所述第三待测页面;
集合更新模块,用于在报错信息集合中存在与所获取的执行结果信息相匹配的报错信息时,更新攻击场景集合、所述攻击载荷集合和所述报错信息集合;
反馈模块,用于将所述第一待测页面、所述第三待测页面和所述执行结果信息作为二阶SQL注入漏洞进行反馈。
62.如权利要求61所述的装置,所述攻击场景对应有攻击场景置信度;所述攻击载荷对应有攻击载荷置信度;所述报错信息对应有报错信息置信度;所述装置还包括:
用户接口模块,用于接收主题-实例对、攻击场景、攻击载荷、报错信息并扩充主体实例对集合、攻击场景集合、攻击载荷集合和报错信息集合;还用于接收置信度设定指令,并根据所述置信度设定指令来设定主题-实例对置信度和/或攻击场景置信度和/或攻击载荷置信度和/或报错信息置信度和/或异常信息置信度;还用于接收待测网站信息;还用于反馈检测结果。
63.一种二阶SQL注入漏洞检测设备,其特征在于,包括:
存储器,用于存储计算机指令;
处理器,用于执行所述计算机指令实现以下步骤:获取待验证网页;在所接受到的运行模式信号为训练模式信号时,基于所述待验证网页构建第一待测页面集合和第二待测页面集合;在攻击载荷集合中选取攻击载荷填充至第一待测页面;获取第二待测页面集合中表单元素与所述第一待测页面的表单元素匹配的页面,构建第三待测页面集合;根据第一待测页面对第三待测页面进行填充,并执行所述第一待测页面和所述第三待测页面;若报错信息集合中存在与所获取的执行结果信息相匹配的报错信息,更新攻击场景集合、所述攻击载荷集合和所述报错信息集合;将所述第一待测页面、所述第三待测页面和所述执行结果信息作为二阶SQL注入漏洞进行反馈。

说明书全文

一种二阶SQL注入漏洞检测方法、装置及设备

技术领域

[0001] 本发明涉及网络安全检测技术领域,特别涉及一种二阶SQL注入漏洞检测方法、装置及设备。

背景技术

[0002] 随着计算、大数据、移动互联、链等技术的兴起,加快了相应技术领域的发展,但同时,网络中的各项数据也更容易遭到不法分子的窃取,从而造成巨大的损失。其中,SQL注入作为一种常用的网络攻击一直备受黑客们的青睐。在开发客户端/服务器(B/S)的应用程序时,许多开发者忽略了对用户输入数据的合法性进行判断,攻击者就是利用这一点,在客户端的网页上通过表单输入并提交一段恶意的数据库查询代码(即,攻击载荷),服务端的应用程序根据用户提交的数据,未校验数据的合法性就直接构造SQL语句,提交到数据库服务器进行处理,从而完成窃取和篡改应用程序后台敏感数据、增加管理员账号、上传和下载非法文件、安装木等一系列恶意操作,这就是SQL注入(SQL Injection)攻击技术。
[0003] SQL注入包括两类:一阶SQL注入和二阶SQL注入。一阶SQL注入将攻击载荷直接动态构造到SQL查询中并被数据库立即解析执行,而二阶SQL注入则将攻击过程分为存储和触发两个阶段。存储阶段,攻击者把攻击载荷写入用户输入中发送给Web应用,然后数据库执行由Web应用构造的INSERT/UPDATE等语句后把攻击载荷当做数据存入数据库中。触发阶段,攻击者在客户端加载能调用攻击载荷的模块,使Web应用从数据库提取攻击载荷到内存中,然后Web应用提取内存中的数据动态构造SQL指令,数据库在执行Web应用新构造的SQL指令后攻击载荷被解析执行,完成SQL注入。
[0004] 现有的SQL注入检测方法和检测工具绝大多数仅针对一阶SQL注入,二阶SQL注入攻击虽广泛存在,并有持续增长的趋势,却还未引起足够关注。目前,二阶SQL注入攻击的检测还只能依赖于测试人员对页面功能的理解和可能出错位置(比如,用户注册-用户资料修改功能等)的经验判断,对可能发生二阶注入的功能点手动进行检查。但随着代码规模的增加,应用功能的复杂化,依赖经验执行的测试用例根本不能保证覆盖所有二阶SQL注入攻击场景。同时,人工检测的测试方式在测试效率、测试技能等方面的不足更加大了漏报的险。因此,目前亟需一种能够快速准确地实现二阶SQL注入漏洞检测的方法。

发明内容

[0005] 本说明书实施例的目的是提供一种二阶SQL注入漏洞检测方法、装置及设备,以实现快速准确地对二阶SQL注入漏洞进行检测。
[0006] 为了实现上述技术效果,本申请实施例提供了一种二阶SQL注入漏洞检测方法、装置及设备是这样实现的:
[0007] 一种二阶SQL注入漏洞检测方法,包括:
[0008] 获取待验证网页;
[0009] 在所接受到的运行模式信号为测试模式信号时,从攻击场景集合中获取测试攻击场景集合;
[0010] 获取与测试攻击场景相匹配的待验证网页,构建第一待测页面集合和第二待测页面集合;
[0011] 在攻击载荷集合中选取测试攻击载荷填充至第一待测页面;
[0012] 获取第二待测页面集合中表单元素与所述第一待测页面的表单元素匹配的页面,构建第三待测页面集合;
[0013] 根据第一待测页面对第三待测页面进行填充,并执行所述第一待测页面和所述第三待测页面;
[0014] 若报错信息集合中存在与所获取的执行结果信息相匹配的报错信息,更新所述攻击场景集合、所述攻击载荷集合和所述报错信息集合;
[0015] 将所述第一待测页面、所述第三待测页面和所述执行结果信息作为二阶SQL注入漏洞进行反馈。
[0016] 一种二阶SQL注入漏洞检测装置,包括:
[0017] 网页获取模块,用于获取待验证网页;
[0018] 攻击场景获取模块,用于在所接受到的运行模式信号为测试模式信号时,从攻击场景集合中获取测试攻击场景集合;
[0019] 页面集合构建模块,用于获取与测试攻击场景相匹配的待验证网页,构建第一待测页面集合和第二待测页面集合;
[0020] 攻击载荷填充模块,用于在攻击载荷集合中选取攻击载荷填充至第一待测页面;
[0021] 第三待测页面集合构建模块,用于获取第二待测页面集合中表单元素与所述第一待测页面的表单元素匹配的页面,构建第三待测页面集合;
[0022] 页面执行模块,用于根据第一待测页面对第三待测页面进行填充,并执行所述第一待测页面和所述第三待测页面;
[0023] 集合更新模块,用于在报错信息集合中存在与所获取的执行结果信息相匹配的报错信息时,更新所述攻击场景集合、所述攻击载荷集合和所述报错信息集合;
[0024] 反馈模块,用于将所述第一待测页面、所述第三待测页面和所述执行结果信息作为二阶SQL注入漏洞进行反馈。
[0025] 一种二阶SQL注入漏洞检测设备,包括:
[0026] 存储器,用于存储计算机指令;
[0027] 处理器,用于执行所述计算机指令实现以下步骤:获取待验证网页;在所接受到的运行模式信号为测试模式信号时,从攻击场景集合中获取测试攻击场景集合;获取与测试攻击场景相匹配的待验证网页,构建第一待测页面集合和第二待测页面集合;在攻击载荷集合中选取攻击载荷填充至第一待测页面;获取第二待测页面集合中表单元素与所述第一待测页面的表单元素匹配的页面,构建第三待测页面集合;根据第一待测页面对第三待测页面进行填充,并执行所述第一待测页面和所述第三待测页面;若报错信息集合中存在与所获取的执行结果信息相匹配的报错信息,更新所述攻击场景集合、所述攻击载荷集合和所述报错信息集合;将所述第一待测页面、所述第三待测页面和所述执行结果信息作为二阶SQL注入漏洞进行反馈。
[0028] 为了更好地实现对全网SQL漏洞的检测,本申请实施例还提供另一种二阶SQL注入漏洞检测方法、装置及设备是这样实现的:
[0029] 一种二阶SQL漏洞检测方法,包括:
[0030] 获取待验证网页;
[0031] 在所接受到的运行模式信号为训练模式信号时,基于所述待验证网页构建第一待测页面集合和第二待测页面集合;
[0032] 在攻击载荷集合中选取攻击载荷填充至第一待测页面;
[0033] 获取第二待测页面集合中表单元素与所述第一待测页面的表单元素匹配的页面,构建第三待测页面集合;
[0034] 根据第一待测页面对第三待测页面进行填充,并执行所述第一待测页面和所述第三待测页面;
[0035] 若报错信息集合中存在与所获取的执行结果信息相匹配的报错信息,更新攻击场景集合、所述攻击载荷集合和所述报错信息集合;
[0036] 将所述第一待测页面、所述第三待测页面和所述执行结果信息作为二阶SQL注入漏洞进行反馈。
[0037] 一种二阶SQL注入漏洞检测装置,包括:
[0038] 网页获取模块,用于获取待验证网页;
[0039] 集合构建模块,用于在所接受到的运行模式信号为训练模式信号时,基于所述待验证网页构建第一待测页面集合和第二待测页面集合;
[0040] 攻击载荷填充模块,用于在攻击载荷集合中选取攻击载荷填充至第一待测页面;
[0041] 第三待测页面集合构建模块,用于获取第二待测页面集合中表单元素与所述第一待测页面的表单元素匹配的页面,构建第三待测页面集合;
[0042] 页面执行模块,用于根据第一待测页面对第三待测页面进行填充,并执行所述第一待测页面和所述第三待测页面;
[0043] 集合更新模块,用于在报错信息集合中存在与所获取的执行结果信息相匹配的报错信息时,更新攻击场景集合、所述攻击载荷集合和所述报错信息集合;
[0044] 反馈模块,用于将所述第一待测页面、所述第三待测页面和所述执行结果信息作为二阶SQL注入漏洞进行反馈。
[0045] 一种二阶SQL注入漏洞检测设备,包括:
[0046] 存储器,用于存储计算机指令;
[0047] 处理器,用于执行所述计算机指令实现以下步骤:获取待验证网页;在所接受到的运行模式信号为训练模式信号时,基于所述待验证网页构建第一待测页面集合和第二待测页面集合;在攻击载荷集合中选取攻击载荷填充至第一待测页面;获取第二待测页面集合中表单元素与所述第一待测页面的表单元素匹配的页面,构建第三待测页面集合;根据第一待测页面对第三待测页面进行填充,并执行所述第一待测页面和所述第三待测页面;若报错信息集合中存在与所获取的执行结果信息相匹配的报错信息,更新攻击场景集合、所述攻击载荷集合和所述报错信息集合;将所述第一待测页面、所述第三待测页面和所述执行结果信息作为二阶SQL注入漏洞进行反馈。
[0048] 由以上本说明书实施例提供的技术方案可见,本说明书实施例通过选取网页并注入攻击载荷对响应结果进行比对,可以实现对整个网站所有网页二阶SQL注入漏洞的自动扫描。在测试模式下,通过攻击场景所给出的页面以及网页之间的关联性可以实现快速准确地定位二阶SQL注入漏洞。同时,在训练模式下,通过依次对所有页面进行填充并检测可以自动挖掘新的注入点关联规则(即攻击场景)以及漏洞识别标准(即报错信息),避免仅依赖于安全测试人员的测试经验积累而存在的技术局限。附图说明
[0049] 为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0050] 图1为本发明实施例一种知识库中数据置信度按数据来源分级计算原理及方法示意图;
[0051] 图2为本发明实施例一种二阶SQL注入漏洞检测方法的知识库构建阶段的实施流程示意图;
[0052] 图3为本发明实施例一种二阶SQL注入漏洞检测方法的二阶SQL注入漏洞检测阶段的实施流程示意图;
[0053] 图4为本发明实施例一种基于全网的二阶SQL注入漏洞检测方法的实施流程示意图;
[0054] 图5为本发明实施例一种基于语义关联页面的二阶SQL注入漏洞检测方法的实施流程示意图;
[0055] 图6为本发明实施例一种基于异常的漏洞识别方法的工作原理示意图;
[0056] 图7为本发明实施例一种二阶SQL注入漏洞检测方法的知识库扩展阶段的实施流程示意图;
[0057] 图8为本发明实施例一种二阶SQL注入漏洞检测装置的结构示意图;
[0058] 图9为本发明实施例表单相关信息示意图;
[0059] 图10为本发明实施例一种第一待测页面的示意图;
[0060] 图11为本发明实施例一种第三待测页面的示意图;
[0061] 图12为本说明书实施例一种二阶SQL注入漏洞检测方法的流程图
[0062] 图13为本说明书实施例一种二阶SQL注入漏洞检测方法的流程图;
[0063] 图14为本说明书实施例一种二阶SQL注入漏洞检测装置的模块图;
[0064] 图15为本说明书实施例一种二阶SQL注入漏洞检测装置的模块图;
[0065] 图16为本说明书实施例一种二阶SQL注入漏洞检测设备的模块图。

具体实施方式

[0066] 下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
[0067] 为了便于对本说明书中的二阶SQL注入漏洞检测方法的实施方式进行理解,下面结合附图利用一个具体的场景示例对该方法进行说明。
[0068] 在该场景示例中,可以预先设置有知识库。所述知识库中包括报错信息、主题-实例对以及异常信息、攻击载荷、攻击场景等数据。
[0069] 主题-实例对,即填充网页中的表单后,由服务器执行该网页可正常响应的数据,如“密码”-“123456”,可以用于自动填充表单。
[0070] 攻击载荷,即恶意SQL语句,如“'or 1=2--”,用于填充至网页中的填充项来触发二阶SQL注入攻击。
[0071] 攻击场景,即二阶SQL注入存储、触发两阶段存在语义关联的对应网页功能名称,如“注册”-“修改密码”,主要用于在测试模式下快速定位可能的二阶SQL注入点。
[0072] 报错信息,即二阶SQL注入攻击被触发时,服务器返回的报错信息,用于识别二阶SQL注入漏洞。
[0073] 异常信息,即为提交网页表单后服务器所返回的响应信息中与提交正常数据时服务器响应信息不同的部分。异常信息可能是报错信息,也有可能仅仅只是因为提交信息的格式错误等问题导致的网页无法正常执行所产生的信息。对于异常信息需要进行进一步甄别判断其是否可作为漏洞识别标准的异常信息。
[0074] 在知识库中,各个数据对应有置信度。置信度表示着该数据在应用过程中的可信度平。例如,对应于攻击载荷的可信度越高,该攻击载荷越有可能触发二阶SQL注入;对应于主题-实例对的置信度越高,则填充该主题-实例对时服务器正常响应的可能性越大。
[0075] 置信度可以作为优先级或可信度的衡量标准,以便系统可以根据服务器响应结果、以及漏洞扫描结果自适应调整知识库中主题-实例对、攻击场景、攻击载荷、报错信息和异常信息的优先级或可信度,尽可能减少绕过前端、后台校验机制以及过滤限制所损耗的时间,从而提高漏洞检测效率及覆盖率。
[0076] 由于数据来源的不同,知识库和攻击库中数据的置信度更新方法也不同。整个系统运行过程中,数据来源有:用户输入的数据、用户针对系统输出的漏洞信息而提交的反馈信息、爬虫抓取的表单参数信息、服务器能正常响应的表单填充信息、二阶SQL注入漏洞相关信息。将上述数据来源分为不同的等级,给予不同等级的数据不同的优先级及相应的处理方式,可以更加有效地实现对知识库中数据的管理。在一个实施方式中,可以将数据来源分为四个等级。如图1所示,为上述实施方式中知识库和攻击库中数据置信度按数据来源分级计算原理及方法示意图:
[0077] 高级101:用户在测试过程中输入的主题-实例对(如登录账号、密码、邮箱、手机号等)、攻击载荷(如用户在测试过程中,结合服务器返回的校验失败信息,输入的可绕过当前待测网站校验机制的攻击载荷)、爬虫抓取的表单参数信息(如图9所示,包括:表单标签关键词、表单域参数名、表单域描述性关键词、默认输入值、选项列表),都属于对应于当前待测网站的真实数据,是可信的。因此,在测试过程中,即填充表单时,应该最优先考虑,因此设置高级数据的置信度最高。
[0078] 中级102:用户输入的攻击场景、报错信息,非测试阶段用户输入的主题-实例对、攻击载荷,以及用户反馈的确认为真的二阶SQL注入漏洞相关信息,例如异常信息等,都属于具备一定的可信度,但适用于当前待测网站不一定能够绝对获取预期目标的信息。例如:用户在非测试阶段输入了{“国籍”,“中国”}这一主题-实例对,但在某些待测网站的所有表单中可能都不包括“国籍”这一主题。此类来源的数据具备一定的置信度,且所述置信度的大小与写入场景无关,可以设置中级数据的置信度为常数值。
[0079] 低级103:服务器能正常响应的表单填充信息、二阶SQL注入漏洞相关信息(包括,攻击载荷、攻击场景)以及异常信息,都属于需要通过观察漏洞测试结果而获取的后验知识数据。这些数据的置信度依赖于不断测试输出的测试结果来逐步累加提高。此外,针对系统自生成的低级数据,如攻击场景、异常信息、表单填充信息等数据,针对其所设置的初始置信度低于中级数据的初始置信度。
[0080] 特别地,异常信息的置信度计算原理为:多数报错信息只在攻击者输入特定的攻击载荷时才会出现,由此,若该异常信息出现在注入某一攻击载荷时的次数越多、注入其它攻击载荷时的次数越少,它是报错信息的可能性越大;注入某一特定的攻击载荷时返回对应的一个异常信息的次数越多,该异常信息是报错信息的可能性也越大;触发某一异常信息的攻击载荷的种类越少,该异常信息是报错信息的可能性也越大。
[0081] 负高级104:用户反馈的确认为假的二阶SQL注入漏洞相关信息(包括,攻击载荷、攻击场景)、以及用户反馈的确认无效的异常信息(某些对测试有利但与漏洞无关的异常信息,如服务器校验失败等信息,不属于此类。用户可以针对该类信息重新构造攻击载荷,提高检测效率),都属于被用户标记的完全不可信的数据。负高级数据在测试过程中不应该考虑,置信度最低。
[0082] 知识库中所存储数据的置信度是根据以上四种等级的数据来源叠加作用得到的结果。对于不同等级的不同类型的数据的置信度计算方法如下所示:
[0083] 对应于高级数据101的置信度的计算方法为:
[0084] 若主题-实例t已经存在于主题-实例集合中,利用公式
[0085] 计算主题-实例对置信度,式中confidence(t,i)为所述待写入的{主题t,实例i}对应的置信度,
为主题-实例集合中所有主题为t的主题-实例对置信度的最大值;若主题t不在主题-实例集合中时:据公式confidence(t,i)=n,(n∈N∩n>1)计算主题-实例对置信度,其中,n可以是根据实际应用情况所设定的信任值。
[0086] 利用根据公式 计算攻击载荷置信度,式中confidence(d)为所述待写入的攻击载荷d对应的置信度, 为攻击载
荷集合中所有攻击载荷置信度的最大值。
[0087] 对应于中级数据102的置信度的计算方法为:
[0088] 若主题-实例对d在主题-实例集合中、或攻击载荷d在攻击载荷集合中、或攻击场景d在攻击场景集合中时,根据公式confidencenew(d)=max(confidenceold(d),n),(n∈N∩n>1)计算置信度,式中,confidencenew(d)为主题-实例对d或攻击载荷d或攻击场景d所计算得到的置信度,max(confidenceold(d),n)用于取原始的置信度与信任值之间的较大值,所述原始的置信度可以包括主题实例对d的原始的置信度或攻击载荷d的原始的置信度或攻击场景d的原始的置信度;主题-实例对d不在主题-实例集合中、或攻击载荷d不在攻击载荷集合中、或攻击场景d不在攻击场景集合中时,置信度计算方法:根据公式confidencenew(d)=n,(n∈N∩n>1),式中,confidencenew(d)为主题-实例对d或攻击载荷d或攻击场景d的置信度,n可以是根据实际应用情况所设定的信任值。
[0089] 中级报错信息的来源包括用户输入的报错信息、用户反馈的二阶SQL注入漏洞确认为真的二阶SQL注入漏洞信息中的异常信息。根据公式confidencenew(d)=n,(n∈N∩n>1)计算报错信息的置信度,式中,confidencenew(d)为计算得到的报错信息的置信度,n可以是根据实际应用情况所设定的信任值。
[0090] 对应于低级数据103的置信度的计算方法为:
[0091] 若主题-实例对d在主题-实例集合中或攻击载荷d在攻击载荷集合中或攻击场景d在攻击场景集合中时,根据公式confidencenew(d)=confidenceold(d)+1计算置信度,式中,confidencenew(d)为主题-实例对d或攻击载荷d或攻击场景d所计算得到的置信度,confidenceold(d)为主题-实例对d或攻击载荷d或攻击场景d原本对应的置信度;主题-实例对d不在主题-实例集合中或攻击场景d不在攻击场景集合中时,confidencenew(d)=1,式中,confidencenew(d)为主题-实例对d或攻击载荷d或攻击场景d所计算得到的置信度,也可以根据实际需要将上述置信度设置为其他起始值。
[0092] 对于低级异常信息,根据公式confidence(i)=RP(i)×IPF(i)计算置信度,式中,confidence(i)为异常信息i的置信度; 为异常信息i的响应概率(Response Probability),即异常信息i出现在攻击载荷触发的服务器返回信息中的概率,这个概率越大,异常信息i越可能是报错信息。|{j|i∈a(j)}|为异常信息对应的攻击载荷总数,ne(j)为自所述二阶SQL注入漏洞检测装置首次使用起,注入恶意SQL语句(攻击载荷)j时服务器返回所有报错信息的总次数,na(j)为自所述装置首次使用起,注入恶意SQL语句(攻击载荷)j时服务器返回所有异常信息的总次数,na(i,j)为自所述装置首次使用起,注入恶意SQL语句(攻击载荷)j时服务器返回异常信息i的总次数, 为
异常信息i的逆向攻击载荷频率(Inverse Payload Frequency),频率越高,说明异常信息i的攻击载荷类别针对性越强,越有可能是报错信息,|P|为攻击载荷集合中的攻击载荷总数。
[0093] 对应于负高级数据104的置信度的计算方法为:
[0094] 由于攻击载荷的唯一生成方式是用户输入,所以知识库中的所有攻击载荷都是有效的,当用户确认漏洞信息无效时,只说明相关攻击载荷d针对此次漏洞检测结果累加的置信度无效。对于该类攻击载荷置信度计算方法为,根据公式confidencenew(d)=confidenceold(d)-1计算攻击载荷置信度,式中,confidencenew(d)为攻击载荷d所计算得到的置信度,confidenceold(d)为攻击载荷d原本对应的置信度。
[0095] 由于部分攻击场景由系统自动生成,当用户判定攻击场景无效时,说明攻击场景d中所包含的页面不可能存在存储点与触发点之间的关联规则,为避免在测试过程中调用此类攻击场景,影响测试效率,将其置为无效。该类攻击场景置信度计算方法为,根据公式confidencenew(d)=0计算攻击场景置信度,式中confidencenew(d)为攻击场景所计算得到的置信度,实际情况中也可以根据需要设置为其他无效值。
[0096] 由于异常信息由系统自动识别生成,当用户判定异常信息无效时,说明异常信息d不能作为漏洞识别的标准且对测试完全无用,故应将其置为无效,该类异常信息的置信度计算方法:根据公式confidencenew(d)=0计算异常信息置信度,式中confidencenew(d)为异常信息所计算得到的置信度,实际情况中也可以根据需要设置为其他无效值。
[0097] 如图2所示,为本发明实施例中,二阶SQL注入漏洞检测方法的二阶SQL注入漏洞检测阶段的知识库构建阶段实施流程示意图,包括以下步骤:
[0098] S201:接收输入的数据。
[0099] 所输入的数据包括:
[0100] 表单填充实例(即主题-实例对):填充表单后服务器可正常响应的正常数据,如“密码”-“123456”,用于二阶SQL注入漏洞检测阶段的步骤1)的爬虫深度搜索过程中自动填充表单,以爬取全部网页信息;
[0101] 攻击样本(即攻击载荷):在二阶SQL注入存储阶段写入后台数据库的恶意SQL语句,如“'or 1=2--”,用于触发二阶SQL注入攻击;
[0102] 注入点关联规则(即攻击场景):二阶SQL注入存储、触发两阶段对应网页功能名称的语义关联,如“注册”-“修改密码”,用于快速定位可能的二阶SQL注入点;
[0103] 漏洞识别标准(即报错信息):二阶SQL注入攻击被触发时,服务器可能会返回的数据库报错信息,用于识别二阶SQL注入漏洞。如:“#1105–XPATH syntax error:‘^$[DATABASE_NAME]^$’”为注入payload“123’WHERE 1=(updatexml(1,concat(0x5e24,(select database()),0x5e24),1));--”时,服务器可能返回的报错信息。
[0104] S202:知识库初始化。
[0105] 知识库接收用户输入数据,并初始化主题-实例集合、攻击载荷集合、攻击场景集合、报错信息集合,具体过程如下:
[0106] 主题-实例集合初始化:将输入的数据整合为主题-实例集合TI={ti1,ti2,…tis,…}的形式。其中,tis为序偶,tiMap为用户输入的主题和实例的组合,如“密码”→“123456”,而confidence指所述tiMap的置信度,即密码框中输入“123456”后可成功检索更深层网络的可能性。
[0107] 攻击载荷集合初始化:将输入的数据整合为攻击载荷集合P={p1,p2,…,pm,…}的形式。其中,pm为序偶,payload为用户输入的攻击载荷,如“’OR 1=1--”,而confidence指所述payload的置信度,即触发二阶SQL注入的可能性。
[0108] 攻击场景集合初始化:将输入的数据整合为攻击场景集合AP={ap1,ap2,…apn,…}的形式。其中,apn为序偶,apMap为用户输入的可能存在二阶SQL注入漏洞的存储点和触发点的功能名称的组合,如“注册”→“修改密码”,而confidence指所述apMap的置信度,即存在二阶SQL注入漏洞的可能性。
[0109] 报错信息集合初始化:将输入的数据整合为报错信息集合E={e1,e2,…,el,…}的形式。其中,el为三元组,error为用户输入的二阶SQL注入被触发后结果页面上可能会出现的报错信息;ptimes={pt1,pt2,…,ptk,…}中,ptk为序偶,其中payload为攻击载荷集合中存储的攻击载荷,times为从所述error写入报错信息表开始,注入所述payload后服务器返回所述error的次数;confidence指所述error的置信度。
[0110] 在报错信息集合中添加一项攻击载荷响应次数ptimes的目的是为了后续在系统运行过程中,用于进行异常信息置信度的计算,得到异常信息的置信度,即异常信息属于报错信息的可能性。
[0111] 如图3所示,为本发明实施例中,二阶SQL注入漏洞检测方法的二阶SQL注入漏洞检测阶段的实施流程示意图,包括以下步骤:
[0112] S301:设置待验证网页。
[0113] 通过网页爬虫程序,基于知识库的主题-实例集合中可以进行填充的表单进行深度搜索,从而获取目标网站的所有网页。具体过程为:以初始种子页(一般为待测网站首页)为起点,进行深度搜索;提取表单参数信息(包括:表单标签关键词、表单域参数名、表单域描述性关键词、默认输入值、选项列表),更新知识库中的主题-实例集合。
[0114] 下面利用一个具体的示例对上述过程进行说明。如图9所示,从表单标签关键词、表单域参数名、表单域描述性关键词中提取主题,从默认输入值、选项列表中提取实例,构建主题-实例对({“邮箱”“, xxxx@163.com”},{“昵称”,“Maggie”},{“性别”,“female”},{“性别”,“male”},{“密码”,“123456”},{“mail”,“xxxx@163.com”},{“nickname”,“Maggie”},{“sex”,“female”},{“sex”,“male”},{“sex”,“女”},{“sex”,“男”},{“password”,“123456”},{“qq”,“xxxx@163.com”},{“foxmail”,“xxxx@163.com”}),发送给知识库用于更新主题-实例集合。
[0115] 利用主题-实例集合填充网页中的表单的具体做法为:
[0116] 首先,提取主题集。具体的实施方式可以是:从表单标签关键词、表单域参数名、表单域描述性关键词中提取每个输入域对应的主题集,如图9中4个输入域对应的主题集为:{“邮箱”,“mail”“, qq”,“foxmail”},{“昵称”“, nickname”},{“性别”,”sex”},{“密码”,”password”}。
[0117] 其次,获取实例。如图9所示,以第一个输入域为例,对应的主题集为{“邮箱”,“mail”,“qq”,“foxmail”},并根据所述主题集,遍历主题-实例集合,判断主题“邮箱”,“mail”,“qq”,“foxmail”是否在主题-实例集合中;若都不在,则系统自动生成一个实例(如,数字1)作为输入域的填充值;否则,获取遍历得到的主题-实例对,提取置信度最大的主题-实例对中的实例,作为输入域的填充值;
[0118] 通过上述方法依次对表单进行填充,并提交表单。若提交表单后服务器正常响应,则表单所在页面可正常访问
[0119] 若服务器不能正常响应,继续判断填充值是否为系统自生成实例;若是,则判定表单所在页面访问失败;否则,过滤访问失败的主题-实例对,继续遍历主题-实例集合获取实例对表单进行填充。
[0120] 重复执行上述步骤直至利用主题“邮箱”,“mail”“, qq”“, foxmail”对表单中的输入项填充完毕。
[0121] 上述步骤实施完毕之后,再抽取包含表单且可正常访问的网页,构成待验证URL链表以及网页相关信息映射集(即,待验证URL链表中链接所指向网页的相关信息,如入链、出链、锚文本、表单相关信息、网页title、正常提交表单后的服务器响应信息等。)。从网页相关信息映射集中提取表单填充信息,构建主题-实例对,发送给知识库用于更新主题-实例集合。
[0122] S302:判断运行模式。
[0123] 根据判断结果,若为训练模式,则执行步骤S303;若为测试模式,则执行步骤S304。
[0124] 在所述训练模式下,整个漏洞检测过程会遍历全网,目的是挖掘新的主题-实例对、攻击场景、以及数据库报错信息,根据测试结果调整知识库四类数据样本的相关置信度,从而提高测试模式下的测试效率,减少漏报率。
[0125] 在所述测试模式下,整个漏洞检测过程采用基于语义关联页面检测方法,仅测试可能存在二阶SQL注入漏洞的网页,节省运算时间。
[0126] S303:基于全网的二阶SQL注入漏洞检测。
[0127] 在训练模式下,进行基于全网的二阶SQL注入漏洞检测。具体的训练过程会在后续步骤进行叙述。
[0128] S304:基于语义关联页面的二阶SQL注入漏洞检测。
[0129] 在测试模式下,进行基于语义关联页面的二阶SQL注入漏洞检测。具体的训练过程会在后续步骤进行叙述。
[0130] 如图4所示,为本说明书实施例中,基于全网的二阶SQL注入漏洞检测方法的实施流程示意图,包括以下步骤:
[0131] S401:初始化第一待测页面集和第二待测页面集,包括:将所述待验证网页添加至第一待测页面集和第二待测页面集中。
[0132] 二阶SQL注入攻击的特点是:攻击者在客户端将攻击载荷通过某一存储类页面提交至Web应用并存入后台数据库中时,由于所述存储类页面实现了一阶SQL注入的防御,因而攻击者不会立即达到攻击目的(窃取敏感信息、提权等),而是要等到攻击者通过访问另一未对数据库来源的数据做防御的触发页面,加载能调用之前植入的攻击载荷的模块,将攻击载荷动态构造到SQL执行语句中,二阶SQL注入攻击才会被触发。
[0133] 因此,完成一个二阶SQL注入攻击,需要两个页面:存储类页面,接收用户输入信息并存储的功能页面,如“注册”、“留言板”、“评论区”等,和触发类页面,调用用户输入信息的功能页面,如“修改密码”,用户在提交密码修改请求至Web应用、后台数据库更新密码之前,Web应用会验证用户名和密码,并把数据库中对应用户的数据全部提取到内存中以构造修改后的用户记录,此时若动态构造SQL语句执行,则很可能触发二阶SQL注入。
[0134] 所述第一待测页面集和第二待测页面集,分别包括:待测网站所有存储类页面和触发类页面。“基于全网的二阶SQL注入漏洞检测方法”是在存储类页面与触发类页面之间只存在共用同一用户输入数据的关系、知识库中不包含两类页面特征信息的假设下所采用的全网覆盖检测方法,以防因知识库信息不全而造成漏报。同时,也可以利用此方法结合系统自学习机制扩充知识库中两类页面的特征信息。因此,第一待测页面集和第二待测页面集包含所获取到的全部待测网页。
[0135] S402:判断第一待测页面集中所有网页是否都处理完毕,是则结束,否则转步骤S403。
[0136] 若经过该步骤的判断,发现所有网页均已经处理完毕,即,所有页面都已经利用下面的方法进行了检测,则说明已经不存在待检测的网页,训练过程已经结束。
[0137] 若发现还存在未处理的网页,则需要继续执行下述步骤。
[0138] S403:提取所述第一待测页面、第一待测页面输入项集和第二待测页面子集。
[0139] 上述执行步骤包括:提取第一待测页面集中未被处理的页面,作为所选第一待测页面,并提取第一待测页面中所有输入项,构建第一待测页面输入项集;提取第二待测页面集中所有页面,构建第二待测页面子集。
[0140] S404:判断所述第一待测页面输入项集中所有输入项是否检测完毕,是则转步骤S402,否则转步骤S405。
[0141] 若该待测页面中的输入项均已经检测完毕,则说明该网页已经检测完毕,因此重新返回步骤S402判断是否仍然存在未检测的网页。
[0142] S405:提取所述第一待测页面输入项。
[0143] 若第一待测页面输入项集中存在未检测或未检测完毕的输入项,提取其中未被检测的第一待测页面输入项,用于执行后续检测过程。
[0144] S406:判断是否遍历所有攻击载荷,是则转步骤S404,否则转步骤S407。
[0145] 如果针对该输入项已经利用所有可能的攻击载荷进行注入检测了,则该输入项已经检测完毕,重新返回步骤S404判断该页面中是否存在还没有进行检测的输入项。
[0146] S407:将置信度最大的攻击载荷填充至所述第一待测页面输入项,构造二阶SQL注入存储请求发送至Web服务器。
[0147] 所述置信度最大的攻击载荷指的是触发二阶SQL注入攻击次数最多,即,触发二阶SQL注入几率最高的攻击载荷。
[0148] 所述构造二阶SQL注入存储请求的方法,包括:
[0149] 将所选攻击载荷填充至所选输入项;
[0150] 对于该页面中除填充攻击载荷的输入项外的其他输入项,则将所述第一待测页面对应的在上述步骤S301中获取的网页相关信息映射集中的表单填充信息作为填充值,如图10所示,所选输入项对应表单标签为“昵称”,攻击载荷集合中置信度最大的攻击载荷为“’OR 1=1--”,因而将“’OR 1=1--”作为“昵称”的填充值,另外两个输入项“邮箱”和“密码”仍然沿用深度搜索时选定的服务器能正常响应的填充值“test1234@foxmail.com”和
“123456”进行填充;
[0151] 将表单域参数名与各表单填充值配对后,与请求头组合构造二阶SQL注入存储请求。
[0152] S408:判断攻击载荷是否存入后台数据库,是则转步骤S409,否则转步骤S406。
[0153] 在一个实施方式中,判断是否成功存入后台数据库的方法是,根据服务器返回的状态码判断服务器是否正常响应,若返回状态码为200,则将S301获取的网页相关信息映射集中的正常提交表单后的服务器响应信息,与提交攻击请求后的服务器响应信息进行比较,若相同,则表示攻击载荷已成功存入后台数据库。
[0154] 若返回状态码不为200,表示攻击载荷存储失败,重新存储或获取其他攻击载荷进行填充。
[0155] S409:提取第三待测页面集。
[0156] 所述第三待测页面集,包括:第二待测页面集中与所述第一待测页面共用同一用户输入数据的页面。
[0157] 所述提取第三待测页面集,包括:提取第二待测页面子集中表单标识性元素(即,表单标签关键词、表单域参数名、表单域描述性关键词)与第一待测页面的表单标识性元素有交集的页面,构建第三待测页面集。如图10和图11,page2与page1的表单标签关键词存在交集:{“昵称”“, 密码”},因此page2可能是page1对应的触发类页面,可加入第三待测页面集。
[0158] S410:判断是否第三待测页面集中所有网页都处理完毕,是则转步骤S406,否则转步骤S411。
[0159] 若提取出的所有第三待测页面均已处理完毕,则说明此时对应于所选出的攻击载荷所对应的第三页面已经测试完毕,重新回到步骤S406判断是否存在其他待测试的攻击载荷。
[0160] S411:提取第三待测页面。
[0161] 获取第三待测页面集中并未处理的页面,作为下一步中需要进行测试的第三待测页面。
[0162] S412:根据所述第一待测页面,填充所述第三待测页面,构造二阶SQL注入触发请求发送至Web服务器。
[0163] 所述二阶SQL注入触发请求构造方法,包括:
[0164] 获取第三待测页面与第一待测页面表单标识性元素相同的输入项,用第一待测页面输入值填充至所述第三待测页面,如图11中的“昵称”、“旧密码”、“新密码”对应的填充至,填充触发页面中;
[0165] 所述第三待测页面中,与第一待测页面表单标识性元素不同的输入项,将所述第三待测页面对应的S301获取的网页相关信息映射集中的表单填充信息作为填充值;
[0166] 将表单域参数名与各表单填充值配对后,与请求头组合构造二阶SQL注入触发请求。
[0167] S413:采用基于异常的漏洞识别方法判断所述第三待测页面是否为二阶SQL注入触发点,是则将二阶SQL注入漏洞相关信息反馈至知识库和前端用户,转步骤S410。
[0168] 所述采用基于异常的漏洞识别方法判断所述第三待测页面是否为二阶SQL注入触发点的步骤为:
[0169] 将提交攻击请求后的服务器响应信息与知识库的报错信息表中的报错信息进行匹配,若匹配成功,则判定所述第三待测页面是二阶SQL注入触发点;
[0170] 若匹配失败,则将S301获取的网页相关信息映射集中的正常提交表单后的服务器响应信息,与提交攻击请求后的服务器响应信息进行比较,若相同,则判定所述第三待测页面不是二阶SQL注入触发点;若不同,则提取不同的部分为异常信息。后续的步骤S601-S604会详细叙述判断异常信息是否为报错信息的步骤。
[0171] 所述二阶SQL注入漏洞相关信息,包括:漏洞发现时间、待测网站名称标识、存储点URL、存储点功能名、攻击载荷存储请求、攻击载荷存储参数名、攻击载荷、触发点URL、触发点功能名、触发请求、服务器报错信息、服务器异常信息、置信度中的全部或部分项。
[0172] 如图5所示,为本说明书实施例中,基于语义关联页面的二阶SQL注入漏洞检测方法的实施流程示意图,包括以下步骤:
[0173] S501:初始化第一待测页面集和第二待测页面集。
[0174] 上述步骤具体包括:设定攻击场景置信度阈值,并提取知识库的攻击场景集合中置信度大于攻击场景置信度阈值的攻击场景(即{存储点功能名称,触发点功能名称}序偶),构建测试攻击场景集;将所述待验证网页的功能名称与测试攻击场景集中存储点功能名称相匹配的URL作为疑似二阶SQL注入存储点,构建第一待测页面集;将所述待验证网页的功能名称与测试攻击场景集中触发点功能名称相匹配的URL作为疑似二阶SQL注入触发点,构建第二待测页面集。
[0175] “基于语义关联的二阶SQL注入漏洞分析方法”的基本思想是:在二阶SQL注入这个由2个攻击步骤(存储阶段和触发阶段)组成的入侵过程中,前一个攻击产生的可能后果就是后一个攻击的前提条件,即,只有存储阶段在某一功能点用户成功将攻击载荷存入了数据表中的某个字段,触发阶段才有可能在另一功能点检索出这个被存储的字段中的攻击载荷并构建SQL语句。由于存储阶段与触发阶段共用同一数据表的同一字段,所以存储点与触发点之间在语义上必定存在极大关联,如图10和图11,用户在功能名为“注册新账号”页面写入数据库的昵称、密码等信息,极有可能在功能名为“修改密码”页面被调用,且两个页面的表单标识性元素(即,表单域参数名、表单标签关键词、表单域描述性关键词)相同的可能性很大(图10和图11中,两页面表单标签关键词存在交集:{“昵称”“, 密码”})。利用这种因果关系,提取同一二阶SQL注入攻击中存储点与触发点的特征项(功能名、表单域参数名、表单标签关键词、表单域描述性关键词),建立映射,构建攻击场景({”存储点功能名”,”触发点功能名”}),有利于缩小检索范围,提高测试效率。
[0176] 因此,所述第一待测页面集和第二待测页面集是基于攻击场景集合存储点、触发点功能名称以及置信度进行相关性选择之后,得到的漏洞命中率较高的存储类页面和触发类页面的集合。
[0177] S502:判断是否第一待测页面集中所有网页都处理完毕,是则结束测试过程,否则转步骤S503。
[0178] S503:提取所述第一待测页面、第一待测页面输入项集和第二待测页面子集。
[0179] 上述步骤包括:提取第一待测页面集中未被处理的页面,作为所选第一待测页面,并提取第一待测页面中所有输入项,构建第一待测页面输入项集;根据所选第一待测页面,将功能名称与第一待测页面功能名称相匹配、且对应的攻击场景的置信度大于攻击场景置信度阈值的页面,作为所选第二待测页面,构建第二待测页面子集。
[0180] S504:判断所述第一待测页面输入项集中所有输入项是否检测完毕,是则转步骤S502,否则转步骤S505。
[0181] S505:提取所述第一待测页面输入项。
[0182] S506:判断是否遍历所有攻击载荷,是则转步骤S504,否则转步骤S507。
[0183] S507:将置信度最大的攻击载荷填充至所述第一待测页面输入项,构造二阶SQL注入存储请求发送至Web服务器。
[0184] 该步骤详细过程可参考步骤S407中的叙述,在此不再赘述。
[0185] S508:判断攻击载荷是否存入后台数据库,是则转步骤S509,否则转步骤S506。
[0186] 该步骤详细过程可参考步骤S408中的叙述,在此不再赘述。
[0187] S509:提取第三待测页面集;
[0188] 该步骤详细过程可参考步骤S409中的叙述,在此不再赘述。
[0189] S510:判断是否第三待测页面集中所有网页都处理完毕,是则转步骤S506,否则转步骤S511。
[0190] S511:提取第三待测页面。
[0191] S512:根据所述第一待测页面,填充所述第三待测页面,构造二阶SQL注入触发请求发送至Web服务器。
[0192] 该步骤详细过程可参考步骤S412中的叙述,在此不再赘述。
[0193] S513:采用基于异常的漏洞识别方法判断所述第三待测页面是否为二阶SQL注入触发点,是则将二阶SQL注入漏洞相关信息反馈至知识库和前端用户,转步骤S510。
[0194] 该步骤详细过程可参考步骤S413中的叙述,在此不再赘述。
[0195] 如图6所示,为本发明实施例中,基于异常的漏洞识别方法的工作原理示意图,包括以下步骤:
[0196] S601:提取所述服务器响应信息中与提交正常数据的服务器响应信息不同的部分,作为异常信息。
[0197] 所述异常信息表示那些非服务器正常响应返回的信息,包括:
[0198] (1)暂未被判定的后台数据库报错信息,例如,存储点输入恶意SQL语句“’or 1=(SELECT@@VERSION)--”,某待测网站页面出现以下信息:“Conversion failed when converting the nvarchar value'Microsoft SQL Server 2008(SP3)-10.0.5500.0(X64)Sep 21 2011 22:45:45 Copyright(c)1988-2008 Microsoft Corporation Developer Edition(64-bit)on Windows NT 6.1(Build 7601:Service Pack 1)'to data type int.”,表明服务器不但报错,还将服务器的操作系统和SQL Server版本信息显示出来了,这类信息显然是报错信息,但由于各产品服务器相关信息不同,报的错也不尽相同,或由于攻击载荷初次使用,报错信息表中暂未存储此类信息,都有可能导致报错信息不识别。此时系统暂将其设为异常信息,供用户确认,有助于减少漏报率。
[0199] “基于异常的漏洞识别方法”的目的之一是要识别此类信息供用户确认,来扩充报错信息表,减少漏报率。
[0200] (2)服务器校验失败返回的信息。如,“您发送请求的参数中含有非法字符”,用户读取到这些信息后,可利用大小写混合、替换关键字、编码、注释、等价函数、特殊符号等方法构造更容易绕过后台校验机制的攻击载荷,在注入点进行手工尝试,注入成功后,将这个新的攻击载荷添加到攻击载荷集合中,或者直接将新构造的攻击载荷写入系统中,做进一步测试。
[0201] 这类异常信息虽然并非数据库报错信息,无需存入报错信息表中,但对提高测试效率有利,应该保留。
[0202] (3)统一跳转的错误页面信息、其他正常查询结果信息等。这些异常信息为非漏洞识别信息,应舍弃。
[0203] (4)用户无法确定其类型的信息。为避免漏报,将这类异常信息判为疑似报错信息。
[0204] “基于异常的漏洞识别方法”的目的之二就是利用报错信息的特点(多数报错信息只在攻击者输入某些特定payload(即攻击载荷)时才会出现)来对此类信息进行分析处理,自动识别报错信息,无需用户参与,从而降低人为因素对系统测试性能的限制。
[0205] S602:判断所述异常信息是否无效,若是,则判定第三待测页面不是二阶SQL注入触发点;若否,则转步骤S603。
[0206] 所述无效异常信息属于S601中的第3)类异常信息,即为经用户确认无效、置信度为0的异常信息。
[0207] S603:计算异常信息置信度,并将{异常信息,攻击载荷,置信度}三元组反馈给知识库。
[0208] 所述异常信息置信度计算方法可参考103中的叙述,在此不再赘述。
[0209] 所述{异常信息,攻击载荷,置信度}三元组中的攻击载荷指的是,本轮二阶SQL注入存储阶段注入的攻击载荷。
[0210] S604:设定异常信息判断阈值,若置信度大于异常信息判断阈值,则判定所述第三待测页面是二阶SQL注入触发点;否则,判定所述第三待测页面不是二阶SQL注入触发点。
[0211] 根据103中异常信息置信度计算原理,异常信息置信度越大,说明它是报错信息的可能性越大。
[0212] 如图7所示,为本说明书实施例中,二阶SQL注入漏洞检测方法的知识库扩展阶段的实施流程示意图,包括以下步骤:
[0213] S701:接收数据。
[0214] 所接受的数据,可以是上述攻击载荷、攻击场景、主题-实例对、报错信息、异常信息等。
[0215] S702:判断数据类别是否为报错信息或异常信息。
[0216] 若为报错信息或异常信息,则转步骤S703;否则,转步骤S704。
[0217] S703:按数据来源计算所述报错信息或异常信息的置信度及攻击载荷响应次数,更新报错信息集合。
[0218] 所述异常信息、报错信息的置信度计算方法可参考101~104中的叙述,在此不再赘述。
[0219] S704:按数据来源计算所述主题-实例对或攻击载荷或攻击场景的置信度,更新主题-实例集合或攻击载荷集合或攻击场景集合。
[0220] 所述主题-实例对、攻击载荷、攻击场景的置信度计算方法可参考101~104中的叙述,在此不再赘述。
[0221] 如图8所示,为本发明实施例中,二阶SQL注入漏洞检测装置的结构示意图,包括:
[0222] 用户接口单元801,传递用户与系统间的交互信息。
[0223] 网络信息采集单元802:通过网页爬虫程序检测目标网站的所有网页,提取包含表单且可正常访问的网页,构成待验证URL链表以及网页相关信息映射集。
[0224] 数据单元803:接收并存储系统运行过程中的各类数据,为网络信息采集单元以及二阶SQL注入攻击单元提供数据支持。
[0225] 二阶SQL注入攻击单元804:根据用户指定的运行模式,实施二阶SQL注入攻击。
[0226] 二阶SQL注入漏洞识别单元805:识别二阶SQL注入漏洞,并将二阶SQL注入漏洞相关信息反馈给数据单元和用户接口单元。
[0227] 知识库更新单元806:用于接收各种来源的数据(主题-实例对,攻击载荷,攻击场景,报错信息,异常信息),更新知识库中的主题-实例集合、攻击载荷集合、攻击场景集合、报错信息表。
[0228] 具体实施中,用户接口单元可以包括:接收子单元:用于接收待测网站相关信息(如首页URL、登录账号、密码、卡号等)、运行模式(如训练模式和测试模式)、输出类型、初始置信度、各类阈值、知识库四类数据样本、以及二阶SQL注入漏洞相关确认信息;
[0229] 响应子单元:用于返回给用户指定输出类型的二阶SQL注入漏洞检测结果。
[0230] 所述输出类型,包括:选取漏洞发现时间、待测网站名称标识、存储点URL、存储点功能名、攻击载荷存储请求、攻击载荷存储参数名、攻击载荷、触发点URL、触发点功能名、触发请求、服务器报错信息、服务器异常信息、置信度中的全部或部分项作为输出项。
[0231] 所述知识库四类数据样本,包括:主题-实例对、攻击载荷、攻击场景、数据库报错信息。
[0232] 具体实施中,数据单元可以包括:
[0233] 数据接收子单元:用于接收网络信息采集单元输出的待验证URL链表以及网页相关信息映射集,二阶SQL注入攻击单元输出的中间数据,以及知识库更新单元输出的{主题-实例对,置信度}序偶、{攻击载荷,置信度}序偶、{攻击场景,置信度}序偶、{报错信息,攻击载荷,置信度}三元组、{异常信息,攻击载荷,置信度}三元组;
[0234] 数据存储子单元:按预定规则存储数据接收子单元接收的数据,为网络信息采集单元以及二阶SQL注入攻击单元提供数据支持。
[0235] 所述二阶SQL注入攻击单元输出的中间数据,包括:第一待测页面集,第二待测页面集,第二待测页面子集,第三待测页面集,第一待测页面待测输入项集,可执行攻击载荷集,第一待测页面存储状态,第三待测页面触发状态。
[0236] 所述按预定规则存储数据接收子单元接收的数据,包括:
[0237] 接收所述待验证URL链表,直接存储;
[0238] 接收所述网页相关信息映射集,提取网页入链锚文本,作为网页功能名,连同网页入链URL、表单提交URL、表单提交Method、表单标签关键词、表单域参数名、表单域描述性关键词、正常提交表单后的服务器响应信息,构建网页相关信息集;
[0239] 接收所述二阶SQL注入攻击单元输出的中间数据,更新原数据集或状态;
[0240] 接收所述{主题-实例对,置信度}序偶、{攻击载荷,置信度}序偶、{攻击场景,置信度}序偶、{报错信息,攻击载荷,置信度}三元组、{异常信息,攻击载荷,置信度}三元组;
[0241] 判断知识库中的主题-实例集合、攻击载荷集合、攻击场景集合、报错信息表是否存在所述主题-实例对、攻击载荷、攻击场景、报错信息、异常信息;若是,则更新相应的数据信息;若否,则在对应表中添加一条新记录。
[0242] 具体实施中,二阶SQL注入攻击单元可以包括:
[0243] 预处理子单元:用于提取数据存储子单元中存储的待验证URL链表以及网页相关信息集;
[0244] 第一判断子单元:用于判断用户指定的运行模式;
[0245] 训练子单元:用于在所述第一判断子单元的判断结果为训练模式时,采用基于全网的二阶SQL注入漏洞检测方式实施攻击;
[0246] 测试子单元:用于在所述第一判断子单元的判断结果为训练模式时,采用基于语义关联页面的二阶SQL注入漏洞检测方式实施攻击。
[0247] 具体实施中,二阶SQL注入漏洞识别单元可以包括:
[0248] 二阶SQL注入攻击信息接收子单元:用于接收二阶SQL注入攻击单元每一次发出触发请求所获取的服务器响应信息,以及其他相关信息;
[0249] 所述其他相关信息,包括:待测网站名称标识、第一待测页面URL、第一待测页面功能名、攻击载荷存储请求、攻击载荷存储参数名、攻击载荷、第三待测页面URL、第三待测页面功能名、触发请求。
[0250] 报错信息识别子单元:用于判断所述服务器响应信息是否为报错信息,若是,则判定待测页面存在二阶SQL注入漏洞,并将{攻击载荷,攻击场景,报错信息}三元组作为二阶SQL注入漏洞相关信息反馈给知识库;
[0251] 异常信息识别子单元:用于判断所述服务器响应信息是否为有效异常信息,并计算待测网页存在二阶SQL注入漏洞的可能性(即,异常信息置信度),若可能性大于阈值,则判定待测页面存在二阶SQL注入漏洞,并将{攻击载荷,攻击场景}序偶作为二阶SQL注入漏洞相关信息反馈给知识库更新单元;同时,将所有有效的{异常信息,攻击载荷,置信度}三元组反馈给数据单元;
[0252] 二阶SQL注入漏洞信息输出子单元:用于将判定为二阶SQL注入漏洞的相关信息反馈给用户接口单元的响应子单元。
[0253] 具体实施中,知识库更新单元可以包括:
[0254] 主题-实例集合更新子单元:用于接收网络信息采集单元反馈的表单相关信息,与用户接口单元输出的主题-实例对,按数据来源计算所述主题-实例对的置信度,并将{主题-实例对,置信度}序偶反馈给数据单元的数据接收子单元;
[0255] 攻击载荷集合更新子单元:用于接收二阶SQL注入漏洞识别单元反馈的二阶SQL注入漏洞相关信息,与用户接口单元输出的攻击载荷、以及二阶SQL注入漏洞相关确认信息,按数据来源计算所述攻击载荷对应的置信度,并将{攻击载荷,置信度}序偶反馈给数据单元的数据接收子单元;
[0256] 攻击场景集合更新子单元:用于接收二阶SQL注入漏洞识别单元反馈的二阶SQL注入漏洞相关信息,与用户接口单元输出的攻击场景、以及二阶SQL注入漏洞相关确认信息,按数据来源计算所述攻击场景对应的置信度,并将{攻击场景,置信度}序偶反馈给数据单元的数据接收子单元;
[0257] 报错信息表更新子单元:用于接收二阶SQL注入漏洞识别单元反馈的二阶SQL注入漏洞相关信息,与用户接口单元输出的报错信息、以及二阶SQL注入漏洞相关确认信息,按数据来源计算所述报错信息或异常信息对应的置信度,并将{报错信息,攻击载荷,置信度}三元组以及{异常信息,攻击载荷,置信度}三元组反馈给数据单元的数据接收子单元,特别地,用户接口单元输出的报错信息则只反馈{报错信息,置信度}序偶。
[0258] 具体实施时,二阶SQL注入漏洞检测装置可以设置在服务器中,需要说明的是,将二阶SQL注入漏洞检测装置设置在服务器中仅是本发明实施例的一种较佳的实施方式,具体实施时,二阶SQL注入漏洞检测装置也可以独立设置。
[0259] 根据上述二阶SQL注入漏洞检测的场景示例的介绍,可以看出,上述方法可以取得以下有益效果:
[0260] 可以实现对整个网站所有网页二阶SQL注入漏洞的自动扫描。例如,用户可以通过网络信息采集单元与数据单元的知识库中的主题-实例集合交互,采用基于领域知识的深度搜索技术将整个待测网站网页信息提取过程自动化,并结合装置自学习与用户手动输入两种方式持续对主题-实例集合进行优化,来保证待测网站中所有包含表单项网页的全覆盖,然后再基于二阶SQL注入漏洞检测规则验证这些网页是否存在漏洞;
[0261] 可以实现快速准确地定位二阶SQL注入漏洞。例如,用户可以通过二阶SQL注入攻击单元的测试子单元,基于语义的注入点关联规则(即,攻击场景)筛选出可能存在二阶SQL注入漏洞的网页,所述二阶SQL注入漏洞检测方法设定好所述可能性的衡量方法,用户可以此来限定检索范围,从而提高测试效率;
[0262] 可以自动挖掘新的注入点关联规则(即,攻击场景)以及漏洞识别标准(即,报错信息),避免仅依赖于安全测试人员的测试经验积累而存在的技术局限。例如,用户可通过二阶SQL注入攻击单元的训练子单元,将大批量的待测网站作为训练样本,投入所述二阶SQL注入漏洞检测装置中,装置的二阶SQL注入漏洞识别单元会通过基于异常的漏洞识别方法从服务器响应信息中挖掘出新的异常信息来扩充漏洞识别标准,再基于异常响应点挖掘出新的注入点关联规则;
[0263] 可以持续调整所述装置数据单元的知识库中各类数据(表单填充实例、攻击样本、基于语义的注入点关联规则、以及漏洞识别标准)的调用优先级以适应攻击手法的变化。例如,知识库中的每一条数据都对应一个置信度,用来标识数据被调用的优先级,置信度越大,说明对应数据使用效果越好,优先级越高。所述装置知识库更新单元按照数据来源分级计算置信度,以自学习、用户输入与用户调整三种方式确保数据可靠性。
[0264] 基于上述场景示例的叙述,结合附图12,为了在测试模式下实现对于二阶SQL注入漏洞的检测,本说明书二阶SQL注入漏洞检测方法的实施例还可以按照如下方式执行:
[0265] S1210:获取待验证网页。
[0266] S1220:在所接受到的运行模式信号为测试模式信号时,从攻击场景集合中获取测试攻击场景集合。
[0267] S1230:获取与测试攻击场景相匹配的待验证网页,构建第一待测页面集合和第二待测页面集合。
[0268] S1240:在攻击载荷集合中选取测试攻击载荷填充至第一待测页面。
[0269] S1250:获取第二待测页面集合中表单元素与所述第一待测页面的表单元素匹配的页面,构建第三待测页面集合。
[0270] S1260:根据第一待测页面对第三待测页面进行填充,并执行所述第一待测页面和所述第三待测页面。
[0271] S1270:若报错信息集合中存在与所获取的执行结果信息相匹配的报错信息,更新所述攻击场景集合、所述攻击载荷集合和所述报错信息集合。
[0272] S1280:将所述第一待测页面、所述第三待测页面和所述执行结果信息作为二阶SQL注入漏洞进行反馈。
[0273] 优选的,所述攻击场景集合中的攻击场景对应有攻击场景置信度;相应的,所述从攻击场景集合中获取测试攻击场景集合,包括:基于攻击场景置信度阈值,在攻击场景集合中根据攻击场景置信度的大小选取攻击场景构建测试攻击场景集合。
[0274] 优选的,所述攻击载荷集合中的攻击载荷对应有攻击载荷置信度;相应的,所述在攻击载荷集合中选取攻击载荷填充至第一待测页面,包括:基于攻击载荷置信度阈值,在攻击载荷集合中根据攻击载荷置信度的大小选取攻击载荷构建测试攻击载荷集合;选取测试攻击载荷集合中的测试攻击载荷填充至第一待测页面。
[0275] 优选的,所述报错信息集合中的报错信息对应有报错信息响应次数;所述报错信息响应次数,表示填充所述攻击载荷后触发所述报错信息的次数;相应的,所述根据所述第一待测页面和所述第三待测页面更新所述攻击场景集合、所述攻击载荷集合和所述报错信息集合,包括:增加填充所述攻击载荷后触发所述报错信息对应的报错信息响应次数。
[0276] 优选的,所述获取待验证网页包括:利用爬虫程序检测目标网站中的网页,获取其中包含表单且能够正常访问的网页,作为待验证网页。
[0277] 优选的,所述利用爬虫程序检测目标网站中的网页,获取其中包含表单且能够正常访问的网页,作为待验证网页之后,还包括:根据所述待验证网页中与待验证URL链表相对应的页面元素,构建网页信息映射集;所述网页信息映射集,包括:入链锚文本、出链锚文本、表单参数信息、表单填充信息、网页标题和服务器正常响应状态码。
[0278] 优选的,所述测试攻击场景集合中的测试攻击场景,包括存储点功能名称和触发点功能名称;所述获取与所述测试攻击场景相匹配的待验证网页,构建第一待测页面集合和第二待测页面集合,包括:获取待验证网页中功能名称与所述存储点功能名称相匹配的网页,加入所述第一待测页面集合;获取待验证网页中功能名称与所述触发点功能名称相匹配的网页,加入所述第二待测页面集合;所述功能名称,包括网页入链锚文本。
[0279] 优选的,所述在攻击载荷集合中选取攻击载荷填充至第一待测页面之前,还包括:在所述第一待测页面集合中选取第一待测页面;获取所述第二待测页面集合中功能名称与所述第一待测页面的功能名称相匹配的页面,构建第二待测页面子集;相应的,所述获取第二待测页面集合中表单元素与所述第一待测页面匹配的页面,构建第三待测页面集合,包括:获取第二待测页面子集中表单元素与所述第一待测页面匹配的页面,构建第三待测页面集合。
[0280] 优选的,所述在攻击载荷集合中选取攻击载荷填充至第一待测页面,包括:在第一待测页面集合中选取第一待测页面;根据第一待测页面中的表单输入项,构建第一待测页面输入项集合;在第一待测页面输入项集合中选取第一待测页面填充项;在攻击载荷集合中选取攻击载荷填充至所述第一待测页面填充项。
[0281] 优选的,所述在攻击载荷集合中选取攻击载荷填充至所述第一待测页面填充项之后,还包括:获取除第一待测页面填充项外的第一待测页面输入项,作为第一待测页面补充项;在主题-实例对集合中获取与所述第一待测页面补充项匹配的主题-实例对,将所述主题-实例对中的实例填充至所述第一待测页面补充项。
[0282] 优选的,所述主题-实例对对应有主题-实例对置信度;所述在主题-实例对集合中获取与所述第一待测页面补充项匹配的主题-实例对,将所述主题-实例对中的实例填充至所述第一待测页面补充项,包括:在主题-实例对集合中获取与所述第一待测页面补充项匹配的至少一个主题-实例对;根据所述至少一个主题-实例对的主题-实例对置信度的大小,选取主题-实例对并将所述主题-实例对中的实例填充至所述第一待测页面补充项。
[0283] 优选的,所述在第一待测页面输入项集合中选取第一待测页面填充项之后,还包括:若攻击载荷集合对应于所述第一待测页面填充项不存在对应的攻击载荷,在第一待测页面输入项集合中选取未检测的第一待测页面输入项作为第一待测页面填充项。
[0284] 所述将所述第一待测页面、所述第三待测页面和所述执行结果信息作为二阶SQL注入漏洞进行反馈之后,还包括:判断所述第一待测页面输入项集合中是否存在未检测的第一待测页面输入项集合;若存在,重复执行选取第一待测页面填充项步骤、填充第一待测页面填充项步骤、构建第三待测页面集合步骤、执行待测页面步骤、更新集合步骤以及反馈步骤直至第一待测页面输入项集合中不存在未检测的第一待测页面输入项为止。
[0285] 优选的,所述表单元素,包括:表单标签关键词、表单域参数名、表单域描述性关键词。
[0286] 优选的,所述根据第一待测页面对第三待测页面进行填充,包括:获取所述第三待测页面与所述第一待测页面中表单标识性元素相同的输入项,作为等同输入项;将所述第一待测页面中的等同输入项的输入值填入所述第三待测页面中的等同输入项中;获取第三待测页面中除等同输入项以外的输入项,作为非等同输入项;获取与所述非等同输入项相匹配的主题-实例对,根据其中的实例对所述非等同输入项进行填充。
[0287] 优选的,所述执行所述第一待测页面和所述第三待测页面,包括:将所述第一待测页面发送至页面执行服务器;在服务器返回的对应于所述第一待测页面的状态码与服务器正常响应状态码相匹配且在正常响应信息集合中存在与所述执行结果信息相匹配的正常响应信息时,将所述第三待测页面发送至页面执行服务器;获取执行结果信息。
[0288] 优选的,所述将所述第一待测页面发送至页面执行服务器之后,还包括:若服务器返回的对应于所述第一待测页面的状态码与服务器正常响应状态码不匹配或在正常响应信息集合中不存在与所述执行结果信息相匹配的正常响应信息时,重新选取攻击载荷进行检测。
[0289] 优选的,所述根据第一待测页面对第三待测页面进行填充,并执行所述第一待测页面和所述第三待测页面之后,还包括:若报错信息集合中不存在与所获取的执行结果信息相匹配的报错信息,判断正常响应信息集合中是否存在与所述执行结果信息相匹配的正常响应信息;若存在,判断所述第三待测页面不是二阶SQL注入触发点。
[0290] 优选的,所述判断正常响应信息集合中是否存在与所述执行结果信息相匹配的正常响应信息之后,还包括:若正常响应信息集合中不存在与所述执行结果信息相匹配的正常响应信息,获取所述执行结果信息与正常响应信息的区别部分,作为异常信息;计算对应于所述异常信息的异常信息置信度;更新所述报错信息集合;若所述异常信息置信度大于所述异常信息判断阈值,更新所述攻击场景集合和所述攻击载荷集合;将所述第一待测页面、所述第三待测页面和所述异常信息作为二阶SQL注入漏洞进行反馈。
[0291] 优选的,所述异常信息对应有异常信息响应次数;所述获取所述执行结果信息与正常响应信息的区别部分,作为异常信息之后,还包括:增加填充所述攻击载荷后触发的所述异常信息对应的异常信息响应次数。
[0292] 优选的,所述更新所述攻击场景集合、所述攻击载荷集合和所述报错信息集合,包括:将所述异常信息置信度和所述攻击载荷对应的异常信息响应次数更新至报错信息集合;计算所述攻击场景和所述攻击载荷对应的攻击场景置信度和攻击载荷置信度,并更新至所述攻击场景集合和所述攻击载荷集合。
[0293] 优选的,所述异常信息置信度的计算方法可以如本说明书前述计算各级数据置信度的方法计算得到,在此不再赘述。
[0294] 优选的,所述更新所述攻击场景集合、所述攻击载荷集合和所述报错信息集合,包括:设置所述第一待测页面的功能名称和所述第二待测页面的功能名称对应的攻击场景的攻击场景置信度;设置所述攻击载荷的攻击载荷置信度;设置所述报错信息的报错信息置信度。
[0295] 优选的,所述攻击场景置信度的计算方法可以如本说明书前述计算各级数据置信度的方法计算得到,在此不再赘述。
[0296] 优选的,所述攻击载荷置信度的计算方法可以如本说明书前述计算各级数据置信度的方法计算得到,在此不再赘述。
[0297] 优选的,所述主题-实例对置信度的计算方法可以如本说明书前述计算各级数据置信度的方法计算得到,在此不再赘述。
[0298] 优选的,所述报错信息置信度的计算方法可以如本说明书前述计算各级数据置信度的方法计算得到,在此不再赘述。
[0299] 优选的,所述将所述第一待测页面、所述第三待测页面和所述执行结果信息作为二阶SQL注入漏洞进行反馈之后,还包括:判断所述第三待测页面集合中是否存在未被检测的第三待测页面;若存在,重复执行待测页面步骤、更新集合步骤以及反馈步骤直至第三待测页面集合中不存在未被检测的第三待测页面。
[0300] 优选的,所述将所述第一待测页面、所述第三待测页面和所述执行结果信息作为二阶SQL注入漏洞进行反馈之后,还包括:判断所述测试攻击载荷集合中是否存在未被选取的测试攻击载荷;若存在,重复执行填充攻击载荷步骤、构建第三待测页面集合步骤、执行待测页面步骤、更新集合步骤以及反馈步骤直至所述测试攻击载荷集合中不存在未被选取的测试攻击载荷。
[0301] 优选的,所述将所述第一待测页面、所述第三待测页面和所述执行结果信息作为二阶SQL注入漏洞进行反馈之后,还包括:判断第一待测页面集合中是否存在未检测的页面;若存在,重复执行获取其中未检测的页面作为第一待测页面、填充攻击载荷步骤、构建第三待测页面集合步骤、执行待测页面步骤、更新集合步骤以及反馈步骤直至第一待测页面集合中不存在未检测的页面。
[0302] 对应于上述二阶SQL注入漏洞检测方法,结合附图14,提出一种二阶SQL注入漏洞检测装置的实施例,如下所示:
[0303] 网页获取模块1410,用于获取待验证网页。
[0304] 攻击场景获取模块1420,用于在所接受到的运行模式信号为测试模式信号时,从攻击场景集合中获取测试攻击场景。
[0305] 页面集合构建模块1430,用于获取与所述测试攻击场景相匹配的待验证网页,构建第一待测页面集合和第二待测页面集合。
[0306] 攻击载荷填充模块1440,用于在攻击载荷集合中选取攻击载荷填充至第一待测页面。
[0307] 第三待测页面集合构建模块1450,用于获取第二待测页面集合中表单元素与所述第一待测页面的表单元素匹配的页面,构建第三待测页面集合。
[0308] 页面执行模块1460,用于根据第一待测页面对第三待测页面进行填充,并执行所述第一待测页面和所述第三待测页面。
[0309] 集合更新模块1470,用于在报错信息集合中存在与所获取的执行结果信息相匹配的报错信息时,更新所述攻击场景集合、所述攻击载荷集合和所述报错信息集合。
[0310] 反馈模块1480,用于将所述第一待测页面、所述第三待测页面和所述执行结果信息作为二阶SQL注入漏洞进行反馈。
[0311] 优选的,所述攻击场景对应有攻击场景置信度;所述攻击载荷对应有攻击载荷置信度;所述报错信息对应有报错信息置信度;所述装置还包括:用户接口模块,用于接收主题-实例对、攻击场景、攻击载荷、报错信息并扩充主体实例对集合、攻击场景集合、攻击载荷集合和报错信息集合;还用于接收置信度设定指令,并根据所述置信度设定指令来设定主题-实例对置信度和/或攻击场景置信度和/或攻击载荷置信度和/或报错信息置信度和/或异常信息置信度;还用于接收待测网站信息;还用于反馈检测结果。
[0312] 对应于上述二阶SQL注入漏洞检测方法,结合附图16,还提出一种测试模式下的二阶SQL注入漏洞检测设备的实施例,所述二阶SQL注入漏洞检测设备包括存储器和处理器。
[0313] 在本实施例中,所述存储器可以按任何适当的方式实现。例如,所述存储器可以为只读存储器、机械硬盘、固态硬盘、或U盘等。所述存储器可以用于存储计算机指令。
[0314] 在本实施例中,所述处理器可以按任何适当的方式实现。例如,处理器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件固件)的计算机可读介质、逻辑开关、专用集成电路(Application  Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式等等。所述处理器可以执行所述计算机指令实现以下步骤:
[0315] 获取待验证网页;在所接受到的运行模式信号为测试模式信号时,从攻击场景集合中获取测试攻击场景集合;获取与测试攻击场景相匹配的待验证网页,构建第一待测页面集合和第二待测页面集合;在攻击载荷集合中选取攻击载荷填充至第一待测页面;获取第二待测页面集合中表单元素与所述第一待测页面的表单元素匹配的页面,构建第三待测页面集合;根据第一待测页面对第三待测页面进行填充,并执行所述第一待测页面和所述第三待测页面;若报错信息集合中存在与所获取的执行结果信息相匹配的报错信息,更新所述攻击场景集合、所述攻击载荷集合和所述报错信息集合;将所述第一待测页面、所述第三待测页面和所述执行结果信息作为二阶SQL注入漏洞进行反馈。
[0316] 基于上述场景示例的叙述,结合附图13,为了在训练模式下实现对于二阶SQL注入漏洞的检测,本说明书二阶SQL注入漏洞检测方法的实施例还可以按照如下方式执行:
[0317] S1310:获取待验证网页。
[0318] S1320:在所接受到的运行模式信号为训练模式信号时,基于所述待验证网页构建第一待测页面集合和第二待测页面集合。
[0319] S1330:在攻击载荷集合中选取攻击载荷填充至第一待测页面。
[0320] S1340:获取第二待测页面集合中表单元素与所述第一待测页面的表单元素匹配的页面,构建第三待测页面集合。
[0321] S1350:根据第一待测页面对第三待测页面进行填充,并执行所述第一待测页面和所述第三待测页面。
[0322] S1360:若报错信息集合中存在与所获取的执行结果信息相匹配的报错信息,更新攻击场景集合、所述攻击载荷集合和所述报错信息集合。
[0323] S1370:将所述第一待测页面、所述第三待测页面和所述执行结果信息作为二阶SQL注入漏洞进行反馈。
[0324] 优选的,所述报错信息集合中的报错信息对应有报错信息响应次数;所述报错信息响应次数,表示触发二阶SQL注入攻击时返回所述报错信息的次数;相应的,所述根据所述第一待测页面和所述第三待测页面更新所述攻击场景集合、所述攻击载荷集合和所述报错信息集合,包括:增加填充所述攻击载荷时后触发所述报错信息对应的报错信息响应次数。
[0325] 优选的,所述获取待验证网页包括:利用爬虫程序检测目标网站中的网页,获取其中包含表单且能够正常访问的网页,作为待验证网页。
[0326] 优选的,所述利用爬虫程序检测目标网站中的网页,获取其中包含表单且能够正常访问的网页,作为待验证网页之后,还包括:根据所述待验证网页中与待验证URL链表相对应的页面元素,构建网页信息映射集;所述网页信息映射集,包括:入链锚文本、出链锚文本、表单参数信息、表单填充信息、网页标题和服务器正常响应状态码。
[0327] 优选的,所述基于所述待验证网页构建第一待测页面集合和第二待测页面集合,包括:选取所有待验证网页分别构建第一待测页面集合和第二待测页面集合。
[0328] 优选的,所述在攻击载荷集合中选取攻击载荷填充至第一待测页面,包括:在第一待测页面集合中选取第一待测页面;根据第一待测页面中的表单输入项,构建第一待测页面输入项集合;在第一待测页面输入项集合中选取第一待测页面填充项;在攻击载荷集合中选取攻击载荷填充至所述第一待测页面输入项。
[0329] 优选的,所述在攻击载荷集合中选取攻击载荷填充至所述第一待测页面填充项之后,还包括:获取除第一待测页面填充项外的第一待测页面输入项,作为第一待测页面补充项;在主题-实例对集合中获取与所述第一待测页面补充项匹配的主题-实例对,将所述主题-实例对中的实例填充至所述第一待测页面补充项。
[0330] 优选的,所述主题-实例对对应有主题-实例对置信度;所述在主题-实例对集合中获取与所述第一待测页面补充项匹配的主题-实例对,将所述主题-实例对中的实例填充至所述第一待测页面补充项,包括:在主题-实例对集合中获取与所述第一待测页面补充项匹配的至少一个主题-实例对;根据所述至少一个主题-实例对的主题-实例对置信度的大小,选取主题-实例对并将所述主题-实例对中的实例填充至所述第一待测页面补充项。
[0331] 优选的,所述在第一待测页面输入项集合中选取第一待测页面填充项之后,还包括:若攻击载荷集合对应于所述第一待测页面填充项不存在对应的攻击载荷,在第一待测页面输入项集合中选取未检测的第一待测页面输入项作为第一待测页面填充项。
[0332] 优选的,所述将所述第一待测页面、所述第三待测页面和所述执行结果信息作为二阶SQL注入漏洞进行反馈之后,还包括:判断所述第一待测页面输入项集合中是否存在未检测的第一待测页面输入项集合;若存在,重复执行选取第一待测页面填充项步骤、填充第一待测页面填充项步骤、构建第三待测页面集合步骤、执行待测页面步骤、更新集合步骤以及反馈步骤直至第一待测页面输入项集合中不存在未检测的第一待测页面输入项为止。
[0333] 优选的,所述表单元素,包括:表单标签关键词、表单域参数名、表单域描述性关键词。
[0334] 优选的,所述根据第一待测页面对第三待测页面进行填充,包括:获取所述第三待测页面与所述第一待测页面中表单标识性元素相同的输入项,作为等同输入项;将所述第一待测页面中的等同输入项的输入值填入所述第三待测页面中的等同输入项中;获取第三待测页面中除等同输入项以外的输入项,作为非等同输入项;获取与所述非等同输入项相匹配的主题-实例对,根据其中的实例对所述非等同输入项进行填充。
[0335] 优选的,所述执行所述第一待测页面和所述第三待测页面,包括:将所述第一待测页面发送至页面执行服务器;在服务器返回的对应于所述第一待测页面的状态码与服务器正常响应状态码相匹配且在正常响应信息集合中存在与所述执行结果信息相匹配的正常响应信息时,将所述第三待测页面发送至页面执行服务器;获取执行结果信息。
[0336] 优选的,所述将所述第一待测页面发送至页面执行服务器之后,还包括:若服务器返回的对应于所述第一待测页面的状态码与服务器正常响应状态码不匹配或在正常响应信息集合中不存在与所述执行结果信息相匹配的正常响应信息时,重新选取攻击载荷进行检测。
[0337] 优选的,所述根据第一待测页面对第三待测页面进行填充,并执行所述第一待测页面和所述第三待测页面之后,还包括:若报错信息集合中不存在与所获取的执行结果信息相匹配的报错信息,判断正常响应信息集合中是否存在与所述执行结果信息相匹配的正常响应信息;若存在,判断所述第三待测页面不是二阶SQL注入触发点。
[0338] 优选的,所述判断正常响应信息集合中是否存在于所述执行结果信息相匹配的正常响应信息之后,还包括:若正常响应信息集合中不存在与所述执行结果信息相匹配的正常响应信息,获取所述执行结果信息与正常响应信息的区别部分,作为异常信息;计算对应于所述异常信息的异常信息置信度;更新所述报错信息集合;若所述异常信息置信度大于所述异常信息判断阈值,更新所述攻击场景集合、所述攻击载荷集合和所述报错信息集合;将所述第一待测页面、所述第三待测页面和所述执行结果信息作为二阶SQL注入漏洞进行反馈。
[0339] 优选的,所述异常信息对应有异常信息响应次数;所述获取所述执行结果信息与正常响应信息的区别部分,作为异常信息之后,还包括:增加填充所述攻击载荷后触发所述异常信息对应的异常信息响应次数。
[0340] 优选的,所述更新所述攻击场景集合、所述攻击载荷集合和所述报错信息集合,包括:将所述异常信息置信度和所述攻击载荷对应的异常信息响应次数更新至报错信息集合;计算所述攻击场景和所述攻击载荷所述报错信息对应的攻击场景置信度和攻击载荷置信度,并更新至所述攻击场景集合和所述攻击载荷集合。
[0341] 优选的,所述异常信息置信度的计算方法可以如本说明书前述计算各级数据置信度的方法计算得到,在此不再赘述。
[0342] 优选的,所述更新所述攻击场景集合、所述攻击载荷集合和所述报错信息集合,包括:将所述第一待测页面的功能名称和所述第二待测页面的功能名称加入所述攻击场景集合,并设置所述第一待测页面的功能名称和所述第二待测页面的功能名称对应的攻击场景的攻击场景置信度;将所述攻击载荷加入所述攻击载荷集合,并设置所述攻击载荷的攻击载荷置信度;设置所述报错信息的报错信息置信度。
[0343] 优选的,所述攻击场景置信度的计算方法可以如本说明书前述计算各级数据置信度的方法计算得到,在此不再赘述。
[0344] 优选的,所述攻击载荷置信度的计算方法可以如本说明书前述计算各级数据置信度的方法计算得到,在此不再赘述。
[0345] 优选的,所述主题-实例对置信度的计算方法可以如本说明书前述计算各级数据置信度的方法计算得到,在此不再赘述。
[0346] 优选的,所述报错信息置信度的计算方法可以如本说明书前述计算各级数据置信度的方法计算得到,在此不再赘述。
[0347] 优选的,所述将所述第一待测页面、所述第三待测页面和所述执行结果信息作为二阶SQL注入漏洞进行反馈之后,还包括:判断所述第三待测页面集合中是否存在未被检测的第三待测页面;若存在,重复执行待测页面步骤、更新集合步骤以及反馈步骤直至第三待测页面集合中不存在未被检测的第三待测页面。
[0348] 优选的,所述将所述第一待测页面、所述第三待测页面和所述执行结果信息作为二阶SQL注入漏洞进行反馈之后,还包括:判断所述测试攻击载荷集合中是否存在未被选取的测试攻击载荷;若存在,重复执行填充攻击载荷步骤、构建第三待测页面集合步骤、执行待测页面步骤、更新集合步骤以及反馈步骤直至所述测试攻击载荷集合中不存在未被选取的测试攻击载荷。
[0349] 优选的,所述将所述第一待测页面、所述第三待测页面和所述执行结果信息作为二阶SQL注入漏洞进行反馈之后,还包括:判断第一待测页面集合中是否存在未检测的页面;若存在,重复执行获取其中未检测的页面作为第一待测页面、填充攻击载荷步骤、构建第三待测页面集合步骤、执行待测页面步骤、更新集合步骤以及反馈步骤直至第一待测页面集合中不存在未检测的页面。
[0350] 对应于上述二阶SQL注入漏洞检测方法,结合附图15,提出一种二阶SQL注入漏洞检测装置的实施例,如下所示:
[0351] 网页获取模块1510,用于获取待验证网页;
[0352] 集合构建模块1520,用于在所接受到的运行模式信号为训练模式信号时,基于所述待验证网页构建第一待测页面集合和第二待测页面集合;
[0353] 攻击载荷填充模块1530,用于在攻击载荷集合中选取攻击载荷填充至第一待测页面;
[0354] 第三待测页面集合构建模块1540,用于获取第二待测页面集合中表单元素与所述第一待测页面的表单元素匹配的页面,构建第三待测页面集合;
[0355] 页面执行模块1550,用于根据第一待测页面对第三待测页面进行填充,并执行所述第一待测页面和所述第三待测页面;
[0356] 集合更新模块1560,用于在报错信息集合中存在与所获取的执行结果信息相匹配的报错信息时,更新攻击场景集合、所述攻击载荷集合和所述报错信息集合;
[0357] 反馈模块1570,用于将所述第一待测页面、所述第三待测页面和所述执行结果信息作为二阶SQL注入漏洞进行反馈。
[0358] 优选的,所述攻击场景对应有攻击场景置信度;所述攻击载荷对应有攻击载荷置信度;所述报错信息对应有报错信息置信度;所述装置还包括:用户接口模块,用于接收主题-实例对、攻击场景、攻击载荷、报错信息并扩充主体实例对集合、攻击场景集合、攻击载荷集合和报错信息集合;还用于接收置信度设定指令,并根据所述置信度设定指令来设定主题实例对置信度和/或攻击场景置信度和/或攻击载荷置信度和/或报错信息置信度和/异常信息置信度;还用于接收待测网站信息;还用于反馈检测结果。
[0359] 对应于上述二阶SQL注入漏洞检测方法,结合附图16,还提出一种训练模式下的二阶SQL注入漏洞检测设备的实施例,所述二阶SQL注入漏洞检测设备包括存储器和处理器。
[0360] 在本实施例中,所述存储器可以按任何适当的方式实现。例如,所述存储器可以为只读存储器、机械硬盘、固态硬盘、或U盘等。所述存储器可以用于存储计算机指令。
[0361] 在本实施例中,所述处理器可以按任何适当的方式实现。例如,处理器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application  Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式等等。所述处理器可以执行所述计算机指令实现以下步骤:
[0362] 获取待验证网页;在所接受到的运行模式信号为训练模式信号时,基于所述待验证网页构建第一待测页面集合和第二待测页面集合;在攻击载荷集合中选取攻击载荷填充至第一待测页面;获取第二待测页面集合中表单元素与所述第一待测页面的表单元素匹配的页面,构建第三待测页面集合;根据第一待测页面对第三待测页面进行填充,并执行所述第一待测页面和所述第三待测页面;若报错信息集合中存在与所获取的执行结果信息相匹配的报错信息,更新攻击场景集合、所述攻击载荷集合和所述报错信息集合;将所述第一待测页面、所述第三待测页面和所述执行结果信息作为二阶SQL注入漏洞进行反馈。
[0363] 本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0364] 本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0365] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0366] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0367] 尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
[0368] 显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈