基于DOM的跨站脚本漏洞测试方法和系统技术方案

技术编号:8489732 阅读:1678 留言:0更新日期:2013-03-28 09:02
本申请提供了一种基于DOM的跨站脚本漏洞测试方法,包括:获取目标页面的源代码并提取其中的脚本代码;遍历所有脚本代码,利用预先定义的脏数据入口获取脚本代码中所有脏数据入口及脏数据入口传递的变量;再次遍历所有脚本代码,获取所述脚本代码中的输出函数,并提取输出函数的参数与脏数据入口及脏数据入口传递的变量进行匹配,若能匹配,则确定有漏洞存在;记录漏洞信息。本申请还提供一种实现前述方法的基于DOM的跨站脚本漏洞测试系统。本申请的基于DOM的跨站脚本漏洞测试方法及系统,能够解决基于DOM的跨站脚本漏洞无法准确测试的问题。

【技术实现步骤摘要】
基于DOM的跨站脚本漏洞测试方法和系统
本申请涉及计算机网络安全测试
,特别是涉及一种基于DOM的跨站脚本 漏洞测试方法及系统。
技术介绍
跨站脚本漏洞(Cross Site Scripting,常简写作XSS)是Web应用程序在将数 据输出到网页的时候存在问题,导致攻击者可以将构造的恶意数据显示在页面的漏洞。跨 站脚本攻击注入的恶意代码运行在浏览器中,可以控制用户的浏览器,并获取用户计算 机信息、截获用户键盘输入、刺探用户所处局域网信息甚至对其他网站进行攻击。其中, DOM(Document Object Model,文档对象模型)是JavaScript输出的页面,基于DOM的跨站 脚本漏洞就是出现在JavaScript代码中的漏洞。对于跨站脚本漏洞的测试多采用黑盒测试,即在不知道源代码的情况下通过各种 技术手段对Web应用程序进行的测试。一般是修改参数值为一个标志字符串,然后搜索页 面是否含有该字符串,如果有,页面会把参数输出,此时通过分析返回页面构造攻击参数来 判断是否有漏洞。但是基于DOM的跨站脚本漏洞就是出现在JavaScript代码中的漏洞,一 般的黑盒测试无法通过搜索页面源代码来判断是否有传入的标志字符串,也就无法判断是 否有漏洞出现,因此现有的测试方法无法实现漏洞的准确测试。
技术实现思路
本申请所要解决的技术问题是提供一种基于DOM的跨站脚本漏洞测试方法及系 统,能够解决基于DOM的跨站脚本漏洞无法准确测试的问题。为了解决上述问题,本申请公开了一种基于DOM的跨站脚本漏洞测试方法,包括 以下步骤获取目标页面的源代码并提取其中的脚本代码;遍历所有脚本代码,利用预先定义的脏数据入口获取脚本代码中所有脏数据入口 及脏数据入口传递的变量;再次遍历所有脚本代码,获取所述脚本代码中的输出函数,并提取输出函数的参 数与脏数据入口及脏数据入口传递的变量进行匹配,若能匹配,则确定有漏洞存在;记录漏洞信息。进一步地,所述获取目标页面的源代码并提取其中的脚本代码包括采用插件获取源代码中的脚本代码;或用字符串截取脚本代码的script标签中的内容,并将各script标签中的内容拼接。进一步地,所述遍历所有脚本代码,利用预先定义的脏数据入口获取脚本代码中 所有脏数据入口及脏数据入口传递的变量包括逐行扫描代码,若扫描到等号,则把赋值语句分为左右两部分;将等号右边部分用正则表达式分割成字母、数字和下划线组成的数组;提取预先定义的脏数据入口,与所述数组进行匹配,若能匹配,则提取等号左边的 变量,并连同等号右边部分保存在脏数据的数组里;重复前述三个步骤,直到所有代码都扫描完成。进一步地,所述再次遍历所有脚本代码,获取所述脚本代码中的输出函数,并提取 输出函数的参数与脏数据入口及脏数据入口传递的变量进行匹配,若能匹配,则确定有漏 洞存在包括将输出函数的参数与脏数据入口变量以及脏数据入口传递的变量进行匹配,如果 至少有一个能匹配上,则确定有漏洞存在。进一步地,所述记录漏洞信息之后还包括返回或展示漏洞信息。进一步地,所述获取目标页面的源代码并提取其中的脚本代码之后还包括对提取的脚本代码进行预处理,所述预处理包括去除或替换所述脚本代码中的无 用代码。为了解决上述问题,本申请还公开了一种基于DOM的跨站脚本漏洞测试系统,包 括代码获取模块,用于获取目标页面的源代码并提取其中的脚本代码;脏数据变量获取模块,用于遍历所有脚本代码,利用预先定义的脏数据入口获取 脚本代码中所有脏数据入口及脏数据入口传递的变量;漏洞识别模块,再次遍历所有脚本代码,获取所述脚本代码中的输出函数,并提取 输出函数的参数与脏数据入口及脏数据入口传递的变量进行匹配,若能匹配,则确定有漏 洞存在;信息记录单元,用于记录漏洞信息。进一步地,所述代码获取模块包括插件单元,用于采用插件获取源代码中的脚本代码;或截取单元,用于用字符串截取脚本代码的script标签中的内容,并将各script标 签中的内容拼接。进一步地,所述脏数据变量获取模块包括代码扫描单元,用于逐行扫描代码,若扫描到等号,则把赋值语句分为左右两部 分;分割单元,用于将等号右边部分用正则表达式分割成字母、数字和下划线组成的 数组;匹配单元,用于提取预先定义的脏数据入口,与所述数组进行匹配,若能匹配,则 提取等号左边的变量,并连同等号右边部分保存在脏数据的数组里。进一步地,所述漏洞识别模块模块包括匹配单元,用于将输出函数的参数与脏数据入口变量以及脏数据入口传递的变量 进行匹配,如果至少有一个能匹配上,则确定有漏洞存在。进一步地,所述系统还包括漏洞信息反馈模块,用于返回或展示漏洞信息。进一步地,所述系统还包括预处理模块,用于对提取的脚本代码进行预处理,去除或替换所述脚本代码中的 无用代码。与现有技术相比,本申请包括以下优点本申请通过提取页面源代码,并从中获取脚本代码,通过对脚本代码的扫描,并与 预先定义的脏数据入口进行匹配来获取脏数据入口以及脏数据入口传递的变量,从而发现 基于源代码发现基于DOM的跨站脚本漏洞。进一步地,在对脚本代码的扫描过程中采用逐行扫描的方式,因此在发现漏洞后, 能将漏洞的位置定位到某一行,从而便于后续修复时的定位。另外,通过正则表达式来分隔脚本代码中的赋值语句,用分割后的数组与预先定 义的脏数据入口来进行匹配的方式,可以较为精确的提取到脏数据入口以及脏数据入口传 递的变量,保证漏洞检测的准确性。而且无需采用javascript引擎,可以在写完代码还没 发布上线的时候就现问题,能够及时的发现问题并解决。当然,实施本申请的任一产品不一定需要同时达到以上所述的所有优点。附图说明图1是本申请的基于DOM的跨站脚本漏洞测试方法实施例一的流程图2是本申请的基于DOM的跨站脚本漏洞测试方法实施例二的流程图3是本申请的基于DOM的跨站脚本漏洞测试系统实施例一的结构示意图4是本申请的基于DOM的跨站脚本漏洞测试系统实施例二的结构示意图。具体实施方式为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实 施方式对本申请作进一步详细的说明。参照图1,示出本申请的一种基于DOM的跨站脚本漏洞测试方法实施例一,包括以 下步骤步骤101,获取目标页面的源代码并提取其中的脚本代码。其中,从源代码中提取脚本(javascript)内容可以直接用插件获取,例如,ruby 中可以直接用hpricot插件获取。另外,也可以用字符串截取的方式截取script标签中的 内容,在将各script标签中的内容拼接在一起。步骤102,遍历所有脚本代码,利用预先定义的脏数据入口获取脚本代码中所有脏 数据入口及脏数据入口传递的变量。脏数据为可能利用漏洞实现恶意攻击的数据,具体的,包括所有Dom的入口点以 及这些入口点所传递到的其他变量,可以通过对原有漏洞攻击进行统计获取。本实例中,预 先定义的脏数据包括location、document, referrer、window, name、document. URL 等等, 另外,如果代码中包含有aaa = document. URL ;那么,aaa也会被认为是脏数据。其中,遍历脚本代码获取脏数据入口和脏数据入口传递变量的具体的过程为逐 行扫描所有脚本代码,若本文档来自技高网...

【技术保护点】
一种基于DOM的跨站脚本漏洞测试方法,其特征在于,包括以下步骤:获取目标页面的源代码并提取其中的脚本代码;遍历所有脚本代码,利用预先定义的脏数据入口获取脚本代码中所有脏数据入口及脏数据入口传递的变量;再次遍历所有脚本代码,获取所述脚本代码中的输出函数,并提取输出函数的参数与脏数据入口及脏数据入口传递的变量进行匹配,若能匹配,则确定有漏洞存在;记录漏洞信息。

【技术特征摘要】

【专利技术属性】
技术研发人员:谢雄钦吴翰清
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1