本发明属于计算机技术领域,特别涉及信息安全领域,特别是涉及一种SQL注入漏洞定位检测系统。
背景技术:
随着互联网迅猛发展,越来越多的WEB应用都采取了三级架构:数据库服务器、应用服务器和客户端。用户在客户端输入数据,应用服务器根据其输入构建SQL语句,并将SQL语句送至数据库中执行操作,最终将结果返回给用户。由于数据库中存储着大量敏感信息,导致其频繁遭到攻击,其中最严重的就是SQL注入攻击。SQL注入攻击是指攻击者在合法SQL语句中插入SQL关键字或操作符从而改变SQL语句的语义、语法结构,将这些恶意的SQL语句提交给数据库,获取用户名密码等敏感信息,进而获取主机控制权限等。OWASP于2013年发布的十大WEB应用安全漏洞中,SQL注入攻击排名第一。
本发明提出一种利用渗透测试与程序分析技术相结合的方法来实现对SQL注入漏洞的定位。渗透测试阶段输入网站地址,通过模拟攻击确定引起SQL注入的用户输入点,程序分析阶段根据渗透测试阶段的结果,在WEB应用系统源代码中通过数据流跟踪技术对漏洞产生过程进行分析。
技术实现要素:
本发明的目的是提供一种SQL注入漏洞定位检测系统,实现SQL注入漏洞的定位检测。
本发明的目的可以通过以下技术方案实现:
一种SQL注入漏洞定位检测系统,包括渗透测试单元和程序分析单元;
所述的渗透测试单元包括信息获取模块、攻击字符串库和模拟攻击模块;
所述的信息获取模块检测URL可访性并获取网页源代码,在网页中寻找如用户登陆等方面的可能注入点,依次从攻击字符串库调用攻击字符串对网站实施模拟攻击,根据服务器端返回页面检测结果判断是否攻击成功,若成功则表示存在SQL注入漏洞,将网站位置及可能注入点保存,以便程序分析阶段时使用;
所述的程序分析单元包括源代码载入器、标识模块、数据流跟踪模块、代码插桩器和动态测试模块;
所述的源代码载入器根据渗透测试的结果载入存在SQL注入漏洞的页面源代码,为后来的漏洞定位做准备;
所述的标识模块标识污染变量,运用数据流跟踪技术跟踪污染变量在程序中的传播,若最终组成SQL查询语句的变量中有来自用户输入的数据,则断定该变量为SQL注入点,给出该变量输入点的位置及其传播路径;
所述的代码插桩器在程序中插入信息以监测程序的动态运行,得到污染变量的传播路径。
本发明的有益效果:本发明所提出一种SQL注入漏洞定位检测系统,先通过渗透测试运用模拟攻击的方式来检测WEB程序中是否有SQL注入漏洞,再运用程序分析技术对源代码进行分析,运用数据流跟踪技术、插桩技术对污染变量的传播进行跟踪,最终给出污染变量在程序中的传播路径,便于开发维护人员进行漏洞的修补,本发明提出了渗透测试与程序分析技术相结合的方法,解决了渗透测试无法分析源程序及纯粹程序分析浪费时间的缺点,为SQL注入漏洞的定位检测提供了一种新的思路。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1是本发明的系统示意图。
图2是本发明的方法流程图。
具体实施方式
本发明的目的是提供一种SQL注入漏洞定位检测系统,实现SQL注入漏洞的定位检测。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明提供了一种SQL注入漏洞定位检测系统,包括渗透测试单元D110和程序分析单元D120。
所述的渗透测试单元D110包括信息获取模块M211、攻击字符串库DB1和模拟攻击模块M212;信息获取模块M211检测URL可访性并获取网页源代码,在网页中寻找如用户登陆等方面的可能注入点,依次从攻击字符串库DB1调用攻击字符串对网站实施模拟攻击,根据服务器端返回页面检测结果判断是否攻击成功,若成功则表示存在SQL注入漏洞,将网站位置及可能注入点保存,以便程序分析阶段时使用。
所述的程序分析单元D120包括源代码载入器P1、标识模块M213、数据流跟踪模块M214、代码插桩器P2和动态测试模块M215;源代码载入器P1根据渗透测试的结果载入存在SQL注入漏洞的页面源代码,为后来的漏洞定位做准备;标识模块M213标识污染变量,运用数据流跟踪技术跟踪污染变量在程序中的传播,若最终组成SQL查询语句的变量中有来自用户输入的数据,则断定该变量为SQL注入点,给出该变量输入点的位置及其传播路径;代码插桩器P2在程序中插入信息以监测程序的动态运行,本发明中的插桩用于得到污染变量的传播路径。
如图2所示,一种SQL注入漏洞定位检测方法,包括以下步骤:
步骤S1,信息获取模块M211检测网站地址U1的可访性并获取网页源代码,并传给模拟攻击模块M212;
步骤S2,模拟攻击模块M212在网页中寻找如用户登陆等方面的可能注入点,依次从攻击字符串库DB1调用攻击字符串对网站实施模拟攻击,根据服务器端返回页面检测结果判断是否攻击成功,若成功则表示存在SQL注入漏洞,将网站位置及可能注入点保存,以便程序分析阶段时使用;
步骤S3,源代码载入器P1根据模拟攻击模块M212渗透测试的结果载入存在SQL注入漏洞的页面源代码,为后来的漏洞定位做准备;
步骤S4,标识模块M213污染变量,为跟踪数据流做准备;
步骤S5,数据流跟踪模块M214运用数据流跟踪技术跟踪污染变量在程序中的传播,若最终组成SQL查询语句的变量中有来自用户输入的数据,则断定该变量为SQL注入点,给出该变量输入点的位置及其传播路径;
步骤S6,代码插桩器P2在程序中插入信息以监测程序的动态运行,是为了收集程序的运行时特征数据,在被测程序的特定部位插入一段检测程序(探针),但不破坏被测程序的原有逻辑完整性,生成含探针的程序P3;本发明中插入的探针是为了记录变量传播的路径,在检测到变量为引发SQL注入漏洞的注入点时,抛出其最先接受输入的位置以及其在程序中的传播路径,方便日后对漏洞的修复;
步骤S7,动态测试模块M215通过输入测试数据,最终给出污染变量在程序中的传播路径,生成SQL注入点报告。
本发明所提出一种SQL注入漏洞定位检测系统,先通过渗透测试运用模拟攻击的方式来检测WEB程序中是否有SQL注入漏洞,再运用程序分析技术对源代码进行分析,运用数据流跟踪技术、插桩技术对污染变量的传播进行跟踪,最终给出污染变量在程序中的传播路径,便于开发维护人员进行漏洞的修补,本发明提出了渗透测试与程序分析技术相结合的方法,解决了渗透测试无法分析源程序及纯粹程序分析浪费时间的缺点,为SQL注入漏洞的定位检测提供了一种新的思路。
为了描述的方便,描述以上装置时以功能分为各种单元、模块分别描述。当然,在实施本申请时可以把各单元、模块的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施方式或者实施方式的某些部分所述的方法。
以上所描述的装置实施方式仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施方式方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本申请可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
在本说明书的描述中,参考术语“一个实施例”、“示例”、“具体示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
以上内容仅仅是对本发明结构所作的举例和说明,所属本技术领域的技术人员对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,只要不偏离发明的结构或者超越本权利要求书所定义的范围,均应属于本发明的保护范围。