CVE-2014-6321 schannel堆溢出漏洞分析

本文深入分析了CVE-2014-6321,这是一个存在于Microsoft schannel.dll中的TLS堆缓冲区溢出漏洞。文章介绍了SSL/TLS协议原理,包括Client Hello、Server Hello等步骤,接着详细讲解了漏洞的原理,并提供了环境搭建和POC构造的方法,揭示了如何通过操纵解码数据触发溢出。
摘要由CSDN通过智能技术生成

cssembly · 2014/12/05 12:09

0x00 背景


MS14-066 (CVE-2014-6321) 是存在于Microsoft的schannel.dll中的TLS堆缓冲区溢出漏洞。下面对原理以及poc构造进行分析。

0x01 SSL/TLS原理介绍


Https是一种基于SSL/TLS的Http,所有的http数据都是在SSL/TLS协议封装之上传输的。研究Https协议原理,最终其实是研究SSL/TLS协议。SSL协议,是一种安全传输协议。TLS是SSL v3.0的升级版,目前市面上所有的Https都是用的是TLS,而不是SSL。

TLS的握手阶段是发生在TCP三次握手之后。握手实际上是一种协商的过程,对协议所必需的一些参数进行协商。TLS握手过程分为四步,过程如下:

Client Hello


由于客户端对一些加解密算法的支持程度不一样,因此在 TLS握手阶段,客户端要告知服务端,自己支持哪些加密算法,所以客户端需要将本地支持的加密套件的列表传送给服务端。除此之外,客户端还要产生一个随机数,这个随机数一方面需要在客户端保存,另一方面需要传送给服务端,客户端的随机数需要跟服务端产生的随机数结合起来产生后面要讲到的Master Secret。

Server Hello


服务端在接收到客户端的Client Hello之后,服务端需要将自己的证书发送给客户端。这个证书是对于服务端的一种认证。在服务端向客户端发送的证书中没有提供足够的信息的时候,还可以向客户端发送一个Server Key Exchange。

对于非常重要的保密数据,服务端还需要对客户端进行验证,以保证数据传送给了安全的合法的客户端。服务端可以向客户端发出Cerficate Request消息,要求客户端发送证书对客户端的合法性进行验证。

跟客户端一样,服务端也需要产生一个随机数发送给客户端。客户端和服务端都需要使用这两个随机数来产生Master Secret。

最后服务端会发送一个Server Hello Done消息给客户端,表示Server Hello消息结束了。

Clien

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值