一种针对cookie方式的sql注入漏洞检测方法

文档序号:8002866阅读:276来源:国知局
一种针对cookie方式的sql注入漏洞检测方法
【专利摘要】本发明提供一种针对COOKIE方式的SQL注入漏洞检测方法,包括以下步骤:形成用户COOKIE值的初始SQL注入判断语句;截取并修改用户提交的COOKIE值;通过修改用户COOKIE值生成最终SQL注入判断语句;页面获取最终SQL注入判断语句;返回执行SQL注入判断语句页面。本发明主要用于解决防SQL注入,对SQL注入防护不彻底的问题。通过提交COOKIE值形成的SQL注入判断语句,查看程序对COOKIE值的接受情况,通过页面返回数据对比,最终检测出程序COOKIE值的SQL注入问题。
【专利说明】—种针对COOKIE方式的SQL注入漏洞检测方法
【技术领域】
[0001]本发明属于网络安全检测【技术领域】,具体涉及一种针对COOKIE方式的SQL注入漏洞检测方法。
【背景技术】
[0002]近年来,SQL注入式攻击一直如幽灵般困扰着众多企业,成为令企业毛骨悚然的梦魇。每年都有大规模SQL注入式攻击袭掠大量的网站,连苹果公司的网站也未能幸免。这种猖獗的攻击向业界招示其日渐流行的趋势,黑客们也越来越喜欢这种可以渗透进入企业的基础架构和数据库资源的攻击方式。
[0003]随着B/S模式应用开发的发展,使用这种模式编写程序的程序员越来越来越多,但是由于程序员的水平参差不齐相当大一部分应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想要知的数据,这个就是所谓的SQLinjection0
[0004]COOKIE方式下的SQL注入与传统SQL注入相比,更难以被发现,普通简单的检测手段无法查出C00KIE方式下的SQL注入漏洞,很多管理员为了简单快速防止SQL注入,都会使用通用防SQL注入程序,由于很多通用防SQL注入程序对用户提交的POST和GET方式数据进行过滤,但缺少C00KIE数据层的防护,程序员在编写代码时,变量定义不严格,导致程序会接受C00KIE值,C00KIE值可以在本机进行修改,黑客通过在本机构造C00KIE值进行SQL注入。为此,本专利提出一种针对C00KIE方式的SQL注入漏洞检测技术,通过截获C00KIE值,通过程序对页面数据的差异,来判断SQL注入是否存在,防SQL注入程序是否彻底防止SQL注入,解决了 C00KIE方式下的SQL注入问题。
[0005]在WEB应用常见的脚本语言中,如ASP.NET,PHP或JSP中,一个典型的显示新闻页面的SQL语句可以写成:
[0006]id=request("id")
[0007]strSQL="select*from news where ID="&id
[0008]通常我们通过获取用户提交的变量$id,将其提交给数据库并查看返回的strSQL值,从而显示出正确的新闻。这条查询SQL语句在正常情况下可以显示新闻内容,但当攻击者输入一些精心构造的语句时,我们提交给数据库的SQL语句执行结果就会发现改变。如攻击者输入
[0009]$id为:“landl=l”和“landl=2”。此时整条查询语句变成了:
[0010]strSQLl = “select*from news where ID=Iandl=I
[0011]strSQL2 = “select*from news where ID=landl=2”
[0012]这两条SQL语句由于条件的不同,页面返回的内容也不同。如果攻击者继续构造其它SQL语句,可查询出数据库管理员表信息,SQL注入漏洞的最大危害,攻击者可以任意构造SQL语句查询数据库内容,可对数据库进行查询,增加,修改,删除等操作。然而SQL注入漏洞在理论上存在于所有应用程序与数据库交互之处,一个中等规模的应用系统可能有上百处交互,由于SQL语句是由用户输入与程序提供的原始语句拼合而成,对于用户的输入,分析防范非常困难。
[0013]目前,对SQL注入攻击的防御方式主要有以下几种:
[0014]1.手工添加参数过滤语句,对用户输入进行严格过滤。
[0015]2.制定一个关键词集合,对于所有的用户输入均与该集合中的每一个关键词匹配,如果用户的输入中存在关键字,则判定为非法输入。
[0016]3.使用通用防SQL注入程序,针对ASP、PHP、JSP等不同脚本都有相应的防SQL注入程序。但部分通用防SQL注入程序不能完全防止SQL注入漏洞。

【发明内容】

[0017]为了克服上述现有技术的不足,本发明提供一种针对COOKIE方式的SQL注入漏洞检测方法,主要用于解决防SQL注入,对SQL注入防护不彻底的问题。通过提交COOKIE值形成的SQL注入判断语句,查看程序对COOKIE值的接受情况,通过页面返回数据对比,最终检测出程序C00KIE值的SQL注入问题。
[0018]为了实现上述发明目的,本发明采取如下技术方案:
[0019]提供一种针对C00KIE方式的SQL注入漏洞检测方法,所述方法包括以下步骤:
[0020]步骤1:形成用户C00KIE值的初始SQL注入判断语句;
[0021]步骤2:截取并修改用户提交的C00KIE值;
[0022]步骤3:通过修改用户C00KIE值生成最终SQL注入判断语句;
[0023]步骤4:页面获取最终SQL注入判断语句;
[0024]步骤5:返回执行SQL注入判断语句页面。
[0025]所述步骤I中,使用javascript:alert方式提交对某变量的判断值,形成初始SQL注入判断语句,通过C00KIE编码对语句进行修改,最终以javascript:alert方式配合C00KIE编码下的escape函数提交C00KIE值。
[0026]所述步骤2包括以下步骤:
[0027]步骤2-1:对用户提交的C00KIE值进行查看并修改,使C00KIE值的格式和语法正确,最终在C00KIE值中形成验证某变量的初始SQL注入判断语句;
[0028]步骤2-2:通过 javascript:alert O 函数提交 C00KIE 值,使用 document, cookie方法,配合escape函数对C00KIE值据进行编码处理;并对javascript:alert O函数document, cookie方法提交的数据进行截取,对截取的数据进行验证,如果数据正确,再进行提交处理。
[0029]所述步骤3中,截取新闻页面的访问数据,查看生成的最终SQL注入判断语句,查看变量是否接受了用户的C00KIE值;通过访问未带参数的新闻页面,查看新闻页面数据值,判断新闻页面是否接受了提交的C00KIE值。
[0030]所述步骤4中,新闻页面变量通过C00KIE值获取最终SQL注入判断语句,通过对未带参数的新闻页面进行访问,通过访问结果查看C00KIE值中的SQL注入判断语句是否进入了新闻页面。
[0031]所述步骤5中,访问过滤掉参数的新闻页面,提交SQLl和SQL2后,访问无参数的新闻页面,两个新闻页面返回的数据进行对比,若两个新闻页面数据有差异,则表明存在COOKIE方式的SQLL注入漏洞,若两个新闻页面数据相同,则表明不存在COOKIE方式的SQL注入漏洞。
[0032]与现有技术相比,本发明的有益效果在于:本发明提供的针对COOKIE方式的SQL注入漏洞检测方法,主要用于解决防SQL注入,对SQL注入防护不彻底的问题。通过提交COOKIE值形成的SQL注入判断语句,查看程序对COOKIE值的接受情况,通过页面返回数据对比,最终检测出程序COOKIE值的SQL注入问题。
【专利附图】

【附图说明】
[0033]图1是针对COOKIE方式的SQL注入漏洞检测方法流程图;
[0034]图2是用户提交C00KIE值截取到的SQL注入判断语句流程图。
【具体实施方式】
[0035]下面结合附图对本发明作进一步详细说明。
[0036]如图1和图2,提供一种针对C00KIE方式的SQL注入漏洞检测方法,所述方法包括以下步骤:
[0037]步骤1:形成用户C00KIE值的初始SQL注入判断语句;
[0038]步骤2:截取并修改用户提交的C00KIE值;
[0039]步骤3:通过修改用户C00KIE值生成最终SQL注入判断语句;
[0040]步骤4:页面获取最终SQL注入判断语句;
[0041]步骤5:返回执行SQL注入判断语句页面。
[0042]步骤I包括以下步骤:
[0043](I)、使用C00KIE方式编码生成SQL注入判断语句
[0044](2)、使用变量替换SQL语句
[0045]Ql=javascript: alert、Q2=document.cookie、Q3= “ ID=,,;
[0046]Q4= “escape”、Q5="landl=l"、Q6="landl=2";
[0047]SQL1=Q1+Q2+Q4+Q5、SQL2=Q1+Q2+Q4+Q6
[0048]步骤2包括以下步骤:
[0049]步骤2-1:对用户提交的C00KIE值进行查看并修改,使C00KIE值的格式和语法正确,最终在C00KIE值中形成验证某变量的初始SQL注入判断语句;
[0050]步骤2-2:通过 javascript:alert O 函数提交 C00KIE 值,使用 document, cookie方法,配合escape函数对C00KIE值据进行编码处理;并对javascript:alert O函数document, cookie方法提交的数据进行截取,对截取的数据进行验证,如果数据正确,再进行提交处理。
[0051]对用户提交的C00KIE进行查看,格式和语法要正确,最终在数据中形成验证某变量的SQL注入判断语句。
[0052](I)SQLl=javascript:alert(document.cookie="ID="+escape("Iandl=I"))
[0053](2)SQL2=javascript:alert(document.cookie="ID="+escape("landl=2"))
[0054]步骤3中,截取新闻页面的访问数据,查看生成的最终SQL注入判断语句,查看变量是否接受了用户的C00KIE值;通过访问未带参数的新闻页面,查看新闻页面数据值,判断新闻页面是否接受了提交的COOKIE值。
[0055](I) strSQLl = “SQL”+SQLl
[0056](2) strSQL2 = “SQL” +SQL2
[0057]所述步骤4中,新闻页面变量通过COOKIE值获取最终SQL注入判断语句,通过对未带参数的新闻页面进行访问,通过访问结果查看COOKIE值中的SQL注入判断语句是否进入了新闻页面。
[0058](I)strSQLl = “select*from news where ID=Iandl=I”
[0059](2)strSQL2 = “select*from news where ID=landl=2”
[0060]所述步骤5中,访问过滤掉参数的新闻页面,提交SQLl和SQL2后,访问无参数的新闻页面,两个新闻页面返回的数据进行对比,若两个新闻页面数据有差异,则表明存在C00KIE方式的SQLL注入漏洞,若两个新闻页面数据相同,则表明不存在C00KIE方式的SQL注入漏洞。
[0061]最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的【具体实施方式】进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求范围当中。
【权利要求】
1.一种针对COOKIE方式的SQL注入漏洞检测方法,其特征在于:所述方法包括以下步骤: 步骤1:形成用户COOKIE值的初始SQL注入判断语句; 步骤2:截取并修改用户提交的COOKIE值; 步骤3:通过修改用户COOKIE值生成最终SQL注入判断语句; 步骤4:页面获取最终SQL注入判断语句; 步骤5:返回执行SQL注入判断语句页面。
2.根据权利要求1所述的针对COOKIE方式的SQL注入漏洞检测方法,其特征在于:所述步骤I中,使用javascript:alert方式提交对某变量的判断值,形成初始SQL注入判断语句,通过COOKIE编码对语句进行修改,最终以javascript:alert方式配合COOKIE编码下的escape函数提交COOKIE值。
3.根据权利要求1所述的针对COOKIE方式的SQL注入漏洞检测方法,其特征在于:所述步骤2包括以下步骤: 步骤2-1:对用户提交的COOKIE值进行查看并修改,使COOKIE值的格式和语法正确,最终在COOKIE值中形成验证某变量的初始SQL注入判断语句; 步骤 2-2:通过 javascript:alert O 函数提交 COOKIE 值,使用 document, cookie 方法,配合escape函数对COOKIE值据进行编码处理;并对javascript: alert ()函数document,cookie方法提交的数据进行截取,对截取的数据进行验证,如果数据正确,再进行提交处理。
4.根据权利要求1所述的针对COOKIE方式的SQL注入漏洞检测方法,其特征在于:所述步骤3中,截取新闻页面的访问数据,查看生成的最终SQL注入判断语句,查看变量是否接受了用户的COOKIE值;通过访问未带参数的新闻页面,查看新闻页面数据值,判断新闻页面是否接受了提交的COOKIE值。
5.根据权利要求1所述的针对COOKIE方式的SQL注入漏洞检测方法,其特征在于:所述步骤4中,新闻页面变量通过COOKIE值获取最终SQL注入判断语句,通过对未带参数的新闻页面进行访问,通过访问结果查看COOKIE值中的SQL注入判断语句是否进入了新闻页面。
6.根据权利要求1所述的针对COOKIE方式的SQL注入漏洞检测方法,其特征在于:所述步骤5中,访问过滤掉参数的新闻页面,提交SQLl和SQL2后,访问无参数的新闻页面,两个新闻页面返回的数据进行对比,若两个新闻页面数据有差异,则表明存在COOKIE方式的SQLL注入漏洞,若两个新闻页面数据相同,则表明不存在COOKIE方式的SQL注入漏洞。
【文档编号】H04L29/06GK103441985SQ201310317265
【公开日】2013年12月11日 申请日期:2013年7月25日 优先权日:2013年7月25日
【发明者】冯谷, 余勇, 张小键, 郭骞, 石聪聪, 鲍兴川, 高鹏, 蒋诚智, 俞庚申, 范杰, 曹宛恬, 李尼格 申请人:国家电网公司, 中国电力科学研究院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1