专利名称:一种检测数据库是否遭到跨站脚本攻击的方法及装置的制作方法
技术领域:
本发明涉及网络安全技术领域,具体涉及一种检测数据库是否遭到跨站脚本攻击 的方法及装置。
背景技术:
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漏洞。
4
C发布一个热点信息,吸引其它用户纷纷阅读。B或者是任何的其他人如A浏览该信息,其会话cookies或者其它信息将被C盗走。类型A直接威胁用户个体,而类型B和存储式漏洞所威胁的对象都是企业级Web应用。当前大多数的XSS检测只在HTTP协议层面上实现,无法在数据库底层进行XSS检 测。
发明内容
本发明要解决的技术问题是提供一种检测数据库是否遭到跨站脚本攻击的方法 及装置,能够检测出数据库所遭受的XSS攻击。为了解决上述问题,本发明提供了一种检测数据库是否遭到跨站脚本攻击的方 法,包括捕获提交到数据库服务器的数据包,从中提取出SQL语句;如果提取出的SQL语句为包含修改数据库字段内容的语句,则判断所述包含修改 数据库字段内容的语句中是否含有跨站脚本攻击行为,如果有则判定数据库被跨站脚本攻
击ο进一步地,所述捕获提交到数据库服务器的数据包,从中提取出SQL语句的步骤 具体包括al、捕获所有提交到数据库服务器的以太包;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检测提供了最
6优的实现。
图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具体包括al、在一定的流量限制的条件下,可以捕获所有的webserver或其他数据库应用 系统提交到数据库服务器的以太包,包括TCP包和UDP包,包括所有的周知端口和重定向的 端口上的以太包;a2、进行以太层,IP层,TCP层或UDP层解析,得到相关的应用层协议信息,并进行 应用层解析得到SQL语句;a3、识别SQL语句是采用了哪种编码方式,包括Unicode,utf8,utfl6,GB2312等 字符编码方式,对SQL语句进行解码;编码方式程序可以自动识别,也可以手工设置;本实施例中,所述修改数据库字段内容的语句包括=Update语句和insert语句 等;实际应用时,根据数据库的不同,也可能为其它语句。本实施例中,所述步骤B中包括分析解码后的SQL语句,如果从中过滤出update 和/或insert语句则进行步骤C。通常,XSS攻击都有对应的标识(比如关键词、符号等);本实施例一种实施方式
7中,步骤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语句。
8
对过滤出的语句进行XSS攻击检测,即判断过滤出的语句中是否含有XSS攻击行 为;得到检测结果。将所述检测结果上报到系统自身的系统中,并通过email和短信的方式发送到数 据库或web服务器管理员。实施例二,一种检测数据库是否遭到跨站脚本攻击的装置,如图3所示,包括提取单元,用于捕获提交到数据库服务器的数据包,并从中提取出SQL语句;筛选单元,用于从提取出的SQL语句中筛选出包含修改数据库字段内容的语句;判断单元,用于判断所筛选出的包含修改数据库字段内容的语句中是否含有跨站 脚本攻击行为,得到一判断结果;如果所述语句中是否含有跨站脚本攻击行为则判定数据 库被跨站脚本攻击。本实施例中,所述提取单元具体包括捕获模块,用于捕获所有提交到数据库服务器的以太包;解析模块,用于依次进行以太层,IP层,TCP层或UDP层解析,得到应用层协议信 息,进行应用层解析得到SQL语句;解码模块,用于自动识别或根据设置确定SQL语句所采用的编码方式,对SQL语句 进行解码。本实施例中,所述筛选单元所筛选出的修改数据库字段内容的语句包括update 语句禾口 insert 语句;所述筛选单元从提取出的SQL语句中筛选出包含修改数据库字段内容的语句是 指所述筛选单元从提取出的SQL语句中过滤出update和/或insert语句。本实施例的一种实施方式中,所述判断单元判断包含修改数据库字段内容的语句 中是否含有跨站脚本攻击行为是指所述判断单元判断所述包含修改数据库字段内容的语句中是否含有与跨站脚本 攻击行为对应的标识,当所述包含修改数据库字段内容的语句中包含有与跨站脚本攻击行 为对应的标识时,判定该语句中包含跨站脚本攻击行为;本实施例的另一种实施方式中,所述判断单元判断包含修改数据库字段内容的语 句中是否含有跨站脚本攻击行为是指所述判断单元保存与跨站脚本攻击行为对应的各标识的值;当在所述包含修改 数据库字段内容的语句中检查到与跨站脚本攻击行为对应的标识时,根据该标识所对应的 值,对该语句进行累加赋值,直到检查完整个语句;当该语句累加赋值的结果大于或等于预 设的阈值时,判定该语句包含跨站脚本攻击行为。本实施例中,所述装置还可以包括设置单元,用于设置和保存检测策略,所述检测策略用于指定需要检测的数据 包;所述提取单元捕获提交到数据库服务器的数据包后,如果该数据包与所述检测策 略匹配,则从该数据包中提取SQL语句,否则丢弃该数据包。本实施例中,所述装置还可以包括通知单元,用于采用邮件或短信方式将所述判断单元得到的判断结果实时通知数据库管理员。其它实现细节可以与实施例一相同。当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟 悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变 形都应属于本发明的权利要求的保护范围。
权利要求
一种检测数据库是否遭到跨站脚本攻击的方法,包括捕获提交到数据库服务器的数据包,从中提取出SQL语句;如果提取出的SQL语句为包含修改数据库字段内容的语句,则判断所述包含修改数据库字段内容的语句中是否含有跨站脚本攻击行为,如果有则判定数据库被跨站脚本攻击。
2.如权利要求1所述的方法,其特征在于,所述捕获提交到数据库服务器的数据包,从 中提取出SQL语句的步骤具体包括al、捕获所有提交到数据库服务器的以太包;a2、依次进行以太层,IP层,TCP层或UDP层解析,得到应用层协议信息,进行应用层解 析得到SQL语句;a3、自动识别或根据设置确定SQL语句所采用的编码方式,对SQL语句进行解码。
3.如权利要求1所述的方法,其特征在于,所述修改数据库字段内容的语句包括 update语句禾口 insert语句;提取出的SQL语句为包含修改数据库字段内容的语句是指从提取出的SQL语句中过 滤出update禾口 /或insert语句。
4.如权利要求1所述的方法,其特征在于,判断所述包含修改数据库字段内容的语句 中是否含有跨站脚本攻击行为是指判断所述包含修改数据库字段内容的语句中是否含有与跨站脚本攻击行为对应的标 识,当所述包含修改数据库字段内容的语句中包含有与跨站脚本攻击行为对应的标识时, 判定该语句中包含跨站脚本攻击行为; 或是指当在所述包含修改数据库字段内容的语句中检查到与跨站脚本攻击行为对应的标识 时,根据该标识所对应的值,对该语句进行累加赋值,直到检查完整个语句;当该语句累加 赋值的结果大于或等于预设的阈值时,判定该语句包含跨站脚本攻击行为。
5.如权利要求1所述的方法,其特征在于,还包括 设置检测策略;所述检测策略用于指定需要检测的数据包;捕获提交到数据库服务器的数据包后,如果该数据包与所述检测策略匹配,则从该数 据包中提取SQL语句,否则丢弃该数据包。在判断所述包含修改数据库字段内容的语句中是否含有跨站脚本攻击行为的步骤后 还包括采用邮件或短信方式将判断结果实时通知数据库管理员。
6.一种检测数据库是否遭到跨站脚本攻击的装置,其特征在于,包括 提取单元,用于捕获提交到数据库服务器的数据包,并从中提取出SQL语句; 筛选单元,用于从提取出的SQL语句中筛选出包含修改数据库字段内容的语句;判断单元,用于判断所筛选出的包含修改数据库字段内容的语句中是否含有跨站脚本 攻击行为,如果有则判定数据库被跨站脚本攻击。
7.如权利要求6所述的装置,其特征在于,所述提取单元具体包括 捕获模块,用于捕获所有提交到数据库服务器的以太包;解析模块,用于依次进行以太层,IP层,TCP层或UDP层解析,得到应用层协议信息,进 行应用层解析得到SQL语句;解码模块,用于自动识别或根据设置确定SQL语句所采用的编码方式,对SQL语句进行解码。
8.如权利要求6所述的装置,其特征在于,所述筛选单元所筛选出的修改数据库字段 内容的语句包括update语句禾口 insert语句;所述筛选单元从提取出的SQL语句中筛选出包含修改数据库字段内容的语句是指 所述筛选单元从提取出的SQL语句中过滤出update和/或insert语句。
9.如权利要求6所述的装置,其特征在于,所述判断单元判断包含修改数据库字段内 容的语句中是否含有跨站脚本攻击行为是指所述判断单元判断所述包含修改数据库字段内容的语句中是否含有与跨站脚本攻击 行为对应的标识,当所述包含修改数据库字段内容的语句中包含有与跨站脚本攻击行为对 应的标识时,判定该语句中包含跨站脚本攻击行为; 或是指所述判断单元保存与跨站脚本攻击行为对应的各标识的值;当在所述包含修改数据库 字段内容的语句中检查到与跨站脚本攻击行为对应的标识时,根据该标识所对应的值,对 该语句进行累加赋值,直到检查完整个语句;当该语句累加赋值的结果大于或等于预设的 阈值时,判定该语句包含跨站脚本攻击行为。
10.如权利要求6所述的装置,其特征在于,还包括设置单元,用于设置和保存检测策略,所述检测策略用于指定需要检测的数据包; 通知单元,用于采用邮件或短信方式将所述判断单元得到的判断结果实时通知数据库管理员;所述提取单元捕获提交到数据库服务器的数据包后,如果该数据包与所述检测策略匹 配,则从该数据包中提取SQL语句,否则丢弃该数据包。
全文摘要
一种检测数据库是否遭到跨站脚本攻击的方法及装置;方法包括捕获提交到数据库服务器的数据包,从中提取出SQL语句;如果提取出的SQL语句为包含修改数据库字段内容的语句,则判断所述包含修改数据库字段内容的语句中是否含有跨站脚本攻击行为,如果有则判定数据库被跨站脚本攻击。本发明能够检测出数据库所遭受的XSS攻击。
文档编号G06F17/30GK101901307SQ200910085040
公开日2010年12月1日 申请日期2009年5月27日 优先权日2009年5月27日
发明者刘晖, 叶润国, 姚熙, 邱少红, 陈永涛 申请人:北京启明星辰信息技术股份有限公司;北京启明星辰信息安全技术有限公司