该漏洞被归为缓冲过度读取。缓冲过度读取错误是软件可以读取比应该被允许还多的数据。
1. 概述
Heartbleed错误(CVE-2014-0160)是OpenSSL库中的严重实施缺陷,它使攻击者能够从受害服务器的内存窃取数据。 被盗数据的内容取决于服务器内存中的内容。 它可能包含私钥,TLS会话密钥,用户名,密码,信用卡等。此漏洞是在执行Heartbeat协议,SSL / TLS使用它来保持连接活动。 本实验的目的是让学生了解这个漏洞的严重程度,攻击的工作原理以及如何解决这个问题。 受影响的OpenSSL版本范围为1.0.1到1.0.1f。 我们的Ubuntu VM的版本是1.0.1。
2. 实验环境
在本实验中,我们需要设置两个虚拟机:一个称为攻击者计算机,另一个称为受害服务器。我们使用预构建的SEEDUbuntu12.04 VM。 VM需要使用NAT网络适配器进行网络设置。这可以通过转到VM设置,选择网络,然后单击适配器标记将适配器切换到NAT-Network来完成。确保两个VM位于同一NAT网络上。此攻击中使用的网站可以是使用SSL / TLS的任何HTTPS网站。然而,由于攻击一个真实的网站是非法的,我们已经在我们的VM中设置了一个网站,并对我们自己的VM进行攻击。我们使用一个名为ELGG的开源社交网络应用程序,并将其托管在以下URL中:https://www.heartbleedlabelgg.com。
我们需要修改攻击者计算机上的/ etc / hosts文件,以将服务器名称映射到服务器VM的IP地址。搜索/ etc / hosts中的以下行,并将IP地址127.0.0.1替换为承载ELGG应用程序的服务器VM的实际IP地址。 127.0.0.1 www.heartbleedlabelgg.com
3. 实验任务
在进行实验任务之前,您需要了解Heartbeat协议的工作原理。 Heartbeat协议由两种消息类型组成:HeartbeatRequest包和HeartbeatResponse包。 客户端向服务器发送HeartbeatRequest包。 当服务器接收到它时,它在HeartbeatResponse数据包中发送一个接收到的消息的副本。 目标是保持持续连接状态。 协议如图1所示。
3.1 任务1:启动Heartbleed攻击。
在这项任务中,学生将在我们的社交网站上启动Heartbleed攻击,并看看可以实现什么样的损害。 Heartbleed攻击的实际损坏取决于服务器内存中存储的是什么类型的信息。 如果服务器上没有太多活动,您将无法窃取有用的数据。 因此,我们需要作为合法用户与Web服务器进行交互。 让我们以管理员身份执行操作,并执行以下操作:
在作为合法用户进行了足够的交互后,您可以启动攻击,并查看可以从受害服务器中获取的信息。 编写程序以从头开始执行Heartbleed攻击并不容易,因为它需要Heartbeat协议的低级知识。 幸运的是,其他人已经写了攻击代码。 因此,我们将使用现