Heartbleed
心脏出血是OpenSSL1.0.1版本至OpenSSL1.0.1f Beta1版本中存在漏洞,该漏洞中文名称为心脏滴血,英文名称为HeartBleed。其中Heart是指该漏洞位于心跳协议上,Bleed是因为该漏洞会造成数据泄露。即HeartBleed是在心跳协议上的一个数据泄露漏洞,OpenSSL库中用到了该心跳协议。HeartBleed主要存在与OpenSSL的1.0.1版本到1.0.1f版本。利用该漏洞,攻击者可以远程读取服务器内存中64K的数据,获取内存中的敏感信息。
漏洞描述
Heartbleed漏洞,这项严重缺陷(CVE-2014-0160)的产生是由于未能在memcpy()调用受害用户输入内容作为长度参数之前正确进行边界检查。攻击者可以追踪OpenSSL所分配的64KB缓存、将超出必要范围的字节信息复制到缓存当中再返回缓存内容,这样一来受害者的内存内容就会以每次64KB的速度进行泄露。
漏洞复现
准备条件
kali中vulhub靶场搭建详细教程【安装安装docker和docker-compose等工具】
kali中vulhub靶场搭建详细教程_kali搭建靶场_芝士TOM的博客-CSDN博客
具体步骤
- 在攻击机kali中进入CVE-2014-086目录,显示里边的内容
- 使用docker-compose up -d启动漏洞环境
- 在浏览器访问docker机器的IP加上8443端口查看到以下界面,即搭建成功
- 在靶机上使用nmap扫描此IP是否存在漏洞
- 扫描存在漏洞,然后使用msfconsole进行漏洞利用,msf搜索漏洞相关模块search heartbleed
- 使用use 1攻击模块,使用options查看那些需要配置
- 配置参数——使用set rhosts 设置IP,set rport 设置为8443,并且存在漏洞使用set verbose开启信息展示,进行利用,使用options查看刚才的配置。
- 进行攻击——使用run查看是否存在漏洞,这里就可以看到 靶机的64KB信息了(如果有人此时在登录web应用,还可以直接抓到账号密码等信息)。
修复方案
OpenSSL“心脏出血”漏洞(CVE-2014-0160)受影响的OpenSSL版本:
OpenSSL 1.0.2-beta
OpenSSL 1.0.1 - OpenSSL 1.0.1f
要解决此漏洞,简单粗暴的方法就是升级openSSL软件。
建议服务器管理员或使用1.0.1g版,或使用-DOPENSSL_NO_HEARTBEATS选项重新编译OpenSSL,从而禁用易受攻击的功能,直至可以更新服务器软件。
1.将受影响的服务器下线,避免它继续泄露敏感信息。
2.停止旧版的 openssl 服务,升级 openssl 到新版本,并重新启动。
3.生成新密钥。(因为攻击者可能通过漏洞获取私钥。)将新密钥提交给你的CA,获得新的认证之后在服务器上安装新密钥。
4.服务器上线。
5.撤销旧认证。
6.撤销现有的会话cookies。
7.要求用户修改密码。
Heartbleed 是在 8 年多前被发现并修补的,然而许多服务器仍然存在 Heartbleed 漏洞