一种SQL注入检测装置及SQL注入检测方法与流程

文档序号:16579042发布日期:2019-01-14 17:48阅读:205来源:国知局
一种SQL注入检测装置及SQL注入检测方法与流程

本发明涉及保密或安全通信装置的技术领域,特别涉及一种能识别并绕过web应用防护系统以达到准确检测的sql注入检测装置及sql注入检测方法。



背景技术:

sql注入是通过把sql命令插入到web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的sql命令,它利用现有应用程序,将恶意的sql命令注入到后台数据库,可以通过在web表单中输入恶意sql语句得到一个存在安全漏洞的网站上的数据库。

针对sql注入的现状,有很多sql注入检测工具供安全维护使用,例如sqlmap、havij等,基本原理都类似,一般就是针对一条url进行注入检测。

然而,随着现在的waf/ids技术以及sql注入防御技术的流行和普及,传统的sql注入检测装置在检测带有waf(web应用防护系统,webapplicationfirewall)的网站系统时通常都会被waf检测到攻击特征而被阻止访问目标系统或者被加入黑名单,进而导致检测结果与事实不符,往往会导致检测不到目标系统所存在的sql注入漏洞。

现有技术中,sql注入检测装置主要包括半自动化检测装置和自动化的fuzzing检测装置。其中,半自动化检测装置通常需要人工干预检测过程,例如sqlmap,需要人工识别waf,并且需要自己编写tamper脚本;而自动化的fuzzing检测装置并没有携带waf检测和绕过功能,在没有waf的情况下可以有效的检测出sql注入漏洞,但如果有waf则往往会被waf隔离,达不到检测出漏洞的目的。

sql注入检测装置必须做到自动化,如果总是需要人工干预,则检测效率会大大降低,并且会引入因人导致的错误,而自动化的fuzzing检测装置不能有效对抗waf,会导致最终检测结果不理想。



技术实现要素:

为了解决现有技术中存在的问题,本发明提供一种优化的sql注入检测装置及sql注入检测方法,使得在有waf或sql防护保护的情况下,能自动识别保护技术并最大程度绕过,提高sql注入的漏洞的检出率。

本发明所采用的技术方案是,一种sql注入检测装置,所述检测装置包括:

一用于接收下发任务并对任务进行参数解析验证、将任务拆分为内部子任务进而调度至待检测的站点的任务接收调度模块、

一用于对任务调度的待检测的站点爬出得到站点内部的url地址的爬虫模块、

一用于对任务产生的url地址进行分析操作并提交的url分析模块、

一用于对url分析模块分析操作后的url地址进行sql注入检测的sql注入检测模块

及一用于输出检测结果的结果展现模块。

优选地,所述url分析模块中,操作包括提取url地址中的参数和过滤重复url地址。

优选地,所述sql注入检测模块包括:

一用于提供基础sql注入检测逻辑的检测基础逻辑模块、

一用于识别待检测url地址是否安装有waf并获得waf的型号和版本的waf特征匹配模块、

一用于维护和记录waf的特征及对应的型号和版本且与waf特征匹配模块配合的waf特征库、

一用于接收waf特征匹配模块的waf特征匹配识别结果、寻找和加载已经存在的特征处理插件并进行特征处理的变异特征处理模块

及一用于维护和记录特定waf的特征所对应的处理插件映射关系且与变异特征处理模块配合的变异特征处理插件库。

优选地,所述waf特征库包括记录了waf的特征类型和特征值的特征向量及其对应的版本和名称。

优选地,所述寻找和加载为通过内部编号查找对应插件名并根据所述插件名动态加载插件。

优选地,所述插件约定用于实现不同的逻辑的统一的接口规范;所述插件包括一用于接收http请求包并返回对这个请求包变异的结果的接口。

优选地,所述插件返回的结果包括插件版本号和插件名称的接口。

优选地,所述结果展现模块包括界面显示、按照预设格式输出到文本、存储到数据库或调用第三方接口将结果数据输出。

一种所述的sql注入检测装置的sql注入检测方法,所述方法包括以下步骤:

步骤1:接收任务,对任务进行任务参数解析验证,拆分为子任务进行调度;

步骤2:对需要进行检测的网站,利用爬虫模块获得网站内部的url地址;

步骤3:对所述url地址分析,提取url地址中的参数,过滤重复的url地址,将分析后的url地址列表交给sql注入检测模块;

步骤4:sql注入检测模块针对需要进行检测的网站的waf修改sql注入检测包,对所述网站进行检测;

步骤5:结果展现模块输出sql注入检测的结果。

优选地,所述步骤4包括以下步骤:

步骤4.1:利用waf特征匹配模块和waf特征库配合,识别需要进行检测的网站是否安装有waf,若有,则获得waf的型号和版本,进行下一步,若无,则进行步骤4.3;

步骤4.2:利用变异特征处理模块和变异特征处理插件库配合,对waf特征匹配的识别结果寻找并加载特征处理插件,利用特征处理插件对sql注入检测包进行特征处理直至不被需要进行检测的网站的waf识别;

步骤4.3:将当前sql注入检测包发送至需要进行检测的网站并执行,完成sql注入检测。

本发明提供了一种优化的sql注入检测装置及sql注入检测方法,通过任务接收调度模块接收并调度任务,以爬虫模块爬取url地址并交由url分析模块分析,sql注入检测模块对url所涉网站进行waf识别,根据识别结果查找到特征处理插件并对sql注入检测包进行对应修改使其能绕过网站waf,随后将修改完的sql注入检测包发送至需要进行检测的网站并执行,根据执行结果进行网站的注入点判断,获取sql注入的对应数据,以结果展现模块输出检测结果。本发明使得在有waf、sql防护保护的情况下,sql注入检测包能自动识别保护技术并最大程度的进行绕过,提高sql注入的漏洞的检出率,自动程度高,效率高。

附图说明

图1为本发明的sql注入检测装置的结构框图;

图2为本发明的sql注入检测方法的方法流程图。

具体实施方式

下面结合实施例对本发明做进一步的详细描述,但本发明的保护范围并不限于此。

本发明涉及一种sql注入检测装置,所述检测装置包括:

一用于接收下发任务并对任务进行参数解析验证、将任务拆分为内部子任务进而调度至待检测的站点的任务接收调度模块、

一用于对任务调度的待检测的站点爬出得到站点内部的url地址的爬虫模块、

一用于对任务产生的url地址进行分析操作并提交的url分析模块、

一用于对url分析模块分析操作后的url地址进行sql注入检测的sql注入检测模块

及一用于输出检测结果的结果展现模块。

本发明中,以任务接收调度模块接收并调度任务,以爬虫模块爬取url地址并交由url分析模块分析,sql注入检测模块对url所涉网站进行waf识别,根据识别结果查找到特征处理插件并对sql注入检测包进行对应修改使其能绕过网站waf,随后将修改完的sql注入检测包发送至需要进行检测的网站并执行,根据执行结果进行网站的注入点判断,获取sql注入的对应数据,以结果展现模块输出检测结果。

本发明中,任务接收调度模块是本装置各个模块的衔接管理层,其中,涉及对任务进行参数解析验证、将任务拆分为内部子任务进而调度是本领域技术人员可以理解的内容,现有的sql注入检测装置中的中控模块也都能主动完成,本领域技术人员可以依据需求自行设置。

本发明中,sql注入模块中内置常规的sql注入检测算法,此非本发明核心保护内容,本领域技术人员可以依据现有技术自行设置。

所述url分析模块中,操作包括提取url地址中的参数和过滤重复url地址。

本发明中,url分析模块提取的url地址中的参数可以作为后续sql注入的检测参数使用。

所述sql注入检测模块包括:

一用于提供基础sql注入检测逻辑的检测基础逻辑模块、

一用于识别待检测url地址是否安装有waf并获得waf的型号和版本的waf特征匹配模块、

一用于维护和记录waf的特征及对应的型号和版本且与waf特征匹配模块配合的waf特征库、

一用于接收waf特征匹配模块的waf特征匹配识别结果、寻找和加载已经存在的特征处理插件并进行特征处理的变异特征处理模块

及一用于维护和记录特定waf的特征所对应的处理插件映射关系且与变异特征处理模块配合的变异特征处理插件库。

所述waf特征库包括记录了waf的特征类型和特征值的特征向量及其对应的版本和名称。

所述寻找和加载为通过内部编号查找对应插件名并根据所述插件名动态加载插件。

所述插件约定用于实现不同的逻辑的统一的接口规范;所述插件包括一用于接收http请求包并返回对这个请求包变异的结果的接口。

所述插件返回的结果包括插件版本号和插件名称的接口。

本发明中,检测基础逻辑模块是提供基础sql注入检测逻辑的模块,一般sql注入检测装置中都设置有此模块,本领域技术人员可以依据需求自行设置。

本发明中,waf特征库可以是一个格式化文件,也可以是数据库,基本的特征记录描述格式一般为“特征向量-版本-名称”的格式,便于查找和对应,其中,特征向量记录waf的特征类型和特征值,版本记录waf对应的版本,名称记录waf对应的名称。

本发明中,变异特征处理插件库亦可以是一个格式化文件,也可以是数据库,基本的特征记录描述格式一般为“内部编号-处理插件名”的格式,便于查找和对应,其中,内部编号为装置内部对特征处理插件的编号,处理插件名为特征处理插件的名称。

本发明中,插件通过c++实现,但并不局限于语言。

本发明中,插件需要实现核心的变异接口,接收http请求包,返回对对应的请求包变异之后的结果。

本发明中,插件可以选择性实现。

所述结果展现模块包括界面显示、按照预设格式输出到文本、存储到数据库或调用第三方接口将结果数据输出。

本发明中,结果展现模块用于输出检测结果,包括但不局限于界面显示,亦可以是按照一定格式输出到文本、存储到数据库中、或调用第三方接口将结果数据输出等任意可以将结果进行输出的方式。

一种所述的sql注入检测装置的sql注入检测方法,所述方法包括以下步骤。

步骤1:接收任务,对任务进行任务参数解析验证,拆分为子任务进行调度。

步骤2:对需要进行检测的网站,利用爬虫模块获得网站内部的url地址。

步骤3:对所述url地址分析,提取url地址中的参数,过滤重复的url地址,将分析后的url地址列表交给sql注入检测模块。

步骤4:sql注入检测模块针对需要进行检测的网站的waf修改sql注入检测包,对所述网站进行检测。

所述步骤4包括以下步骤:

步骤4.1:利用waf特征匹配模块和waf特征库配合,识别需要进行检测的网站是否安装有waf,若有,则获得waf的型号和版本,进行下一步,若无,则进行步骤4.3;

步骤4.2:利用变异特征处理模块和变异特征处理插件库配合,对waf特征匹配的识别结果寻找并加载特征处理插件,利用特征处理插件对sql注入检测包进行特征处理直至不被需要进行检测的网站的waf识别;

步骤4.3:将当前sql注入检测包发送至需要进行检测的网站并执行,完成sql注入检测。

传统的sql注入装置/工具通过构造注入payload,之后对payload进行发送,根据payload的执行结果进行注入点的判断及注入数据的获取;而本发明中,在传统的sql注入检测装置的基本流程上,增加waf识别过程,在注入过程中,增加有效载荷payload的变形转义,根据waf识别的结果对payload进行相关变异,从而完成对waf的绕过,最终完成sql注入的检测。

步骤5:结果展现模块输出sql注入检测的结果。

本发明中,给出一个实施例。

令目标需要进行检测的网站a(http://xxxx/index.php?id=1),网站安装了waf,此waf能够检测url中的sql注入关键词,其特征是在http响应头中的server的字段为x-waf1.0。

传统的sql注入检测提交注入检测为http://xxxx/index.php?id=1and1=1,但由于上述waf会过滤url中的空格符号,实际系统处理到的是http://xxxx/index.php?id=1and1=1,达不到注入效果。

而本发明首先会进行waf检测,匹配到http响应头中有server字段为x-waf1.0,则在有效载荷payload发送前自动进入x-waf的payload变异流程,将空格替换为sql中的注释,处理后的结果为http://xxxx/index.php?id=1/**/and/**/1=1,此时waf未识别到空格,从而本发明的sql注入检测包能绕过waf,并且有效载荷payload能成功执行。

本发明通过任务接收调度模块接收并调度任务,以爬虫模块爬取url地址并交由url分析模块分析,sql注入检测模块对url所涉网站进行waf识别,根据识别结果查找到特征处理插件并对sql注入检测包进行对应修改使其能绕过网站waf,随后将修改完的sql注入检测包发送至需要进行检测的网站并执行,根据执行结果进行网站的注入点判断,获取sql注入的对应数据,以结果展现模块输出检测结果。本发明使得在有waf、sql防护保护的情况下,sql注入检测包能自动识别保护技术并最大程度的进行绕过,提高sql注入的漏洞的检出率,自动程度高,效率高。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1