CN103530564A - 一种sql注入漏洞测试与验证方法及系统 - Google Patents
一种sql注入漏洞测试与验证方法及系统 Download PDFInfo
- Publication number
- CN103530564A CN103530564A CN201310439957.1A CN201310439957A CN103530564A CN 103530564 A CN103530564 A CN 103530564A CN 201310439957 A CN201310439957 A CN 201310439957A CN 103530564 A CN103530564 A CN 103530564A
- Authority
- CN
- China
- Prior art keywords
- url
- sql
- scanning
- parameter
- request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/034—Test or assess a computer or a system
Abstract
本发明公开了一种SQL注入漏洞测试与验证方法及系统,基于JavaEE的WebApp框架,该方法通过用户输入URL,系统对URL进行解析或根据已知的HTTP request,自动从中提取参数和注入点,然后用户根据自身需要,选择注入点或自定义注入点加入请求中,并选择请求模式、请求协议和数据库服务器,系统从数据库中载入绕过技术配置、规则池中静态规则和动态规则数据,经过预处理后,由多线程管理器分配线程,交由扫描管理器进行SQL注入扫描,实现在保证自动化程度的前提下,降低漏报率。另外,本发明基于实际交互的HTTP报文,可自动识别报文中所有可能存在的注入点,也可自定义注入点,实现半自动化漏洞检测,可实现检测任何区域的SQL注入漏洞,进一步的降低漏报率。
Description
技术领域
本发明涉及计算机Web服务应用技术领域,更具体的说,是涉及一种SQL注入漏洞测试与验证方法及系统。
背景技术
Web网站是互联网最基础的组成部分,如今的Web网站都采用动态交互式网页技术,并且大多使用数据库来保存网站的数据。数据库驱动的Web网站通常包含三层:表示层、逻辑层和存储层。表示层用于页面展现,逻辑层实现具体的业务功能,存储层实现数据的存储。HTTP请求通过表现层传入逻辑层,逻辑层根据需要利用SQL命令向存储层数据库请求数据,并形成HTTP响应返回至表现层。HTTP请求中包含用户输入的参数,这些参数会以GET、COOKIE、POST等形式传输,如果这些参数传递给SQL查询语句,开发人员又没有对它们进行验证和过滤,则将导致SQL注入漏洞。
SQL注入漏洞是一种严重的Web安全漏洞,该漏洞主要是由于程序员在编写程序的时候没有对用户输入的参数进行有效性验证和过滤,导致恶意攻击者可将SQL命令注入到参数中,使得服务器执行这些SQL命令。SQL注入漏洞风险程度取决于攻击者能够执行什么SQL命令,与之有关的有两个因素,一是数据库类型,二是数据库用户的权限。通常来讲SQL注入漏洞将导致数据库数据泄露、数据被篡改,如果数据库允许执行操作系统命令,则可能导致整个数据库服务器被入侵。所以作为一个Web应用程序来说,SQL注入是必须要防范的安全问题。
虽说SQL注入漏洞至今已有十余年时间了,但如今的Web网站仍然存在大量的SQL漏洞,同时,对SQL注入漏洞的检测手段和水平也在不断提升,不少Web安全扫描类工具能够快速的检测出包括SQL注入漏洞在内的Web漏洞,自动化程度较高,但是通常漏报率较高。
因此,提供一种SQL注入漏洞测试与验证方法及系统,在保证自动化程度的前提下,降低漏报率,是本领域技术人员亟待解决的问题。
发明内容
有鉴于此,本发明提供了一种SQL注入漏洞测试与验证方法及系统,以克服现有技术中由于利用爬虫技术识别被测链接,容易导致部分隐蔽的交互无法被识别导致漏报率较高的问题。
为实现上述目的,本发明提供如下技术方案:
一种SQL注入漏洞测试与验证方法,基于JavaEE的WebApp框架,该方法包括:
S1、接收SQL注入管理员发送的SQL注入扫描指令,所述SQL注入扫描指令为URL或请求信息;
S2、对指定Web应用服务器的Web应用进行SQL注入扫描;
S3、根据所述SQL注入扫描指令创建新的线程,并记录用户信息和所述SQL注入管理员的请求信息到数据库服务器中;
S4、对所述URL进行解析或根据已知的HTTP request,提取参数和注入点,根据所述SQL注入管理员的需求,选择请求模式、请求协议及对应数据库服务器;
S5、载入绕过技术配置、规则池中的静态规则和动态规则数据;
S6、对所述静态规则和动态规则数据进行预处理,并进行线程分配,由扫描管理器进行SQL注入扫描,得到扫描结果;
S7、将所述扫描结果记录,并管理和记录在扫描过程中全程扫描情况。
优选的,还包括:
S8、根据配置好的通知方式,将所述扫描结果和所述全程扫描情况由JMS与短信服务管理器发送email或短信进行显示。
其中,所述步骤S3具体包括:
S31、建立所述线程的ID与宿主用户的对应关系得到对应表;
S32、当所述宿主用户发出暂停或终止命令时,根据所述对应表中记录的所述对应关系得到对应的线程,执行所述线程暂停或终止命令。
其中,所述步骤S4具体包括:
S41、分析预验证的所述URL,调用URL参数分析子功能模块对所述URL进行解析;
S42、提取所述URL中不带参数的URL以及URL后面跟随的所有参数列表,并提取所述URL中的cookie信息;
S43、将所述不带参数的URL、所述参数列表以及所述cookie信息存储至专用存储数据库服务器中。
其中,所述步骤S8具体包括:
S81、从所述数据库服务器中读取当前线程的所述扫描结果,将所述扫描结果组合汇总成SQL注入汇总报告文件;
S82、从所述汇总报告文件配置项中判断是否有汇报配置信息,如果无所述汇报配置信息,则结束所述线程;
S83、如果有所述汇报配置信息,则确定配置形式,所述配置形式为短信方式或邮件方式;
S84、若配置形式为短信方式,则以短信方式发生简要通知发送至用户界面显示;
S85、若配置形式为邮件方式,则以邮件方式发生汇总报告发送至用户界面显示。
本发明还公开了一种SQL注入漏洞测试与验证系统,基于JavaEE的WebApp框架,该系统包括:
接收单元,用于接收SQL注入管理员发送的SQL注入扫描指令,所述SQL注入扫描指令为URL或请求信息;
扫描单元,用于对指定Web应用服务器的Web应用进行SQL注入扫描;
记录单元,用于根据所述SQL注入扫描指令创建新的线程,并记录用户信息和所述SQL注入管理员的请求信息到数据库服务器中;
解析提取单元,用于对所述URL进行解析或根据已知的HTTP request,提取参数和注入点,根据所述SQL注入管理员的需求,选择请求模式、请求协议及对应数据库服务器;
载入单元,用于载入绕过技术配置、规则池中的静态规则和动态规则数据;
预处理单元,用于对所述静态规则和动态规则数据进行预处理,并进行线程分配,由扫描管理器进行SQL注入扫描,得到扫描结果;
记录管理单元,用于将所述扫描结果记录,并管理和记录在扫描过程中全程扫描情况。
优选的,还包括:
显示单元,用于根据配置好的通知方式,将所述扫描结果和所述全程扫描情况由JMS与短信服务管理器发送email或短信进行显示。
其中,所述记录单元包括:
建立关系表单元,用于建立所述线程的ID与宿主用户的对应关系得到对应表;
执行单元,用于当所述宿主用户发出暂停或终止命令时,根据所述对应表中记录的所述对应关系得到对应的线程,执行所述线程暂停或终止命令。
其中,所述解析提取单元包括:
分析单元,用于分析预验证的所述URL,调用URL参数分析子功能模块对所述URL进行解析;
提取单元,用于提取所述URL中不带参数的URL以及URL后面跟随的所有参数列表,并提取所述URL中的cookie信息;
存储单元,用于将所述不带参数的URL、所述参数列表以及所述cookie信息存储至专用存储数据库服务器中。
其中,所述显示单元包括:
读取汇总单元,用于从所述数据库服务器中读取当前线程的所述扫描结果,将所述扫描结果组合汇总成SQL注入汇总报告文件;
判断单元,用于从所述汇总报告文件配置项中判断是否有汇报配置信息;
确定单元,用于确定配置形式,所述配置形式为短信方式或邮件方式;
短信显示单元,用于若配置形式为短信方式,则以短信方式发生简要通知发送至用户界面显示;
邮件显示单元,用于若配置形式为邮件方式,则以邮件方式发生汇总报告发送至用户界面显示。
经由上述的技术方案可知,与现有技术相比,本发明公开了一种SQL注入漏洞测试与验证方法及系统,基于JavaEE的WebApp框架,该方法通过用户输入URL,系统对URL进行解析或根据已知的HTTP request,自动从中提取参数和注入点,然后用户根据自身需要,选择注入点或自定义注入点加入请求中,并选择请求模式、请求协议和数据库服务器,系统从数据库中载入绕过技术配置、规则池中静态规则和动态规则数据,经过预处理后,由多线程管理器分配线程,交由扫描管理器进行SQL注入扫描,实现在保证自动化程度的前提下,降低漏报率。
另外,本发明基于实际交互的HTTP报文,可自动识别报文中所有可能存在的注入点,也可自定义注入点,实现半自动化漏洞检测,可实现检测任何区域的SQL注入漏洞,进一步的降低漏报率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例公开的一种SQL注入漏洞测试与验证方法流程图;
图2为本发明实施例公开的SQL注入扫描拓扑结构示意图;
图3为本发明实施例公开的基于JavaEE的WebApp半自动化SQL注入整体方案结构示意图;
图4为本发明实施例的整体系统主流程示意图;
图5本发明实施例公开的根据URL构造请求列表的流程图;
图6本发明实施例公开的根据用户给定的请求信息构造请求列表的流程图;
图7为本发明实施例公开的发生请求的流程图;
图8为本发明实施例公开的SQL注入扫描的过程图;
图9为本发明实施例中对整体参数判断的流程图;
图10为本发明实施例中对字符串型参数判断的流程图;
图11为本发明实施例公开的整体框架对SQL注入漏洞扫描流程图;
图12为本发明实施例中从返回的页面内容中抽取schema的流程图;
图13为本发明实施例中从返回的页面内容中抽取tables的流程图;
图14为本发明实施例中从返回的页面内容中抽取fields的流程图;
图15为本发明实施例中从返回的页面内容中抽取datas的流程图;
图16为本发明实施例公开的SQL注入扫描获得报告的流程图;
图17为本发明实施例公开的一种SQL注入漏洞测试与验证系统的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明公开了一种SQL注入漏洞测试与验证方法及系统,基于JavaEE的WebApp框架,该方法通过用户输入URL,系统对URL进行解析或根据已知的HTTP request,自动从中提取参数和注入点,然后用户根据自身需要,选择注入点或自定义注入点加入请求中,并选择请求模式、请求协议和数据库服务器,系统从数据库中载入绕过技术配置、规则池中静态规则和动态规则数据,经过预处理后,由多线程管理器分配线程,交由扫描管理器进行SQL注入扫描,实现在保证自动化程度的前提下,降低漏报率。
另外,本发明基于实际交互的HTTP报文,可自动识别报文中所有可能存在的注入点,也可自定义注入点,实现半自动化漏洞检测,可实现检测任何区域的SQL注入漏洞,进一步的降低漏报率。
请参阅附图1,为本发明实施例公开的一种SQL注入漏洞测试与验证方法流程图。本发明实施例公开了一种SQL注入漏洞测试与验证方法,基于JavaEE的WebApp框架,该方法具体步骤包括:
步骤S1、接收SQL注入管理员发送的SQL注入扫描指令,所述SQL注入扫描指令为URL或请求信息;
步骤S2、对指定Web应用服务器的Web应用进行SQL注入扫描;
步骤S3、根据所述SQL注入扫描指令创建新的线程,并记录用户信息和所述SQL注入管理员的请求信息到数据库服务器中;
具体的,所述步骤S3包括:
步骤S31、建立所述线程的ID与宿主用户的对应关系得到对应表;
步骤S32、当所述宿主用户发出暂停或终止命令时,根据所述对应表中记录的所述对应关系得到对应的线程,执行所述线程暂停或终止命令。
步骤S4、对所述URL进行解析或根据已知的HTTP request,提取参数和注入点,根据所述SQL注入管理员的需求,选择请求模式、请求协议及对应数据库服务器;
具体的,所述步骤S4具体包括:
步骤S41、分析预验证的所述URL,调用URL参数分析子功能模块对所述URL进行解析;
步骤S42、提取所述URL中不带参数的URL以及URL后面跟随的所有参数列表,并提取所述URL中的cookie信息;
步骤S43、将所述不带参数的URL、所述参数列表以及所述cookie信息存储至专用存储数据库服务器中。
步骤S5、载入绕过技术配置、规则池中的静态规则和动态规则数据;
动态规则队列支持正则表达式模糊测试数据生成,配置好测试规则的正则表达式,系统会生成。
规则器与规则池:
1)模糊规则器定义
以正则表达式形式定义模糊规则,存储该正则表达式到数据库中,模糊定义器根据正则表达式随机生成相应的具体实例规则数据,并存储该实例数据到规则池中。
2)固定规则器定义
3)应用规则池
规则池是所有规则的队列集合,该集合包含了模糊定义器生成的随机规则和用户定义的特定规则数据。
步骤S6、对所述静态规则和动态规则数据进行预处理,并进行线程分配,由扫描管理器进行SQL注入扫描,得到扫描结果;
步骤S7、将所述扫描结果记录,并管理和记录在扫描过程中全程扫描情况。
步骤S8、根据配置好的通知方式,将所述扫描结果和所述全程扫描情况由JMS与短信服务管理器发送email或短信进行显示。
具体的,所述步骤S8具体包括:
步骤S81、从所述数据库服务器中读取当前线程的所述扫描结果,将所述扫描结果组合汇总成SQL注入汇总报告文件;
步骤S82、从所述汇总报告文件配置项中判断是否有汇报配置信息,如果无所述汇报配置信息,则结束所述线程;
步骤S83、如果有所述汇报配置信息,则确定配置形式,所述配置形式为短信方式或邮件方式;
步骤S84、若配置形式为短信方式,则以短信方式发生简要通知发送至用户界面显示;
步骤S85、若配置形式为邮件方式,则以邮件方式发生汇总报告发送至用户界面显示。
具体的,请参阅附图2,为本发明实施例公开的SQL注入扫描拓扑结构示意图。上述公开的发明根据SQL注入管理员需要,对指定web应用服务器的web应用进行SQL注入扫描,管理员发出SQL注入扫描指令(url或请求信息),半自动SQL注入扫描服务器为发出SQL注入扫描请求的管理员创建新的线程,并记录用户信息、请求信息到数据库中,在创建线程时,半自动SQL注入扫描服务器将建立该线程ID与宿主用户(即发出指令的SQL注入扫描管理员)的对应关系,当宿主用户发出暂停或终止命令时,可根据该对应表中记录的对应关系找到对应的线程,以便于执行线程暂停或终止命令。线程创建后,此时用户端的工作即交由半自动化SQL注入服务器执行,用户端浏览器可关闭,SQL注入扫描不会因为客户端浏览器的关闭而终止,当然,当用户打开浏览器,登陆系统后,仍可观察SQL注入扫描情况。半自动化SQL注入服务器接受SQL注入扫描命令后,将对被扫描服务器进行SQL注入扫描,并将扫描结果记录于半自动化SQL注入服务器的数据库服务器中,客户端浏览器将实时向数据库中取数据,并展现到客户端浏览器中。
具体的,请参阅附图3,为本发明实施例公开的基于JavaEE的WebApp半自动化SQL注入整体方案结构示意图。
由图3图示可得,用户输入URL(该URL中带参数也可不带),系统解析URL,自动从中提取参数和注入点,用户根据需要,选择注入点或自定义注入点加入请求中,选择请求模式GET/POST,选择请求协议(可测试不同协议下的SQL注入),选择数据库Oracle,MySQL,MsSQL等,系统从数据库中载入绕过技术配置、规则池中静态规则和动态规则数据,经预处理后,由多线程管理器分配线程,交由扫描管理器进行SQL注入扫描,同时,扫描结果记录管理在扫描过程中全程记录扫描情况,扫描结束后,系统载入配置好的通知方式,由JMS与短信服务管理器发送email或短信。
根据图3所示的整体架构图,整个系统主流程可分为四大模块,具体为:构造请求列表、发生请求、扫描过程以及获得报告。具体的,请参阅附图4,为本发明实施例的整体系统主流程示意图。该流程主要描述了从URL解析,构建扫描请求,发出请求,SQL注入扫描,到生成扫描报告,报告通知到项目相关责任人的过程和实现。
对于构造请求列表,所述构造请求列表分2种情形:根据URL构造请求列表和根据用户给定的请求信息构造请求列表。
第一种根据URL构造请求列表,其流程图请参阅附图5,为本发明实施例公开的根据URL构造请求列表的流程图。
通常,扫描的URL请求都是在地址栏中输入的带参数的结构。针对这种情况,首先,分析欲验证的URL,调用URL参数分析子功能模块对该URL进行解析,从中提取出不带参数的URL以及URL后面跟随的所有参数列表,提取cookie信息,并存储到专门保存URL和参数的数据库中,这样,我们就准备好了基础请求信息。
特别的,针对Ajax的请求构造,首先读取URL载入的页面源代码,正则表达式匹配分析页面源码,从中找到javascript区块,分析该区块中是否含有“$”,“jQuery”,“.post”,“.get”,“.getJSON”,“.ajax”,“.load”,“ActiveXObject”,“Msxml2.XMLHTTP”,“window.XMLHttpRequest”,“Microsoft.XMLHTTP”,“XMLHttpRequest”,“Ext.Ajax.request”,“ajaxForm”等关键字、词,这些关键字、词可以通过系统的配置功能模块进行维护。其次,根据jQuery的Ajax方法特点,从url,data,type中提取请求的URL,参数列表,以及请求方式GET/POST等信息,把提取的信息标识为Ajax请求,存储到数据库中。在进行SQL注入扫描时,从数据库中读取前面存储的信息,并构造好请求的URL,系统将以Ajax技术发出Get,Post请求进行SQL注入扫描。
在真正发出请求前,还可以根据需要添加自定义的注入点信息,形成特有的请求信息,这样,自动化SQL注入工具无法检测的“死角”也可以进行准确检测。
第二种根据用户给定的请求信息构造请求列表,其流程图请参阅附图6,为本发明实施例公开的根据用户给定的请求信息构造请求列表的流程图。
在特定条件下,用户为了详细了解SQL注入漏洞,会采用类似“白盒测试”的方法进行验证,这样的用户群体通常是懂得前端html高端技术的人员。用户在了解到初步判断webApp存在SQL漏洞时,利用常用的SQL注入工具,从中获取到http request,把该request粘贴到本文所述的半自动化SQL注入软件中,执行数据处理功能,系统程序通过正则匹配从request文本中提取访问协议、URL、请求参数、请求cookie请求方法(get/post)以及http的头信息等,提取的这些信息将存储到指定的数据库中,若用户需要制定自定义注入点时,选中自定义注入点,进行自定义注入点定义设定(用户可根据实际情况需要定义多个自定义注入点),完成后,即生产请求,载入请求列表。
对于发生请求来说,在完成请求构造后,用户可根据需要触发任何一个或多个请求,请参阅附图7,为本发明实施例公开的发生请求的流程图。具体为,从数据库中读取给定URL中提取的请求列表,分别以URL,注入点列表分块展现给用户,在请求列表区块中,用户还可添加自定义注入点,确定请求方式,请求协议,用javascript语言把cookie信息载入到页面中,根据数据库中载入的信息和用户定义的请求信息构建一个Ajax请求,并向服务器发出该请求。
对于扫描过程来说,请参阅附图8,为本发明实施例公开的SQL注入扫描的过程图。具体的,由图8所示可得出,在SQL注入client发出URL请求后,系统根据系统配置,载入欲扫描的数据库配置,构建符合相应数据库的SQL语法,载入绕过技术配置,根据配置项,给每一个配置项分配一个线程,在线程执行前,系统根据当前绕过技术要求,对请求的注入点逐个进行绕过技术处理;在该线程里,系统从规则池中取得规则池中设定的规则,按照排列组合的方式赋予该线程中各注入点,给排列组合的各种情况下的请求数据分别创建新的线程,并启动新创建的这个线程,线程启动后,具体的扫描工作还是由扫描管理器来做,日志管理器将配合扫描管理器共同完成扫描过程的事情。
具体的,详细的扫描过程是由SQL注入扫描系统的server端完成的,server端通过httpclient构建通向被检测的webapp请求,httpclient可获取发向被检测的web应用的请求的返回状态,请求返回结果等信息,系统将对该返回信息和结果进行分析,从中提取需要的信息。
根据上述所述的本发明,得到如何判断SQL是否存在,为了本发明的理解,下面以HTTP://xxx.xxx.xxx/abc.asp?p=YY为例进行分析,YY可能是整型,也有可能是字符串。
第一,对整体参数的判断,请参阅附图9,为本发明实施例中对整体参数判断的流程图。如图9所示,当输入的参数YY为整型时,通常abc.asp中SQL语句原貌大致如下:
select*from表名where字段=YY,所以可以用以下步骤测试SQL注入是否存在。
1、HTTP://xxx.xxx.xxx/abc.asp?p=YY’(附加一个单引号),此时abc.ASP中的SQL语句变成了select*from表名where字段=YY’,abc.asp运行异常;
2、HTTP://xxx.xxx.xxx/abc.asp?p=YY and1=1,abc.asp运行正常,而且与HTTP://www.myhack58.com/abc.asp?p=YY运行结果相同;
3、HTTP://xxx.xxx.xxx/abc.asp?p=YY and1=2,abc.asp运行异常;
如果以上三步全面满足,abc.asp中一定存在SQL注入漏洞。
第二、对字符串型参数的判断,请参阅附图10,为本发明实施例中对字符串型参数判断的流程图。如图10所示,当输入的参数YY为字符串时,通常abc.asp中SQL语句原貌大致如下:
select*from表名where字段='YY',所以可以用以下步骤测试SQL注入是否存在。
1、HTTP://xxx.xxx.xxx/abc.asp?p=YY’(附加一个单引号),此时abc.ASP中的SQL语句变成了select*from表名where字段=YY’,abc.asp运行异常;
2、HTTP://xxx.xxx.xxx/abc.asp?p=YY'and'1'='1',abc.asp运行正常,而且与HTTP://xxx.xxx.xxx/abc.asp?p=YY运行结果相同;
3、HTTP://xxx.xxx.xxx/abc.asp?p=YY'and'1'='2',abc.asp运行异常;
如果以上三步全面满足,abc.asp中一定存在SQL注入漏洞。
第三,对特殊情况的处理,有的程序代码中会过滤掉单引号等字符,以防止SQL注入,这时就使用绕过技术进行处理。
1、大小定混合法:由于VBS并不区分大小写,而程序员在过滤时通常要么全部过滤大写字符串,要么全部过滤小写字符串,而大小写混合往往会被忽视。如用SelecT代替select,SELECT等;
2、UNICODE法:在IIS中,以UNICODE字符集实现国际化,我们完全可以IE中输入的字符串化成UNICODE字符串进行输入。如+=%2B,空格=%20等;
3、ASCII码法:可以把输入的部分或全部字符全部。
一般来说,SQL注入一般存在于形如:HTTP://xxx.xxx.xxx/abc.asp?id=XX等带有参数的ASP动态网页中,有时一个动态网页中可能只有一个参数,有时可能有N个参数,有时是整型参数,有时是字符串型参数,不能一概而论。总之只要是带有参数的动态网页且此网页访问了数据库,那么就有可能存在SQL注入。如果ASP程序员没有安全意识,不进行必要的字符过滤,存在SQL注入的可能性就非常大。
总的来说,根据上述框架对SQL漏洞进行扫描,第一步,先判断WebApp系统存在SQL注入漏洞;第二步,扫描webapp使用的数据库schema;第三步,确定该schema下表数据信息;第四步,确定每个表下各自的fields;最后确定每个表下指定field的数据。具体的,请参阅附图11,为本发明实施例公开的整体框架对SQL注入漏洞扫描流程图。
根据上述的步骤,详细的,获取存在SQL注入漏洞的WebApp的数据库中信息的方法如下:
1、从返回的页面内容中抽取schema,具体的,请参阅附图12,为本发明实施例中从返回的页面内容中抽取schema的流程图。
首先,以正常的请求方式发出请求,获取请求结果,并记录该请求结果信息;同时发起另一新线程加上UNION内容发起请求,获取请求结果和请求返回的内容进行二分法对比,从中提取差值,该差值即为schema信息,由于返回信息因用户组织展现形式不同,因此,需要对该差值进行处理,处理后的内容即为schema。
2、从返回的页面内容中抽取tables,具体的,请参阅附图13,为本发明实施例中从返回的页面内容中抽取tables的流程图。
3、从返回的页面内容中抽取fields,具体的,请参阅附图14,为本发明实施例中从返回的页面内容中抽取fields的流程图。
4、从返回的页面内容中抽取datas,具体的,请参阅附图15,为本发明实施例中从返回的页面内容中抽取datas的流程图。
对于获得报告来说,请参阅附图16,为本发明实施例公开的SQL注入扫描获得报告的流程图。具体的,由图16所示可得出,从数据库中读取记录的日志信息,组合汇总成为SQL注入扫描报告,并以报告配置项中的配置方式向指定人发送SQL注入扫描汇总报告。
本发明公开了一种SQL注入漏洞测试与验证方法,基于JavaEE的WebApp框架,该方法通过用户输入URL,系统对URL进行解析,自动从中提取参数和注入点,然后用户根据自身需要,选择注入点或自定义注入点加入请求中,并选择请求模式、请求协议和数据库服务器,系统从数据库中载入绕过技术配置、规则池中静态规则和动态规则数据,经过预处理后,由多线程管理器分配线程,交由扫描管理器进行SQL注入扫描,实现在保证自动化程度的前提下,降低漏报率。
另外,本发明基于实际交互的HTTP报文,可自动识别报文中所有可能存在的注入点,也可自定义注入点,实现半自动化漏洞检测,可实现检测任何区域的SQL注入漏洞,进一步的降低漏报率。
请参阅附图17,为本发明实施例公开的一种SQL注入漏洞测试与验证系统的结构示意图。在上述本发明公开的实施例的基础上,本发明还公开了一种SQL注入漏洞测试与验证系统,基于JavaEE的WebApp框架,该系统结构具体包括:接收单元1701,用于接收SQL注入管理员发送的SQL注入扫描指令,所述SQL注入扫描指令为URL或请求信息;扫描单元1702,用于对指定Web应用服务器的Web应用进行SQL注入扫描;记录单元1703,用于根据所述SQL注入扫描指令创建新的线程,并记录用户信息和所述SQL注入管理员的请求信息到数据库服务器中;解析提取单元1704,用于对所述URL进行解析或根据已知的HTTP request,提取参数和注入点,根据所述SQL注入管理员的需求,选择请求模式、请求协议及对应数据库服务器;载入单元1705,用于载入绕过技术配置、规则池中的静态规则和动态规则数据;预处理单元1706,用于对所述静态规则和动态规则数据进行预处理,并进行线程分配,由扫描管理器进行SQL注入扫描,得到扫描结果;记录管理单元1707,用于将所述扫描结果记录,并管理和记录在扫描过程中全程扫描情况。
优选的,还系统还包括:显示单元1708,用于根据配置好的通知方式,将所述扫描结果和所述全程扫描情况由JMS与短信服务管理器发送email或短信进行显示。
其中,上述所述记录单元1703具体包括:
建立关系表单元,用于建立所述线程的ID与宿主用户的对应关系得到对应表;
执行单元,用于当所述宿主用户发出暂停或终止命令时,根据所述对应表中记录的所述对应关系得到对应的线程,执行所述线程暂停或终止命令。
其中,上述所述解析提取单元1704具体包括:
分析单元,用于分析预验证的所述URL,调用URL参数分析子功能模块对所述URL进行解析;
提取单元,用于提取所述URL中不带参数的URL以及URL后面跟随的所有参数列表,并提取所述URL中的cookie信息;
存储单元,用于将所述不带参数的URL、所述参数列表以及所述cookie信息存储至专用存储数据库服务器中。
其中,上述所述显示单元1708包括:
读取汇总单元,用于从所述数据库服务器中读取当前线程的所述扫描结果,将所述扫描结果组合汇总成SQL注入汇总报告文件;
判断单元,用于从所述汇总报告文件配置项中判断是否有汇报配置信息;
确定单元,用于确定配置形式,所述配置形式为短信方式或邮件方式;
短信显示单元,用于若配置形式为短信方式,则以短信方式发生简要通知发送至用户界面显示;
邮件显示单元,用于若配置形式为邮件方式,则以邮件方式发生汇总报告发送至用户界面显示。
综上所述:本发明公开了一种SQL注入漏洞测试与验证方法及系统,基于JavaEE的WebApp框架,该方法通过用户输入URL,系统对URL进行解析或根据已知的HTTP request,自动从中提取参数和注入点,然后用户根据自身需要,选择注入点或自定义注入点加入请求中,并选择请求模式、请求协议和数据库服务器,系统从数据库中载入绕过技术配置、规则池中静态规则和动态规则数据,经过预处理后,由多线程管理器分配线程,交由扫描管理器进行SQL注入扫描,实现在保证自动化程度的前提下,降低漏报率。
另外,本发明基于实际交互的HTTP报文,可自动识别报文中所有可能存在的注入点,也可自定义注入点,实现半自动化漏洞检测,可实现检测任何区域的SQL注入漏洞,进一步的降低漏报率。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种SQL注入漏洞测试与验证方法,其特征在于,基于JavaEE的WebApp框架,该方法包括:
S1、接收SQL注入管理员发送的SQL注入扫描指令,所述SQL注入扫描指令为URL或请求信息;
S2、对指定Web应用服务器的Web应用进行SQL注入扫描;
S3、根据所述SQL注入扫描指令创建新的线程,并记录用户信息和所述SQL注入管理员的请求信息到数据库服务器中;
S4、对所述URL进行解析或根据已知的HTTP request,提取参数和注入点,根据所述SQL注入管理员的需求,选择请求模式、请求协议及对应数据库服务器;
S5、载入绕过技术配置、规则池中的静态规则和动态规则数据;
S6、对所述静态规则和动态规则数据进行预处理,并进行线程分配,由扫描管理器进行SQL注入扫描,得到扫描结果;
S7、将所述扫描结果记录,并管理和记录在扫描过程中全程扫描情况。
2.根据权利要求1所述的方法,其特征在于,还包括:
S8、根据配置好的通知方式,将所述扫描结果和所述全程扫描情况由JMS与短信服务管理器发送email或短信进行显示。
3.根据权利要求1所述的方法,其特征在于,所述步骤S3具体包括:
S31、建立所述线程的ID与宿主用户的对应关系得到对应表;
S32、当所述宿主用户发出暂停或终止命令时,根据所述对应表中记录的所述对应关系得到对应的线程,执行所述线程暂停或终止命令。
4.根据权利要求1所述的方法,其特征在于,所述步骤S4具体包括:
S41、分析预验证的所述URL,调用URL参数分析子功能模块对所述URL进行解析;
S42、提取所述URL中不带参数的URL以及URL后面跟随的所有参数列表,并提取所述URL中的cookie信息;
S43、将所述不带参数的URL、所述参数列表以及所述cookie信息存储至专用存储数据库服务器中。
5.根据权利要求2所述的方法,其特征在于,所述步骤S8具体包括:
S81、从所述数据库服务器中读取当前线程的所述扫描结果,将所述扫描结果组合汇总成SQL注入汇总报告文件;
S82、从所述汇总报告文件配置项中判断是否有汇报配置信息,如果无所述汇报配置信息,则结束所述线程;
S83、如果有所述汇报配置信息,则确定配置形式,所述配置形式为短信方式或邮件方式;
S84、若配置形式为短信方式,则以短信方式发生简要通知发送至用户界面显示;
S85、若配置形式为邮件方式,则以邮件方式发生汇总报告发送至用户界面显示。
6.一种SQL注入漏洞测试与验证系统,其特征在于,基于JavaEE的WebApp框架,该系统包括:
接收单元,用于接收SQL注入管理员发送的SQL注入扫描指令,所述SQL注入扫描指令为URL或请求信息;
扫描单元,用于对指定Web应用服务器的Web应用进行SQL注入扫描;
记录单元,用于根据所述SQL注入扫描指令创建新的线程,并记录用户信息和所述SQL注入管理员的请求信息到数据库服务器中;
解析提取单元,用于对所述URL进行解析或根据已知的HTTP request,提取参数和注入点,根据所述SQL注入管理员的需求,选择请求模式、请求协议及对应数据库服务器;
载入单元,用于载入绕过技术配置、规则池中的静态规则和动态规则数据;
预处理单元,用于对所述静态规则和动态规则数据进行预处理,并进行线程分配,由扫描管理器进行SQL注入扫描,得到扫描结果;
记录管理单元,用于将所述扫描结果记录,并管理和记录在扫描过程中全程扫描情况。
7.根据权利要求6所述的系统,其特征在于,还包括:
显示单元,用于根据配置好的通知方式,将所述扫描结果和所述全程扫描情况由JMS与短信服务管理器发送email或短信进行显示。
8.根据权利要求6所述的系统,其特征在于,所述记录单元包括:
建立关系表单元,用于建立所述线程的ID与宿主用户的对应关系得到对应表;
执行单元,用于当所述宿主用户发出暂停或终止命令时,根据所述对应表中记录的所述对应关系得到对应的线程,执行所述线程暂停或终止命令。
9.根据权利要求6所述的系统,其特征在于,所述解析提取单元包括:
分析单元,用于分析预验证的所述URL,调用URL参数分析子功能模块对所述URL进行解析;
提取单元,用于提取所述URL中不带参数的URL以及URL后面跟随的所有参数列表,并提取所述URL中的cookie信息;
存储单元,用于将所述不带参数的URL、所述参数列表以及所述cookie信息存储至专用存储数据库服务器中。
10.根据权利要求7所述的系统,其特征在于,所述显示单元包括:
读取汇总单元,用于从所述数据库服务器中读取当前线程的所述扫描结果,将所述扫描结果组合汇总成SQL注入汇总报告文件;
判断单元,用于从所述汇总报告文件配置项中判断是否有汇报配置信息;
确定单元,用于确定配置形式,所述配置形式为短信方式或邮件方式;
短信显示单元,用于若配置形式为短信方式,则以短信方式发生简要通知发送至用户界面显示;
邮件显示单元,用于若配置形式为邮件方式,则以邮件方式发生汇总报告发送至用户界面显示。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310439957.1A CN103530564B (zh) | 2013-09-24 | 2013-09-24 | 一种sql注入漏洞测试与验证方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310439957.1A CN103530564B (zh) | 2013-09-24 | 2013-09-24 | 一种sql注入漏洞测试与验证方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103530564A true CN103530564A (zh) | 2014-01-22 |
CN103530564B CN103530564B (zh) | 2016-04-13 |
Family
ID=49932566
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310439957.1A Active CN103530564B (zh) | 2013-09-24 | 2013-09-24 | 一种sql注入漏洞测试与验证方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103530564B (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104320312A (zh) * | 2014-11-20 | 2015-01-28 | 国家电网公司 | 网络应用安全测试工具及模糊测试用例生成方法和系统 |
CN107154930A (zh) * | 2017-03-31 | 2017-09-12 | 武汉斗鱼网络科技有限公司 | 一种测试漏洞的方法和系统 |
CN107704758A (zh) * | 2017-08-25 | 2018-02-16 | 郑州云海信息技术有限公司 | 一种sql注入漏洞检测方法和检测装置 |
CN108632263A (zh) * | 2018-04-25 | 2018-10-09 | 杭州闪捷信息科技股份有限公司 | 一种sql注入点的检测方法 |
CN108733720A (zh) * | 2017-04-24 | 2018-11-02 | 北京京东尚科信息技术有限公司 | 多数据库类型的sql查询的在线校验方法和校验系统 |
CN109255240A (zh) * | 2018-07-18 | 2019-01-22 | 北京明朝万达科技股份有限公司 | 一种漏洞处理方法和装置 |
CN110768951A (zh) * | 2019-08-14 | 2020-02-07 | 奇安信科技集团股份有限公司 | 验证系统漏洞的方法及装置、存储介质、电子装置 |
CN110874475A (zh) * | 2018-08-30 | 2020-03-10 | 重庆小雨点小额贷款有限公司 | 漏洞挖掘方法、漏洞挖掘平台及计算机可读存储介质 |
CN110958221A (zh) * | 2019-10-25 | 2020-04-03 | 杭州数梦工场科技有限公司 | 动态检测xml外部实体注入漏洞的方法及装置 |
CN111770079A (zh) * | 2020-06-24 | 2020-10-13 | 绿盟科技集团股份有限公司 | 一种web框架注入漏洞检测方法及装置 |
CN111831527A (zh) * | 2020-07-16 | 2020-10-27 | 中国建设银行股份有限公司 | 扫描数据库性能问题的方法、装置、电子设备、及介质 |
CN114143075A (zh) * | 2021-11-29 | 2022-03-04 | 国网北京市电力公司 | 安全漏洞预警方法、其装置及电子设备 |
CN114500033A (zh) * | 2022-01-24 | 2022-05-13 | 北京华云安信息技术有限公司 | 一种验证应用服务器的方法、装置、计算机设备和介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101312393A (zh) * | 2007-05-24 | 2008-11-26 | 北京启明星辰信息技术有限公司 | 一种sql注入漏洞检测方法及系统 |
KR20100066841A (ko) * | 2008-12-10 | 2010-06-18 | 한국인터넷진흥원 | 웹 어플리케이션 상에서 보안 솔루션을 제공하는 시스템 및그 방법 |
CN102045319A (zh) * | 2009-10-21 | 2011-05-04 | 中国移动通信集团山东有限公司 | Sql注入攻击检测方法及其装置 |
US20110283359A1 (en) * | 2010-04-01 | 2011-11-17 | Matthew Browning Prince | Validating Visitor Internet-Based Security Threats |
US20120117644A1 (en) * | 2010-11-04 | 2012-05-10 | Ridgeway Internet Security, Llc | System and Method for Internet Security |
CN102799830A (zh) * | 2012-08-06 | 2012-11-28 | 厦门市美亚柏科信息股份有限公司 | 一种改进的sql注入漏洞检测方法 |
-
2013
- 2013-09-24 CN CN201310439957.1A patent/CN103530564B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101312393A (zh) * | 2007-05-24 | 2008-11-26 | 北京启明星辰信息技术有限公司 | 一种sql注入漏洞检测方法及系统 |
KR20100066841A (ko) * | 2008-12-10 | 2010-06-18 | 한국인터넷진흥원 | 웹 어플리케이션 상에서 보안 솔루션을 제공하는 시스템 및그 방법 |
CN102045319A (zh) * | 2009-10-21 | 2011-05-04 | 中国移动通信集团山东有限公司 | Sql注入攻击检测方法及其装置 |
US20110283359A1 (en) * | 2010-04-01 | 2011-11-17 | Matthew Browning Prince | Validating Visitor Internet-Based Security Threats |
US20120117644A1 (en) * | 2010-11-04 | 2012-05-10 | Ridgeway Internet Security, Llc | System and Method for Internet Security |
CN102799830A (zh) * | 2012-08-06 | 2012-11-28 | 厦门市美亚柏科信息股份有限公司 | 一种改进的sql注入漏洞检测方法 |
Non-Patent Citations (2)
Title |
---|
吴贵山: "SQL注入攻击防御策略的研究", 《计算机与网络创新生活》 * |
马小婷等: "SQL注入漏洞检测与防御技术研究", 《计算机安全》 * |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104320312A (zh) * | 2014-11-20 | 2015-01-28 | 国家电网公司 | 网络应用安全测试工具及模糊测试用例生成方法和系统 |
CN104320312B (zh) * | 2014-11-20 | 2018-01-02 | 国家电网公司 | 网络应用安全测试工具及模糊测试用例生成方法和系统 |
CN107154930A (zh) * | 2017-03-31 | 2017-09-12 | 武汉斗鱼网络科技有限公司 | 一种测试漏洞的方法和系统 |
CN108733720A (zh) * | 2017-04-24 | 2018-11-02 | 北京京东尚科信息技术有限公司 | 多数据库类型的sql查询的在线校验方法和校验系统 |
CN107704758A (zh) * | 2017-08-25 | 2018-02-16 | 郑州云海信息技术有限公司 | 一种sql注入漏洞检测方法和检测装置 |
CN108632263A (zh) * | 2018-04-25 | 2018-10-09 | 杭州闪捷信息科技股份有限公司 | 一种sql注入点的检测方法 |
CN109255240A (zh) * | 2018-07-18 | 2019-01-22 | 北京明朝万达科技股份有限公司 | 一种漏洞处理方法和装置 |
CN110874475A (zh) * | 2018-08-30 | 2020-03-10 | 重庆小雨点小额贷款有限公司 | 漏洞挖掘方法、漏洞挖掘平台及计算机可读存储介质 |
CN110768951A (zh) * | 2019-08-14 | 2020-02-07 | 奇安信科技集团股份有限公司 | 验证系统漏洞的方法及装置、存储介质、电子装置 |
CN110768951B (zh) * | 2019-08-14 | 2022-07-05 | 奇安信科技集团股份有限公司 | 验证系统漏洞的方法及装置、存储介质、电子装置 |
CN110958221A (zh) * | 2019-10-25 | 2020-04-03 | 杭州数梦工场科技有限公司 | 动态检测xml外部实体注入漏洞的方法及装置 |
CN110958221B (zh) * | 2019-10-25 | 2021-12-28 | 杭州数梦工场科技有限公司 | 动态检测xml外部实体注入漏洞的方法及装置 |
CN111770079A (zh) * | 2020-06-24 | 2020-10-13 | 绿盟科技集团股份有限公司 | 一种web框架注入漏洞检测方法及装置 |
CN111770079B (zh) * | 2020-06-24 | 2022-09-02 | 绿盟科技集团股份有限公司 | 一种web框架注入漏洞检测方法及装置 |
CN111831527A (zh) * | 2020-07-16 | 2020-10-27 | 中国建设银行股份有限公司 | 扫描数据库性能问题的方法、装置、电子设备、及介质 |
CN114143075A (zh) * | 2021-11-29 | 2022-03-04 | 国网北京市电力公司 | 安全漏洞预警方法、其装置及电子设备 |
CN114500033A (zh) * | 2022-01-24 | 2022-05-13 | 北京华云安信息技术有限公司 | 一种验证应用服务器的方法、装置、计算机设备和介质 |
CN114500033B (zh) * | 2022-01-24 | 2023-12-05 | 北京华云安信息技术有限公司 | 一种验证应用服务器的方法、装置、计算机设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
CN103530564B (zh) | 2016-04-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103530564B (zh) | 一种sql注入漏洞测试与验证方法及系统 | |
Antunes et al. | Effective detection of SQL/XPath injection vulnerabilities in web services | |
Livshits et al. | Finding Security Vulnerabilities in Java Applications with Static Analysis. | |
US9047346B2 (en) | Reporting language filtering and mapping to dimensional concepts | |
Vieira et al. | Using web security scanners to detect vulnerabilities in web services | |
US8856157B2 (en) | Automatic detection of columns to be obfuscated in database schemas | |
US20190026261A1 (en) | Methods and systems for validating multiple methods of input using a unified rule set | |
CA2684822C (en) | Data transformation based on a technical design document | |
CN102831345A (zh) | Sql注入漏洞检测中的注入点提取方法 | |
Ghafarian | A hybrid method for detection and prevention of SQL injection attacks | |
US20070156644A1 (en) | SQL injection detector | |
US20070239471A1 (en) | Systems and methods for specifying security for business objects using a domain specific language | |
US20120278708A1 (en) | Verifying configurations | |
US20170052863A1 (en) | Compliance testing through sandbox environments | |
AU2016100635A4 (en) | Software creation system | |
CN109460663A (zh) | 一种智能合约审计方法、装置及其存储介质 | |
CN103617390A (zh) | 一种恶意网页判断方法、装置和系统 | |
Walsh et al. | Automatically identifying potential regressions in the layout of responsive web pages | |
US20180121270A1 (en) | Detecting malformed application screens | |
CN106845248A (zh) | 一种基于状态转换图的xss漏洞检测方法 | |
US9996216B2 (en) | Smart display data capturing platform for record systems | |
Qu | Research on password detection technology of iot equipment based on wide area network | |
US8607201B2 (en) | Augmenting visualization of a call stack | |
US20170131856A1 (en) | System and Method for a Hybrid User Interface for the Display of Analytical Data Related to Real-time Search Engine Optimization Issue Detection and Correction | |
Mahapatra et al. | A survey of sq1 injection countermeasures |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |