分析web应用程序的结构的制作方法

文档序号:9240052阅读:282来源:国知局
分析web应用程序的结构的制作方法
【专利说明】
【背景技术】
[0001]使用软件安全测试来确定诸如web应用程序的应用程序中的漏洞。基于网络的软件工作的传统的黑盒安全测试通过利用伪装成攻击者的、通常被称为扫描器的安全测试应用程序,而发挥作用。扫描器通过发出HTTP请求并分析HTTP响应或缺乏HTTP响应来探宄被测应用程序(AUT),以便发现所有AUT接受输入的URL。AUT接受输入的URL可以被称为AUT的受攻击面。然后,扫描器根据受攻击面和可能的漏洞类别来创建攻击。扫描器应用程序攻击来通过评估程序的HTTP响应以诊断漏洞的存在或不存在。
【附图说明】
[0002]下面的详细说明参照附图,附图中:
[0003]图1为根据一个示例的用于分析web应用程序的结构的计算系统的框图;
[0004]图2A和图2B为根据各种示例的规则和令牌的框图;
[0005]图3为根据一个示例的用于分析web应用程序的结构的方法的流程图;和
[0006]图4为根据一个示例的能够分析web应用程序的结构的装置的框图。
【具体实施方式】
[0007]本发明描述的实施例提供用于对诸如web应用程序的应用程序进行测试的技术。当公司想要知道公司所拥有的生产中的或将要投产的web应用程序有多安全时,公司经常采用诸如渗透测试解决方案(例如,使用扫描器)、模糊测试、漏洞测试、软件安全测试、网站安全测试、它们的组合等的安全测试解决方案。公司可能希望使用生产中的应用程序的副本作为被测应用程序(AUT)。
[0008]自动动态web应用程序安全扫描器在攻击AUT之前,先探宄AUT。这一过程可以被称为“爬行”。爬行AUT可以通过分析web应用程序的超文本标记语言(HTML)和在诸如嵌入到web应用程序扫描器中的网络浏览器布局引擎的网络浏览器布局引擎的受控环境中执行AUT的代码来完成。
[0009]由于使用Web 2.0应用程序的增长,它们复杂的结构妨碍了 HTML页面分析并使得浏览器级别的处理变得复杂。许多Web2.0应用程序具有最小引导的HTML代码,最小引导的HTML代码下载主代码,例如,直接运行于浏览器文档对象模型(DOM)和JavaScript(JS)结构上的JS代码、异步JS和XML(AJAX)调用、动态创建的链接、DOM事件等等。有时,由于运行了 JS代码,因此其它HTML文档不在应用程序的周期内取出。
[0010]一种爬行这样严重地基于JS的应用程序的方法是允许在标准浏览器引擎中执行应用程序,然后通过把鼠标和键盘事件发送到Web应用程序的用户界面(UI)元素来模拟用户动作,征求对JS代码的评价,这可能会改变Web应用程序的状态并可能提供有关Web应用程序的攻击媒介的信息。但是,这种方法是非常耗时、不可靠的,而且容易“扫描失控”。一个“扫描失控”的示例是扫描在页面上发现的“日历”控件:尽管日历中所有日期都是扫描器生成事件的有效目标,但是对可能的日历日期的尝试点击会导致基本上是无限的扫描时间。因此,高级JS框架可以广泛地利用“事件冒泡”来巩固事件处理程序,防止系统找到合适的事件目标,并且最复杂的部件(例如日历、时间表、树、表格等)可能呈现对于爬虫在可管理的时间中进行遍历来说,太多的可操作元素。
[0011]此外,通过与所有是用户事件的潜在目标的Π部件交互,以进行穷尽的Π级的爬行是低效率的。应用程序内的某些UI元素,由于事件处理程序属于应用程序的结构内的其它元素(例如,自下而上检测或现代浏览器内的DOM事件的冒泡)不能被识别为事件的有效目标。进一步地,通过发送鼠标和键盘事件的应用程序的DOM元素的完全饱和是很耗时的,可能会破坏应用程序逻辑,因此是行不通的。此外,缺少关于应用程序的逻辑的认识不允许与复杂Π控件的正确交互。如此,这些挑战阻止了通过基于Π的爬行而正确发现应用程序面,这大大削弱了自动动态web应用程序扫描的质量。
[0012]因此,本发明中公开的各种实施例涉及遵照一套区别处理以具体方式写成的应用程序的预定义规则,简化应用程序的结构以列出(例如,图或树)可操作的元件。利用这种方法,可以提供对附加的框架(例如,jQuery、Dojo等)的支持,从而实现对应用程序的更高质量的扫描并发现先前被隐藏的应用程序状态中的漏洞。
[0013]该方案的优点包括创建应用程序的结构的简化但是准确的表示。使用用于描述对特定类型的应用程序和具体的JS框架的分析过程的良好定义的规则语言来实现对应用程序的高覆盖。
[0014]为了发现应用程序受攻击面,web应用程序扫描器在web应用程序的UI元素上模拟用户动作。DOM分析器利用图2A中进一步详细说明的规则来遍历应用程序的结构,并把复杂的DOM转换为图2B中进一步详细说明的简明列表可操作的令牌。在某些示例中,令牌表示为鼠标或键盘事件的有效目标的DOM元素,或可能被调用、评价、或以任何其它方式修改的JS实体。
[0015]每条规则可以包括用于检查该规则是否应该在web应用程序的具体框架上激活的规则相关属性,或由其组成。在一些示例中,规则可以是JS框架专用的,包括所使用的JS的版本。在一个示例中,如果规则是活跃的,那么该规则的所有选择器都被调用。然后,每个选择器都被用在对web应用程序的DOM和JS结构的遍历中,以返回令牌的列表。在另一示例中,如果规则是活跃的,那么可以根据对web应用程序的进一步分析(例如,根据web应用程序的缓存)来确定选择器。在这里详细说明上述进一步分析。
[0016]在一些示例中,选择器是用来识别感兴趣的DOM中的元素的技术或机制。在一些示例中,选择器可以被内置到用于描述应用程序的语言中,例如层叠样式表(CSS)具有内置的选择器。在CSS的示例中,可以用来选择类,而“#”可以用来选择id。利用这一方法,“.role”可以用来选择具有类“ι.ο1θ”的DOM中的每一个元素。在其它示例中,选择器可以由规则产生。例如,规则可以编写JavaScript或其它脚本/代码以返回作为令牌的、一组选定的元素。
[0017]在某些示例中,令牌表示为鼠标或键盘事件的有效目标的DOM元素,或可能被调用、评价、或以任何其它方式修改的JS实体。令牌包括可以被用来检索元件和DOM或JS实体的允许动作的列表的定位器(例如,定位器可以是简单的XPath、TruClient特定的定位器等)。
[0018]可以识别有关的规则,然后可以启用相关的选择器。于是,可以利用选择器分析web应用程序的DOM以产生令牌。这扩大了应用程序的抓取范围,并在应用程序中发现较短的业务流程路径。令牌可以被发送给扫描器以扫描web应用程序。在扫描过程中,令牌可以由web应用程序扫描器使用来定位有关DOM对象/JS实体并激活它们。这可以被用来确定漏洞和关于web应用程序的其它消息。
[0019]图1为根据一个示例的用于分析web应用程序的结构的计算系统的框图。在此示例中,计算系统100可以包括用于在web应用程序104的用户界面元素上模拟用户动作的扫描器102。web应用程序104可以被加载到浏览器布局引擎106中,并由文档分析器108根据一组规则110进行分析。计算系统100的一个或多个部件可以利用至少一个处理器和存储器实现。进一步地,一个或多个计算机可以被用来实现部件中的每一个部件,或者部件中的每一个部件都可以被实现在单个计算系统中。
[0020]扫描器102可以发送web应用程序104的定位器或标识符(例如,统一资源定位符(URL))给浏览器布局引擎106。浏览器布局引擎106可以加载web应用程序104,例如,根据URL加载web应用程序104。在一些示例中,浏览器布局引擎106可以是被配置来作为扫描器计算系统100的部分而起作用的、网络浏览器或修改的浏览器。web应用程序104的示例包括日历应用程序、电子邮件界面、新闻网页、诸如视频流的其它内容资源、生产应用程序等等。
[0021]然后,扫描器102可以在web应用程序104的用户界面元素上模拟用户动作。模拟可以是随机的,或基于预定的组。模拟可以当文档分析器108遍历web应用程序104的结构时发生。模拟可以被用来帮助文档分析器108确定要激活一条或多条规则来产生可操作的令牌。如此,文档分析器108根据规则遍历web应用程序
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1