Web安全渗透测试(SSL)

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

企业级Web安全渗透测试之SSL篇

一、简介

目前,许多重要的Web服务都使用了SSL和TLS协议对通信进行保护。我们知道,http 协议是使用明文进行传输的,但是像网络银行之类的web应用如果使用http协议的话,那么所有的机密信息都会暴露在网络连接中,这就像银行用一个透明的信封给我们邮寄信用卡帐号和密码一样,在从银行到达用户之间任何接触过这封信的人,都能看到我们的帐号和密码。为了提高其安全性,经常需要通过SSL或者TLS隧道传输这些明文,这样就产生了https 通信流量。例如网络银行之类的应用,在服务器和客户端之间传输密码,信用卡号码等重要信息时,都是通过https协议进行加密传送的。

SSL和TLS是两种安全协议,它们通过加密技术为传输的信息提供安全信道、机密性和身份验证等安全功能。我们知道由于对高级密码技术的出口限制,会造成遗留系统使用的是弱加密技术。如果系统采用了弱密码,或者说密码强度过低的话,攻击者可以在有效的时间内破解密钥,而攻击者一旦得到了密钥,就像小偷得到了我们家的钥匙一样,所有的锁都会形同虚设。但是,新Web服务器就不会使用弱加密系统了吗?答案是否定的,因为许多新Web服务器也经常被配置成处理虚密码选项。为了实现这些安全特性,协议必须确保使用的密码算法有足够的强度,并且密码算法得到了正确的实现。即使服务器安装使用了高级的加密模块,但是如果配置不当的话,也有可能为安全特性要求较高的通信信道的设置了较弱的加密技术。下面,我们将详细介绍如何对这两种协议的配置进行安全审计。

二、测试SSL/TLS的密码规范

我们知道,http协议是使用明文进行传输的,为了提高其安全性,经常需要通过SSL

或者TLS隧道传输这些明文,这样就产生了https通信流量。除对传输的数据进行加密处理之外,https(安全超文本传输协议,HTTPS)还能利用数字证书为服务器或客户端提供身份标识。

过去,美国政府对加密系统的出口有许多限制,如密钥长度最大为40位,因为密钥长度越短,它就越容易破解。后来,密码出口条例已经放宽了许多,但是,检查服务器的SSL 配置仍然十分重要,因为它有可能配置使用了弱加密技术。基于SSL的服务不应该提供选择弱密码的机会。

注意,我们这里所说的弱密码,指的是加密强度不够、容易破解的加密系统。不同的加密算法具有不同的密码强度,但是在算法一定的情况下,密钥的长度越长,加密强度越高。

技术上,选择加密技术的过程如下所示:在建立SSL连接的初期,客户端向服务器发送一个Client Hello消息,以告知服务器它支持哪些加密技术等。一般情况下,客户端通常

例4.中间人攻击

这样就能读取iframe的内容,如下图所示:

五、测试SSL证书的有效性

通过https协议访问Web应用程序时,就会在客户端(通常为浏览器)和服务器之间建立一个安全信道。然后,通过数字证书为通信的一方(服务器)或双方(客户和服务器)建立身份标识。为了进行通信,这些证书需要通过多道检测。基于SSL和证书的身份验证超出了本文的范围,我们这里主要探讨证书有效性的主要标准:检查认证中心是否是可信的机构;检查证书当前的有效性;站点名称和证书中所声称的是否一致。要经常升级您的浏览器,因为CA证书也会过期,在浏览器的不同版本中,CA证书会重新生成。另外,因为越来越多

的网站要求强度高于40或者56位的加密,这时也需要更新浏览器,因为一些老版本不支持这些高强度加密。下面我们做进一步的解释。

1.每个浏览器都带有一个预装的受信CA列表,当我们收到证书时,可以到签发该证书的认证中心CA去验证一下。当然,这个列表是可以随意定制和扩展的。在与https服务器的初步磋商期间,如果服务器证书是浏览器不了解的认证中心签发的,那么就会抛出一个警告。出现这种情况,一般是因为Web应用程序的证书是由一个自建的认证中心所签发的。对于内部网环境来说,自建认证中心是比较合适的,因为企业web电子邮件是通过https传输的,同时,企业内的所有用户都会信任这个内部认证中心。但是,当通过Internet向公众提供服务时,则需要使用一个所有公共用户都信任的认证中心。

2.证书都有一个有效期,因此,它也是会过期的。同样,如果证书过期的话,浏览器也会抛出一个警告。公用服务需要一个暂时有效的证书;否则,当我们跟一个服务器通信时,只要它的证书是受信任的认证中心颁发的,即使过期也无需重新生成。

3.如果证书中的名称跟服务器的名称不相配怎么办呢?如果出现这种情况,就说明很可疑。一个系统可以托管许多基于名称的虚拟主机,这些虚拟主机共享同一个IP地址,彼此靠HTTP 1.1的Host:头部相互区别。在这个例子中,因为在处理HTTP请求之前,SSL握手时会检查服务器证书,所以它不可能为每个虚拟服务器分配不同的证书。因此,如果站点的名称和证书中所指出的名称不匹配,那么我们浏览器就会发出通知。为了避免这种情况,必须使用基于IP的虚拟服务器。RFC2817(/rfc/rfc2817.txt)和RFC3546(/rfc/rfc3546.tx)这两个文档描述了处理这个问题并允许正确引用基于名称的虚拟主机的方法。

证书有效性的黑盒测试

下面介绍如何检查应用程序使用的证书的有效性。当浏览器遇到过期的证书、由不可信的认证中心签发的证书以及证书上的名称跟服务器名称不一致时,它就会发出一个警告。访问https站点的时候,我们只要单击在浏览器窗口中的―锁‖图标,就能看到与证书有关的信息,如证书签发机构、有效期、加密特性等。

如果应用程序要求客户端证书,那也不要紧,因为访问该程序之前我们很可能已经安装过证书,所以可以通过查看浏览器证书列表中已安装的的相关证书来获得必要的证书信息。

对于应用程序所用的所有SSL通信信道,必须进行上述检查。虽然https服务通常运行在443端口上,但还可能有依赖这个Web应用程序的其它服务,从而导致https管理端口一直打开,或者在非标准的端口上运行https服务,等等。因此,要对所有已经发现的使用SSL 进行封装的端口进行检查,比如,nmap扫描程序提供了一个扫描模式——需要在命令行中加上–sV选项来启用该模式——专门用来查找使用SSL进行封装的服务。安全漏洞扫描程序Nessus也能对所有使用SSL/TLS封装的服务进行检查。

相关文档
最新文档