0x00 背景知识

传输层安全协议SSL

安全套接字协议SSL(Secure Sockets Layer),及其继任者传输层安全协议TLS(Transport Layer Security)是为网络通信提供安全及数据完整性的一种安全协议,它们在传输层与应用层之间对网络连接进行加密。

例如,常见的HTTPS协议,就是由HTTP加上SSL/TLS协议构建的可进行加密传输、身份认证的网络协议,实现互联网数据传输安全。当用户访问安全网站时,在URL地址旁会有一个“锁”,就表明我们与该网站之间的通讯信息都被加密。在 Microsoft Edge 中安全浏览 Web

[漏洞复现] [Vulhub靶机] OpenSSL Heartbleed Vulnerability (CVE-2014-0160)-LMLPHP

另外,这两种协议没有固定的端口。根据是否使用了传输层安全协议,应用层协议的端口会有不同。例如:http协议是80端口,https是443端口,常用的邮件服务器SSL/非SSL协议端口号

[漏洞复现] [Vulhub靶机] OpenSSL Heartbleed Vulnerability (CVE-2014-0160)-LMLPHP

OpenSSL

OpenSSL是一个开源的SSL安全软件包,是SSL协议的实现程序。网站的开发者要使用SSL,就会选择在自己的网站中导入openSSL软件包,实现网站数据加密。

0x01 漏洞介绍

漏洞成因

OpenSSL有一个叫Heartbeat(心跳检测)的拓展,它允许连接SSL一端的电脑发出一条简短的信息Client Hello问询来检测对方服务器是否正常在线,若服务器返回Server hello,则表明可以正常SSL通讯。

每次问询,A都会向服务器B发送请求包,其中含有包的类型(type)和数据长度(Length)等信息,而服务器B返回一个包含有请求包内容的响应包。OpenSSL心脏出血漏洞产生的主要原因是,OpenSSL的心跳处理逻辑没有检测心跳包中的长度字段值是否和实际长度相吻合,导致攻击者可以构造异常数据包,来直接获取心跳数据所在的内存区域的后续数据,于是形成了内存数据的越界访问(信息泄露)。通过不断进行心跳检测,就能一点点泄露服务器的数据,这就是心脏滴血(Heartbleed)漏洞。

漏洞危害

攻击者可以利用该漏洞,远程读取服务器内存中64K的敏感数据(OpenSSL分配的缓存为64KB),这些数据里可能包括用户的登录账号密码、电子邮件甚至是加密私钥,用户cookie等信息。

不同OpenSSL版本,Heartbleed漏洞存在情况

[漏洞复现] [Vulhub靶机] OpenSSL Heartbleed Vulnerability (CVE-2014-0160)-LMLPHP

漏洞影响

由于互联网应用最广泛的安全传输方法就是SSL,而OpenSSL又是多数SSL加密网站使用的开源软件包,所以漏洞影响范围广大,一时间席卷全球各个互联网相关领域,网银、在线支付、电商网站、门户网站、电子邮件等无一幸免。

0x02 漏洞复现

环境搭建

Vulhub

漏洞扫描/检测

  1. URL“心脏滴血”漏洞检测网站
  2. 使用Nmap扫描脚本对靶机进行漏洞检测:
    [漏洞复现] [Vulhub靶机] OpenSSL Heartbleed Vulnerability (CVE-2014-0160)-LMLPHP
  3. 使用AWVS对目标服务器进行漏洞扫描
    [漏洞复现] [Vulhub靶机] OpenSSL Heartbleed Vulnerability (CVE-2014-0160)-LMLPHP

使用Vulnhub官方POC复现

Python2运行ssltest.py,拿到敏感数据:
[漏洞复现] [Vulhub靶机] OpenSSL Heartbleed Vulnerability (CVE-2014-0160)-LMLPHP

使用MSF进行漏洞利用

  1. 搜索openssl_heartbleed
    [漏洞复现] [Vulhub靶机] OpenSSL Heartbleed Vulnerability (CVE-2014-0160)-LMLPHP
  2. 使用auxiliary/scanner/ssl/openssl_heartbleed模块,设置好常规选项后还要使用set verbose true设置verbose参数为真,才能显示详细信息看到获取到的服务器内存信息。
    [漏洞复现] [Vulhub靶机] OpenSSL Heartbleed Vulnerability (CVE-2014-0160)-LMLPHP
    [漏洞复现] [Vulhub靶机] OpenSSL Heartbleed Vulnerability (CVE-2014-0160)-LMLPHP
  3. 实际攻击需要多次获取内存信息并进行整理,提取有用信息。

0x03 漏洞修复

升级openssl,还可以配合措施:修改服务器密码、重新配置私钥、重新配置证书。


相关链接

  1. SSL相关
    SSL证书在线工具
    心脏出血?这是什么漏洞?
  2. 参考文章
    Heartbleed心脏滴血漏洞总结(CVE-2014-0106)
    渗透测试-Openssl心脏出血漏洞复现
    心脏滴血漏洞详解及利用--HeartBleed With OpenSSL
  3. 有待研究
    心脏滴血HeartBleed漏洞研究及其POC
05-24 12:02