WEB安全漏洞检测工具的分析与改进(6)
时间:2017-05-30 16:27 来源:毕业论文 作者:毕业论文 点击:次
拦截代理 Web应用爬虫 Fuzzer[9]或者扫描器 手动的请求工具 各种各样的共享功能 3.3.1拦截代理 拦截代理位于工具组件的核心部分,目前仍然是一个基本的组件。为了使用拦截代理,必须配置浏览器使它作为本地机器上一个端口的代理服务器。代理工具被配置在这个端口上监听,然后接收由浏览器发出的所有请求。由于代理可以在浏览器和目的Web服务器之间进行双向通信,所以它能够延迟每个信息用于用户查看和修改以及完成其他有用的功能。 1. 拦截代理和HTTPS 当处理未加密的HTTP通信时,拦截代理实质上和普通的Web代理运行机制相同。浏览器发送标准的HTTP请求到代理,在请求的第一行中URL包含目的Web服务器的全主机名。代理解析出主机名,然后把它转换为IP地址,并且转换请求为标准的非代理请求格式,再把它转发到目的服务器。当服务器响应时,代理转发响应到客户浏览器。 而对于HTTPS通信,浏览器首先使用CONNECT方法,指定目的服务器的主机名和端口号来产生一个明文请求给代理。当使用一个正常的(非拦截的)代理时,代理以“HTTP 200”状态码响应,保持开放的TCP连接并从该点起作为一个TCP级别接力到目标服务器。然后浏览器和目标服务器执行SSL握手,建立一个安全隧道来传送HTTP消息[10]。对于拦截代理,为了获取浏览器通过隧道发送的HTTP消息,这个过程必须以不同的方式工作。 图3.1 一个拦截代理允许查看和修改HTTPS通信信息 如图3.1所示,在使用“HTTP 200”状态码响应CONNECT请求后,拦截代理并没有扮演一个接力的角色而是扮演了和浏览器进行SSL握手的服务器端的角色。它也作为一个SSL客户端并且执行和目标Web服务器的SSL握手。因此,使用扮演中间人角色的代理建立了两个SSL隧道。这可以使代理对通过任何一个隧道接受的每一个消息进行解密,获取它的明文形式,然后再通过另一个隧道传送它。 当然,如果任何攻击者实施这种欺骗而没有被检测出,由于浏览器和服务器之间通信的保密性和完整性未受到保护,那么SSL就会变得相当没有意义。基于这个原因,SSL握手的关键部分使用了加密证书来鉴别通信的任何一方。为了作为服务器端执行和浏览器的SSL握手,拦截代理必须使用它自己的SSL证书,那是因为它没有获取目标服务器使用的私钥。在这种情况下,为了阻止攻击浏览器显示给用户一个警告,并且允许他们查看伪造的证书以及决定它是否可信。 2. 普通的特性 除了允许拦截和修改请求和响应的核心功能外,代理还包括其他一些有用的特性来协助你攻击Web应用程序。这些特性包括如下: 细粒度的拦截规则(基于例如目标主机、URL、方法、资源类型等标准)它允许消息被拦截或者默默地被转发。在一个典型的应用程序中,你可能对大多数的请求和响应都不感兴趣,这个功能可以让你配置你的代理来标记你仅仅感兴趣的消息。 所有请求和响应的详细历史记录和缓存,这样就可以查看先前的消息,然后传递到套件中其他工具进行深入分析。 用于动态修改请求和响应内容的自动化匹配-替换规则。这个功能在许多情况下十分有用,例如重写Cookie的值或者请求中其他参数,删除Cache标记,用User-Agent头模仿一个特定的浏览器等等。 操作HTTP消息格式的功能,例如在不同请求方法和内容编码之间的转换。 (责任编辑:qin) |