本发明涉及计算机软件信息技术领域,尤其涉及一种基于数据库注入测试的安全测试系统及方法。
背景技术:
随着网络和计算机软件信息技术的发展,网络安全越来越受到大家的重视和关注,相关的安全测试也越来越必不可少。在安全测试中,数据库注入测试都会做为一个使用频繁的常用安全测试方法,测试人员可以通过该方法模拟黑客进行攻击,验证被测网址是否对于用户提交的参数未做过滤就直接放到sql语句中执行,导致参数中的特殊字符打破了sql语句原有逻辑,而被黑客利用该漏洞执行了任意sql语句,从而提高被测网站的安全等级;但是很多云端业务系统已经部署了waf或已经在云端部署了数据校验的代码功能,由于waf或云端业务安全代码对很多常见特殊字符进行了过滤,导致基于数据库注入的特殊数据库构造语句不能被正确的解析而在云端业务系统生成数据库语句并提交到后台数据库进行合法的执行,造成数据库注入测试无法成功;目前的数据库注入测试语句,要么是提供了基本的特殊字符,要么只有简单的数据库构造语句,只能对没有waf或者无数据库注入过滤机制的业务系统进行测试;这些语句很多过于简单,且增加了安全测试的时间,以现在比较流行的数据库注入工具啊d、明小子为例,数据库注入测试语句仅仅是简单的单引号,and,or等语句;由于waf的存在,通常这些特殊字都会被转义掉,无法让云端业务系统最后生成的数据库语句在提交到数据库后合法的执行;这导致了数据库注入测试的局限性,也给安全测试工作带来了很多的不便。因此需要一个能使数据库注入自动判断过滤方式并进行有效数据库注入构造的手段,以实现在安全测试工作中更简单、更快捷、更有效地对目标网站进行数据库注入测试的需求。
技术实现要素:
针对现有技术存在的不足之处,本发明的目的在于提供一种基于数据库注入测试的安全测试系统及方法,可以快速且自动的遍历多种类型及编码方式的数据库注入构造方法,省去了人工进行数据库过滤机制的判断,实现了安全测试的高效性,快捷性和准确性。
本发明的目的通过下述技术方案实现:
一种基于数据库注入测试的安全测试系统,包括云端被防御业务系统和若干个客户端,所述客户端与云端被防御业务系统网络通信连接,所述客户端内部包括响应监听模块、消息识别模块、信息收集模块、信息构造模块和信息发送模块;所述客户端内部具有待测业务系统,所述待测业务系统包括请求报文,所述请求报文包括响应数据、数据流信息;所述云端被防御业务系统用于进行数据库注入测试;
所述响应监听模块用于对待测业务系统前端请求报文的响应数据进行监视,对网络上信息传输进行管理,判断并抓取数据流信息;
所述消息识别模块用于判断响应监听模块所抓取的数据流信息中的云端响应信息是否存在对数据库注入的过滤行为,若属于数据库注入过滤行为则将该数据流信息传递给信息收集模块,否则不动作;
所述信息收集模块用于获取数据流信息中关于数据库注入过滤的特定参数信息,所述特定参数信息包括特殊字符及特殊数据库注入构造语句;
所述信息构造模块用于接收从信息收集模块传递来的特定参数信息,分析并处理特定参数信息,然后以特定的方式生成一个新的数据库注入语句,并将该语句传递给信息发送模块;
所述信息发送模块用于对从信息构造模块获取到的数据库注入语句进行语法的检测,若新的数据库注入语句语法合法,则直接提交云端被防御业务系统进行数据库注入测试;否则信息发送模块将该语句重新传输至信息构造模块,并等待信息构造模块重新生成新的数据库注入语句。
为了更好地实现本发明安全测试系统,所述客户端以软件开发工具包sdk的形式安装或集成在待测目标上;所述待测目标包括网站、服务器、终端设备或应用软件。
一种基于数据库注入测试的安全测试方法,包括安全测试系统,所述安全测试系统包括云端被防御业务系统和若干个客户端,所述客户端与云端被防御业务系统网络通信连接,所述客户端内部包括响应监听模块、消息识别模块、信息收集模块、信息构造模块和信息发送模块;其方法如下:
a、所述客户端内部具有待测业务系统,所述待测业务系统包括请求报文,所述请求报文包括响应数据、数据流信息;所述客户端与云端被防御业务系统连接,所述客户端的数量至少为一个;
b、所述客户端以软件开发工具包sdk的形式安装或集成在待测目标上,客户端的响应监听模块对待测目标的网络状态进行数据流程监视,对待测目标的网络上信息传输进行管理,判断并抓取数据流信息,所述待测目标至少包括网站、服务器、终端设备及应用软件;所述客户端的消息识别模块判断抓取的数据流信息中的报文请求是否属于数据库注入过滤的行为,是,则进入步骤c,否,则不动作;
c、所述客户端的信息收集模块获取数据流信息中关于数据库注入过滤的特定参数信息,并将获取到特定参数信息发送至信息构造模块;所述特定参数信息至少包括特殊字符及特殊数据库注入构造语句;
d、所述客户端的信息构造模块接收从信息收集模块传递来的特定参数信息,分析并处理特定参数信息,然后以特定的方式生成一个新的数据库注入语句,并将该数据库注入语句传递给信息发送模块;
e、所述客户端的信息发送模块对从信息构造模块获取到的数据库注入语句进行语法的检测,若新的数据库注入语句语法合法,则直接提交云端被防御业务系统进行数据库注入测试;否则进入步骤d。
在安全测试方法中,首先,将客户端及云端被防御业务系统之间建立连接;其次,响应监听模块对被防御目标的网络状态进行数据流程监视,判断并抓取数据流信息,并将其发送给消息识别模块;消息识别模块判断抓取的数据流信息中的云端响应信息是否存在对数据库注入的过滤行为,若属于数据库注入过滤行为则将该数据流信息传递给信息收集模块;信息收集获取数据流信息中关于数据库注入过滤的特定参数信息,并发送给信息构造模块;信息构造模块利用从信息收集模块传递来的特定参数信息,分析并处理特定参数信息,然后以特定的方式生成一个新的数据库注入语句(如新的编码格式),并将该语句传递给信息发送模块;最后,信息发送模块对从信息构造模块获取到的数据库语句进行语法的检测,若新的数据库语句语法合法,则直接提交云端进行数据库注入测试,否则信息发送模块将该语句重新传输至信息构造模块,并等待信息构造模块重新生成新的语句。
本发明较现有技术相比,具有以下优点及有益效果:
采用本发明对被测试目标进行数据库注入响应的监测,并针对响应信息对新数据库注入测试语句的自动构造,在云端数据库注入测试中,可以快速且自动的遍历多种类型及编码方式的数据库注入构造方法,省去了人工进行数据库过滤机制的判断,实现了安全测试的高效性,快捷性和准确性。
附图说明
图1为本发明的原理结构框图。
具体实施方式
下面结合实施例对本发明作进一步地详细说明:
实施例
如图1所示,一种基于数据库注入测试的安全测试系统,包括云端被防御业务系统和若干个客户端,所述客户端与云端被防御业务系统网络通信连接,所述客户端内部包括响应监听模块、消息识别模块、信息收集模块、信息构造模块和信息发送模块;所述客户端内部具有待测业务系统,所述待测业务系统包括请求报文,所述请求报文包括响应数据、数据流信息;所述云端被防御业务系统用于进行数据库注入测试;所述客户端以软件开发工具包sdk的形式安装或集成在待测目标上,所述待测目标包括网站、服务器、终端设备或应用软件。
所述响应监听模块用于对待测业务系统前端请求报文的响应数据进行监视,对网络上信息传输进行管理,判断并抓取数据流信息;
所述消息识别模块用于判断响应监听模块所抓取的数据流信息中的云端响应信息是否存在对数据库注入的过滤行为,若属于数据库注入过滤行为则将该数据流信息传递给信息收集模块,否则不动作;
所述信息收集模块用于获取数据流信息中关于数据库注入过滤的特定参数信息,所述特定参数信息包括特殊字符及特殊数据库注入构造语句;
所述信息构造模块用于接收从信息收集模块传递来的特定参数信息,分析并处理特定参数信息,然后以特定的方式生成一个新的数据库注入语句,并将该语句传递给信息发送模块;
所述信息发送模块用于对从信息构造模块获取到的数据库注入语句进行语法的检测,若新的数据库注入语句语法合法,则直接提交云端被防御业务系统进行数据库注入测试;否则信息发送模块将该语句重新传输至信息构造模块,并等待信息构造模块重新生成新的数据库注入语句。
本发明通过对待测目标的响应数据流进行抓取分析,当发现其为数据库注入过滤行为时,则对数据流中的特定参数信息,例如:特殊字符及数据库注入构造语句信息,进行采集。并根据采集到的特殊字符及数据库注入构造语句信息进行重新构造(如将and、单引号等替换成其他编码格式),当重新构造语句并提交到云端后,云端业务系统会由于缺少对应的过滤机制而导致数据库注入攻击,从而数据库注入测试成功;以此,来实现数据库注入过滤机制的自动判断和绕过,提高了网站的安全性和安全测试的有效性。
一种基于数据库注入测试的安全测试方法,包括安全测试系统,所述安全测试系统包括云端被防御业务系统和若干个客户端,所述客户端与云端被防御业务系统网络通信连接,所述客户端内部包括响应监听模块、消息识别模块、信息收集模块、信息构造模块和信息发送模块;其方法如下:
a、所述客户端内部具有待测业务系统,所述待测业务系统包括请求报文,所述请求报文包括响应数据、数据流信息;所述客户端与云端被防御业务系统连接,所述客户端的数量至少为一个;为了保证同时对多个用户或终端能对被测目标进行数据库注入过滤规则的自动判断和绕过,本实施例中,客户端可以是多个,也可以是一个,具体数量根据用户或终端而定。本实施例中客户端以sdk的形式安装或集成在待测目标上,但在实际应用中可以以其他方式进行安装或集成,此处不再赘述。所述被测目标至少包括网站、服务器、终端设备及应用软件。
b、所述客户端以软件开发工具包sdk的形式安装或集成在待测目标上,客户端的响应监听模块对待测目标的网络状态进行数据流程监视,对待测目标的网络上信息传输进行管理,判断并抓取数据流信息,所述待测目标至少包括网站、服务器、终端设备及应用软件;所述客户端的消息识别模块判断抓取的数据流信息中的报文请求是否属于数据库注入过滤的行为,是,则进入步骤c,否,则不动作;
c、所述客户端的信息收集模块获取数据流信息中关于数据库注入过滤的特定参数信息,并将获取到特定参数信息发送至信息构造模块;所述特定参数信息至少包括特殊字符及特殊数据库注入构造语句;
d、所述客户端的信息构造模块接收从信息收集模块传递来的特定参数信息,分析并处理特定参数信息,然后以特定的方式生成一个新的数据库注入语句,并将该数据库注入语句传递给信息发送模块;
e、所述客户端的信息发送模块对从信息构造模块获取到的数据库注入语句进行语法的检测,若新的数据库注入语句语法合法,则直接提交云端被防御业务系统进行数据库注入测试;否则进入步骤d。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。