首页> 中国专利> 一种检测数据库是否遭到跨站脚本攻击的方法及装置

一种检测数据库是否遭到跨站脚本攻击的方法及装置

摘要

一种检测数据库是否遭到跨站脚本攻击的方法及装置;方法包括:捕获提交到数据库服务器的数据包,从中提取出SQL语句;如果提取出的SQL语句为包含修改数据库字段内容的语句,则判断所述包含修改数据库字段内容的语句中是否含有跨站脚本攻击行为,如果有则判定数据库被跨站脚本攻击。本发明能够检测出数据库所遭受的XSS攻击。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-05-14

    未缴年费专利权终止 IPC(主分类):G06F21/56 授权公告日:20130102 终止日期:20180527 申请日:20090527

    专利权的终止

  • 2013-01-02

    授权

    授权

  • 2011-01-12

    实质审查的生效 IPC(主分类):G06F21/00 申请日:20090527

    实质审查的生效

  • 2010-12-01

    公开

    公开

说明书

技术领域

本发明涉及网络安全技术领域,具体涉及一种检测数据库是否遭到跨站脚本攻击的方法及装置。

背景技术

XSS攻击又叫CSS(Cross Site Script),跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。XSS属于被动式的攻击,因为其被动且不好利用,所以许多人常忽略其危害性。

跨站攻击的方式:

一、本地利用漏洞,这种漏洞存在于页面中客户端脚本自身。

其攻击过程如下所示:

A给B发送一个恶意构造了Web的URL。

B点击并查看了这个URL。

恶意页面中的JavaScript打开一个具有漏洞的HTML页面并将其安装在B电脑上。

具有漏洞的HTML页面包含了在B电脑本地域执行的JavaScript。

A的恶意脚本可以在B的电脑上执行B所持有的权限下的命令。

二、反射式漏洞,这种漏洞和本地利用漏洞有些类似,不同的是Web客户端使用Server端脚本生成页面为用户提供数据时,如果未经验证的用户数据被包含在页面中而未经HTML实体编码,客户端代码便能够注入到动态页面中。

其攻击过程如下:

A经常浏览某个网站,此网站为B所拥有。B的站点运行A使用用户名/密码进行登录,并存储敏感信息(比如银行账户信息)。

C发现B的站点包含反射性的XSS漏洞。

C编写一个利用漏洞的URL,并将其冒充为来自B的邮件发送给A。

A在登录到B的站点后,浏览C提供的URL。

嵌入到URL中的恶意脚本在A的浏览器中执行,就像它直接来自B的服务器一样。此脚本盗窃敏感信息(授权、信用卡、帐号信息等)然后在A完全不知情的情况下将这些信息发送到C的Web站点。

三、存储式漏洞,该类型是应用最为广泛而且有可能影响到Web服务器自身安全的漏洞,骇客将攻击脚本上传到Web服务器上,使得所有访问该页面的用户都面临信息泄漏的可能,其中也包括了Web服务器的管理员。

其攻击过程如下:

B拥有一个Web站点,该站点允许用户发布信息/浏览已发布的信息。

C注意到B的站点具有存储式的XXS漏洞。

C发布一个热点信息,吸引其它用户纷纷阅读。

B或者是任何的其他人如A浏览该信息,其会话cookies或者其它信息将被C盗走。

类型A直接威胁用户个体,而类型B和存储式漏洞所威胁的对象都是企业级Web应用。

当前大多数的XSS检测只在HTTP协议层面上实现,无法在数据库底层进行XSS检测。

发明内容

本发明要解决的技术问题是提供一种检测数据库是否遭到跨站脚本攻击的方法及装置,能够检测出数据库所遭受的XSS攻击。

为了解决上述问题,本发明提供了一种检测数据库是否遭到跨站脚本攻击的方法,包括:

捕获提交到数据库服务器的数据包,从中提取出SQL语句;

如果提取出的SQL语句为包含修改数据库字段内容的语句,则判断所述包含修改数据库字段内容的语句中是否含有跨站脚本攻击行为,如果有则判定数据库被跨站脚本攻击。

进一步地,所述捕获提交到数据库服务器的数据包,从中提取出SQL语句的步骤具体包括:

a1、捕获所有提交到数据库服务器的以太包;

a2、依次进行以太层,IP层,TCP层或UDP层解析,得到应用层协议信息,进行应用层解析得到SQL语句;

a3、自动识别或根据设置确定SQL语句所采用的编码方式,对SQL语句进行解码。

进一步地,所述修改数据库字段内容的语句包括:

update语句和insert语句;

提取出的SQL语句为包含修改数据库字段内容的语句是指:从提取出的SQL语句中过滤出update和/或insert语句。

进一步地,判断所述包含修改数据库字段内容的语句中是否含有跨站脚本攻击行为是指:

判断所述包含修改数据库字段内容的语句中是否含有与跨站脚本攻击行为对应的标识,当所述包含修改数据库字段内容的语句中包含有与跨站脚本攻击行为对应的标识时,判定该语句中包含跨站脚本攻击行为;

或是指:

当在所述包含修改数据库字段内容的语句中检查到与跨站脚本攻击行为对应的标识时,根据该标识所对应的值,对该语句进行累加赋值,直到检查完整个语句;当该语句累加赋值的结果大于或等于预设的阈值时,判定该语句包含跨站脚本攻击行为。

进一步地,所述的方法还包括:

设置检测策略;所述检测策略用于指定需要检测的数据包;

捕获提交到数据库服务器的数据包后,如果该数据包与所述检测策略匹配,则从该数据包中提取SQL语句,否则丢弃该数据包。

在判断所述包含修改数据库字段内容的语句中是否含有跨站脚本攻击行为的步骤后还包括:

采用邮件或短信方式将判断结果实时通知数据库管理员。

本发明还提供了一种检测数据库是否遭到跨站脚本攻击的装置,包括:

提取单元,用于捕获提交到数据库服务器的数据包,并从中提取出SQL语句;

筛选单元,用于从提取出的SQL语句中筛选出包含修改数据库字段内容的语句;

判断单元,用于判断所筛选出的包含修改数据库字段内容的语句中是否含有跨站脚本攻击行为,如果有则判定数据库被跨站脚本攻击。

进一步地,所述提取单元具体包括:

捕获模块,用于捕获所有提交到数据库服务器的以太包;

解析模块,用于依次进行以太层,IP层,TCP层或UDP层解析,得到应用层协议信息,进行应用层解析得到SQL语句;

解码模块,用于自动识别或根据设置确定SQL语句所采用的编码方式,对SQL语句进行解码。

进一步地,所述筛选单元所筛选出的修改数据库字段内容的语句包括:

update语句和insert语句;

所述筛选单元从提取出的SQL语句中筛选出包含修改数据库字段内容的语句是指:

所述筛选单元从提取出的SQL语句中过滤出update和/或insert语句。

进一步地,所述判断单元判断包含修改数据库字段内容的语句中是否含有跨站脚本攻击行为是指:

所述判断单元判断所述包含修改数据库字段内容的语句中是否含有与跨站脚本攻击行为对应的标识,当所述包含修改数据库字段内容的语句中包含有与跨站脚本攻击行为对应的标识时,判定该语句中包含跨站脚本攻击行为;

或是指:

所述判断单元保存与跨站脚本攻击行为对应的各标识的值;当在所述包含修改数据库字段内容的语句中检查到与跨站脚本攻击行为对应的标识时,根据该标识所对应的值,对该语句进行累加赋值,直到检查完整个语句;当该语句累加赋值的结果大于或等于预设的阈值时,判定该语句包含跨站脚本攻击行为。

进一步地,所述的装置还包括:

设置单元,用于设置和保存检测策略,所述检测策略用于指定需要检测的数据包;

通知单元,用于采用邮件或短信方式将所述判断单元得到的判断结果实时通知数据库管理员;

所述提取单元捕获提交到数据库服务器的数据包后,如果该数据包与所述检测策略匹配,则从该数据包中提取SQL语句,否则丢弃该数据包。

本发明的技术方案服了当前大多数的XSS检测只在HTTP协议层面上实现的缺陷,在数据库底层实现了对XSS攻击的检测,保护了数据库的安全,对存储式XSS检测提供了最优的实现。

附图说明

图1为实施例一中检测数据库是否遭到XSS攻击的方法的例子里的系统架构示意图;

图2为实施例一中检测数据库是否遭到XSS攻击的方法的例子的流程示意图;

图3为实施例二中检测数据库是否遭到XSS攻击的装置的示意框图。

具体实施方式

下面将结合附图及实施例对本发明的技术方案进行更详细的说明。

实施例一,一种检测数据库是否遭到XSS攻击的方法,包括:

A、捕获提交到数据库服务器的数据包,即SQL命令或操作数据;从中提取出SQL语句;

B、如果提取出的SQL语句为包含修改数据库字段内容的语句,则进行步骤C;

C、判断所述包含修改数据库字段内容的语句中是否含有XSS攻击行为,如果有则判定数据库被XSS攻击。

本实施例可采用旁路设备检测数据库是否遭到XSS攻击。对不同数据包可以并行进行上述步骤。

本实施例可应用于检测各种常见的数据库,如:oracle,SQL server,Informix,DB2,mysql,postgresql等。

本实施例中,在判断所述包含修改数据库字段内容的语句中是否含有XSS攻击行为的步骤后,还可以包括步骤:

将判断结果实时通知数据库管理员,可以采用邮件,短信等有效快捷的方式进行通知。

本实施例中,所述步骤A中所捕获的SQL命令或操作数据是由webserver(网站服务器)或其他数据应用系统提交到数据库的。

本实施例中,所述步骤A具体包括:

a1、在一定的流量限制的条件下,可以捕获所有的webserver或其他数据库应用系统提交到数据库服务器的以太包,包括TCP包和UDP包,包括所有的周知端口和重定向的端口上的以太包;

a2、进行以太层,IP层,TCP层或UDP层解析,得到相关的应用层协议信息,并进行应用层解析得到SQL语句;

a3、识别SQL语句是采用了哪种编码方式,包括Unicode,utf8,utf16,GB2312等字符编码方式,对SQL语句进行解码;编码方式程序可以自动识别,也可以手工设置;

本实施例中,所述修改数据库字段内容的语句包括:update语句和insert语句等;实际应用时,根据数据库的不同,也可能为其它语句。

本实施例中,所述步骤B中包括:分析解码后的SQL语句,如果从中过滤出update和/或insert语句则进行步骤C。

通常,XSS攻击都有对应的标识(比如关键词、符号等);本实施例一种实施方式中,步骤C里可以根据所述包含修改数据库字段内容的语句中是否含有与XSS攻击行为对应的标识来进行判断,当所述包含修改数据库字段内容的语句中包含有与XSS攻击行为对应的标识时,判定该语句中包含XSS攻击行为。

在本实施例的另一种实施方式中,可以对与XSS攻击行为对应的各标识按照可能性程度赋值;每当在所述包含修改数据库字段内容的语句中检查到与XSS攻击行为对应的标识时,根据该标识所对应的值,对该语句进行累加赋值,直到检查完整个语句;设定一阈值,当该语句累加赋值的结果大于或等于该阈值时,判定该语句包含XSS攻击行为。

实际应用时,还可以采用其它方式来判断语句是否包含XSS攻击行为,比如可以提取出SQL语句中各字段的值时,可以在各字段中分别寻找与XSS攻击行为对应的标识,如果能找到该标识,或能找到一定数量的该标识、又或者是在一定数量的字段中能找到该标识,则判定该语句包含XSS攻击行为。

本实施例中,所述方法还可以包括:

设置检测策略;所述检测策略用于指定需要检测的数据包,包括以下项目中的任一个或其任意组合:

数据服务器的IP地址、访问数据库服务器的Web服务器的IP地址、数据库服务器的类型、端口号以及通信的编码方式;

步骤A中,捕获提交到数据库服务器的数据包后,如果该数据包与所述检测策略匹配,则从该数据包中提取SQL语句,否则丢弃该数据包。

如果在步骤B中可以提取出SQL语句中各字段的值,则所述检测策略还可以进一步指定需要进行检测的某张表的某个字段或某些字段。

所述步骤C中判断所述包含修改数据库字段内容的语句中是否含有XSS攻击行为时,可以根据所述检测策略,只检测其中指定的某个或某些字段中是否含有XSS攻击行为。

该设置检测策略的步骤只需要在第一次执行步骤C前执行一次,之后可以不执行,也可以在更新检测策略时与步骤A、B、C并行执行,或是暂停步骤A、B、C来进行更新;而步骤A、B、C可以循环反复执行,并且可以同时对不同数据包进行不同步骤,比如对一个数据包进行步骤C的同时,可以在对另一数据包进行步骤B。

下面一个具体的例子进一步加以说明。

该例中,采用旁路部署方式进行检测,此时的系统架构如图1所示;一次检测的过程如图2所示,包括以下步骤:

首先在旁路设备Audit上设置XSS的检测策略,如需要保护数据服务器的IP地址,访问数据库服务器的Web服务器的IP地址,数据库服务器的类型,端口号以及通信的编码方式(如果需要的话)等;

当web服务器或其他数据库应用系统访问所检测的数据库服务器上的数据库DataBase时,将捕获到相关的数据包,对捕获到的数据包相应进行以太层、IP层、TCP层或UDP层解析,得到相关的应用层协议信息;

如果所述数据包与所述检测策略相匹配,则进行应用层解析得到经过编码的SQL语句;

通过自动或手工配置的方式解析SQL语句的编码方式,解码得到相应的SQL语句。

从解码后的SQL语句中过滤出update和/或insert语句。

对过滤出的语句进行XSS攻击检测,即判断过滤出的语句中是否含有XSS攻击行为;得到检测结果。

将所述检测结果上报到系统自身的系统中,并通过email和短信的方式发送到数据库或web服务器管理员。

实施例二,一种检测数据库是否遭到跨站脚本攻击的装置,如图3所示,包括:

提取单元,用于捕获提交到数据库服务器的数据包,并从中提取出SQL语句;

筛选单元,用于从提取出的SQL语句中筛选出包含修改数据库字段内容的语句;

判断单元,用于判断所筛选出的包含修改数据库字段内容的语句中是否含有跨站脚本攻击行为,得到一判断结果;如果所述语句中是否含有跨站脚本攻击行为则判定数据库被跨站脚本攻击。

本实施例中,所述提取单元具体包括:

捕获模块,用于捕获所有提交到数据库服务器的以太包;

解析模块,用于依次进行以太层,IP层,TCP层或UDP层解析,得到应用层协议信息,进行应用层解析得到SQL语句;

解码模块,用于自动识别或根据设置确定SQL语句所采用的编码方式,对SQL语句进行解码。

本实施例中,所述筛选单元所筛选出的修改数据库字段内容的语句包括:

update语句和insert语句;

所述筛选单元从提取出的SQL语句中筛选出包含修改数据库字段内容的语句是指:

所述筛选单元从提取出的SQL语句中过滤出update和/或insert语句。

本实施例的一种实施方式中,所述判断单元判断包含修改数据库字段内容的语句中是否含有跨站脚本攻击行为是指:

所述判断单元判断所述包含修改数据库字段内容的语句中是否含有与跨站脚本攻击行为对应的标识,当所述包含修改数据库字段内容的语句中包含有与跨站脚本攻击行为对应的标识时,判定该语句中包含跨站脚本攻击行为;

本实施例的另一种实施方式中,所述判断单元判断包含修改数据库字段内容的语句中是否含有跨站脚本攻击行为是指:

所述判断单元保存与跨站脚本攻击行为对应的各标识的值;当在所述包含修改数据库字段内容的语句中检查到与跨站脚本攻击行为对应的标识时,根据该标识所对应的值,对该语句进行累加赋值,直到检查完整个语句;当该语句累加赋值的结果大于或等于预设的阈值时,判定该语句包含跨站脚本攻击行为。

本实施例中,所述装置还可以包括:

设置单元,用于设置和保存检测策略,所述检测策略用于指定需要检测的数据包;

所述提取单元捕获提交到数据库服务器的数据包后,如果该数据包与所述检测策略匹配,则从该数据包中提取SQL语句,否则丢弃该数据包。

本实施例中,所述装置还可以包括:

通知单元,用于采用邮件或短信方式将所述判断单元得到的判断结果实时通知数据库管理员。

其它实现细节可以与实施例一相同。

当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明的权利要求的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号