heartbleed漏洞分析与利用

Download Report

Transcript heartbleed漏洞分析与利用

heartbleed漏洞分析与利用
edu.51cto.com
edu.51cto.com
讲师: 徐元振
heartbleed漏洞分析与利用
edu.51cto.com
课程目录
Course Contents
漏洞分析
漏洞利用
漏洞修复
edu.51cto.com
openssl简介
 互联网上66% 的网站受到heartbleed漏洞影响,其
中包括yahoo,taobao等
edu.51cto.com
漏洞分析
 为什么叫做“心脏滴血”漏洞?
因为漏洞源于openssl对TLS/DTLS (transport layer security protocols)
协议心跳扩展功能的实现.
通过漏洞每次可以泄漏服务器内存64K大小的数据内容,其中可能
包含用户名、密码、私钥等敏感数据.
edu.51cto.com
漏洞分析

heatbeats作用是什么?
Heartbeat “Hello”
Heartbeat “Hello”




保持客户端与服务器的连接状态,类似于http协议中的keepalive作用
发送heatbeats包不需要与服务器之间进行认证
SSL heartbeats 定义于RFC6520 http://tools.ietf.org/html/rfc6520
heartbeats发送给服务器,服务器返回相同的数据,这样可以使客户端知道服务器依然保持连接和监听状态
edu.51cto.com
漏洞分析
 受影响的openssl版本
OpenSSL 1.0.1 - 1.0.1f 存在漏洞
OpenSSL 1.0.1g 不存在漏洞
OpenSSL 1.0.0 不存在漏洞
OpenSSL 0.9.8 不存在漏洞
edu.51cto.com
漏洞分析
 heartbeat数据结构体
struct hb
{
int type;
int length;
unsigned char *data;
};
type为heartbeat类型,length为data大小,而data字段的内容组成分为type字段占1个字节,payload字段占2个
字节,其余的为payload的具体内容
edu.51cto.com
漏洞分析
 Payload内容
字节序号
0
1-2
3-len
备注
类型,type
data中具体的内容的大小,payload
具体的内容,pl
假如客户端发送的data数据为"007abcdefg",那么服务器端解析可以得到type=0, payload=07,
pl='abcdefg',申请(1+2+7=10)大小的内存,然后再将type, payload, pl写到新申请的内存中
edu.51cto.com
漏洞分析
 漏洞代码(OpenSSL 中的 ssl/d1_both.c 文件中dtls1_process_heartbeat 函数)
………….
buffer = OPENSSL_malloc(1 + 2 + payload + padding); //根据 payload 分配内存,额外的3字节用于存
放类型和长度
………….
memcpy(bp, pl, payload); //填充回应包的载荷
edu.51cto.com
漏洞利用

nmap --script=ssl-heartbleed -p 443 www.example.com

python heartbleed-poc.py -p 443 www.example.com
edu.51cto.com
漏洞修复(服务器)


升级到openssl 1.0.1g或更新版本
重新编译openssl,在编译时增加参数
-DOPENSSL_NO_HEARTBEATS 关闭心跳扩展功能

撤销数字证书,以免证书被窃取后篡改使用Man-In-Middle攻击
edu.51cto.com
漏洞修复(客户端)




确保网站漏洞修复后修改密码
注意密码长度、复杂度
周期性的更改密码
用户尽量每个网站使用独立的密码,以免发生撞库
edu.51cto.com
Thank You !
edu.51cto.com
edu.51cto.com