OpenSSL Heartbleed Vulnerability (CVE-2014-0160)
一 什么是心脏滴血漏洞
心脏出血漏洞”是指openssl这个开源软件中的一个漏洞,因为该软件使用到一个叫做heartbeat(中文名称为心跳)的扩展,恰恰是这个扩展出现了问题,所以才将这个漏洞形象的称为心脏滴血漏洞。
二 什么是ssl
OpenSSL是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连接者的身份。这个包广泛被应用在互联网的网页服务器上。下图是知名的心脏滴血漏洞图片。
三 漏洞描述
Heartbleed漏洞是由于未能在memcpy()调用受害用户输入内容作为长度参数之前正确进行边界检查。攻击者可以追踪OpenSSL所分配的64KB缓存、将超出必要范围的字节信息复制到缓存当中再返回缓存内容,这样一来受害者的内存内容就会以每次64KB的速度进行泄露。
四 漏洞危害
可能可以获取到服务器的私钥,用户cookie和密码等。
五 漏洞复现详解
1 首先打开vulhub 启动docker环境 docker-compose up -d 如图所示
2 然后打开http://192.168.213.129 看到如下界面 hello
3 使用nmap 的脚本进行检测漏洞是否存在。nmap -sV -p 443 --script ssl-heartbleed.nse 127.0.0.1如下图所示
4 使用msf进行漏洞利用。我们打开msf 查找heartbleed模块:如下图所示 #msf>search heartbleed
5 查看需要设置哪些选项 msf6 auxiliary(scanner/ssl/openssl_heartbleed)> show options
这里我们需要设置RHOSTS,RPORT 设置verbose,这个设置要设置成true才能看到泄露的信息
具体如下图所示
6 执行exploit 会得到结果 如下图所示 这就是整个漏洞复现过程
六 漏洞修复
1.将受影响的服务器下线,避免它继续泄露敏感信息。
2.停止旧版的 openssl 服务,升级 openssl 到新版本,并重新启动。
3.生成新密钥。(因为攻击者可能通过漏洞获取私钥。)将新密钥提交给你的CA,获得新的认证之后在服务器上安装新密钥。