
技术摘要:
本申请公开了一种SQL注入漏洞检测方法,该方法通过构造payload,将payload插入到HTTP请求中并记录payload和HTTP请求参数,将HTTP请求发送给目标数据库系统,由使目标数据库系统执行payload进行DNS查询,从自建DNS服务器中获取DNS查询记录,若DNS查询记录中包括特定字符 全部
背景技术:
SQL是结构化查询语言(Structured Query Language)的简称,SQL一般用来对数 据库中的数据进行访问删除添加修改等操作。由于用户的输入,也是SQL语句的一部分,所 以攻击者可以利用这部分可以控制的内容,注入自己定义的语句,改变SQL语句执行逻辑, 让数据库执行任意自己需要的指令。通过控制部分SQL语句,攻击者可以查询数据库中任何 自己需要的数据,利用数据库的一些特性,可以直接获取数据库服务器的系统权限。现有技 术中,SQL注入检测是常见的SQL注入漏洞检测方式之一,按照判断漏洞的方法,SQL注入漏 洞检测方法包括基于布尔的盲注检测,基于错误回显的检测,基于时间盲注的SQL注入漏洞 检测。 基于布尔的盲注的SQL注入漏洞检测通过分别构造SQL查询判断条件为布尔真的 请求包和SQL查询判断条件为布尔假的请求包来获取页面响应,通过判断页面的相似程度 来判断构造的SQL查询布尔值是否符合预期结果。从而判断是否存在漏洞。基于布尔的盲注 依赖页面相似度,当页面出现占比比较多的随机字符串时这种情况容易产生误报与漏报, 当应用程序的查询结果不表现在页面中漏报将不可避免产生。 基于时间盲注的SQL注入漏洞检测通过构造带有合适payload的请求包使当前应 用程序响应时间发生改变,通过多次请求来判断页面响应耗时与带有预定于的payload请 求包是否匹配来判断是否存在SQL注入漏洞。基于时间盲注的SQL注入漏洞检测可以不依赖 响应内容来检测无回显的情况下发生的漏洞。但在实际过程中,由于网络波动造成的网络 延迟将不可避免,导致采用基于时间盲注的SQL注入漏洞检测方法也比较容易产生误报,另 一方面在检测耗时上也比较多,以至于检测效率不高。
技术实现要素:
有鉴于此,本公开提出了一种SQL注入漏洞检测方法,包括: 构造payload;其中,所述payload包含特定字符串; 将所述payload插入到HTTP请求中并记录所述payload和HTTP请求参数; 将所述HTTP请求发送给目标数据库系统,由使所述目标数据库系统执行所述 payload进行DNS查询; 从自建DNS服务器中获取DNS查询记录,若所述DNS查询记录中包括所述特定字符 串,依据所述HTTP请求参数确定漏洞位置; 其中,所述DNS查询记录包含所述目标数据库系统进行DNS查询时得到的信息。 在一种可能的实现方式中,所述构造payload包括: 随机生成一组所述特定字符串; 4 CN 111600885 A 说 明 书 2/7 页 将所述特定字符串与预设域名进行拼接得到域名串; 将所述域名串填充到命令中得到所述payload。 在一种可能的实现方式中,将所述payload插入到HTTP请求中并记录所述payload 和HTTP请求参数包括: 将所述payload插入到所述HTTP请求中对应的参数中; 记录所述特定字符串和所述HTTP请求参数; 将所述特定字符串和所述HTTP请求参数存储到本地数据库中。 在一种可能的实现方式中,从自建DNS服务器获取DNS查询记录,若所述DNS查询记 录中包括所述特定字符串,依据所述HTTP请求参数确定漏洞位置包括: 获取所述自建DNS服务器的DNS查询记录; 提取所述DNS查询记录中的域名; 若所述域名中的子字符串与所述特定字符串相同,则依据所述HTTP请求参数确定 漏洞位置。 在一种可能的实现方式中,若所述DNS服务器中不存在DNS查询记录,则不存在漏 洞。 在一种可能的实现方式中,所述命令依据所述目标数据库系统的种类设定。 根据本公开的另一方面,提供了一种SQL注入漏洞检测装置,其特征在于,包括 payload构造模块、payload插入模块、HTTP请求发送模块和漏洞位置确定模块; 所述payload构造模块,被配置为构造payload;其中,所述payload包含特定字符 串; 所述payload插入模块,被配置为将所述payload插入到HTTP请求中并记录所述 payload和HTTP请求参数; 所述HTTP请求发送模块,被配置为将所述HTTP请求发送给目标数据库系统,由使 所述目标数据库系统执行所述payload进行DNS查询; 所述漏洞位置确定模块,被配置为从自建DNS服务器中获取DNS查询记录,若所述 DNS查询记录中包括所述特定字符串,依据所述HTTP请求参数确定漏洞位置; 其中,所述DNS查询记录包含所述目标数据库系统进行DNS查询时得到的信息。 在一种可能的实现方式中,所述payload构造模块包括字符串生成单元、字符串拼 接单元和域名串填充单元; 所述字符串生成单元,被配置为随机生成一组所述特定字符串; 所述字符串拼接单元,被配置为将所述特定字符串与预设域名进行拼接得到域名 串; 所述域名串填充单元,被配置为将所述域名串填充到命令中得到所述payload。 根据本公开的另一方面,提供了一种SQL注入漏洞检测设备,其特征在于,包括: 处理器; 用于存储处理器可执行指令的存储器; 其中,所述处理器被配置为执行所述可执行指令时实现前面任一所述的方法。 根据本公开的另一方面,提供了一种非易失性计算机可读存储介质,其上存储有 计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现前面任一所述的 5 CN 111600885 A 说 明 书 3/7 页 方法。 通过构造payload,其中,payload包含特定字符串,将payload插入到HTTP请求中 并记录payload和HTTP请求参数,将HTTP请求发送给目标数据库系统,由使目标数据库系统 执行payload进行DNS查询,从自建DNS服务器中获取DNS查询记录,若DNS查询记录中包括特 定字符串,依据HTTP请求参数确定漏洞位置,其中,DNS查询记录包含目标数据库系统进行 DNS查询时得到的信息。通过基于DNS通道的SQL注入漏洞检测能够对SQL注入漏洞进行快速 检测,对目标应用程序不要求是否有回显,适用的目标更加广泛,且能够快速对漏洞进行检 测减少了漏洞检测时间,提高了扫描效率,并且正确性上有稳步提高,减少了误报率和漏报 率。 根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得 清楚。 附图说明 包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的 示例性实施例、特征和方面,并且用于解释本公开的原理。 图1示出本公开实施例的SQL注入漏洞检测方法的流程图; 图2示出本公开实施例的SQL注入漏洞检测方法的另一流程图; 图3示出本公开实施例的SQL注入漏洞检测装置的框图; 图4示出本公开实施例的SQL注入漏洞检测设备的框图。