Heartbleed(心脏出血)漏洞复现


心脏出血(英语:Heartbleed),也简称为心血漏洞,是一个出现在加密程序库OpenSSL的安全漏洞,该程序库广泛用于实现互联网的传输层安全(TLS)协议。它于2012年被引入了软件中,2014年4月首次向公众披露。只要使用的是存在缺陷的OpenSSL实例,无论是服务器还是客户端,都可能因此而受到攻击。此问题的原因是在实现TLS的心跳扩展时没有对输入进行适当验证(缺少边界检查),因此漏洞的名称来源于“心跳”(heartbeat)。该程序错误属于缓冲区过读,即可以读取的数据比应该允许读取的还多。

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

这是我在实验室学习渗透测试所做的第十个漏洞复现,中间出现了两个棘手的问题,但现在看起来也都是一些低级错误。

实验环境

攻击机:Kali Linux

靶机:CentOS7

复现过程

1. 安装OpenSSL 1.0.1

首先查看靶机openssl的版本,Heartbleed漏洞影响的openssl版本主要有1.0.1,1.0.1a,1.0.1b,1.0.1c,1.0.1d,1.0.1e,1.0.1f,Beta 1 of OpenSSL 1.0.2等。如果版本不符合,则卸载原版本后前往官网下载老版本。

网络上有不少博客说使用yum remove openssl后会出问题,我一开始没敢尝试,后来试了一下,又安装1.0.1版本,结果openssl version显示的仍为原来的高版本。再后来重置了一下CentOS7,再使用yum remove openssl后没出现问题。原来出问题可能是我在卸载原来的openssl之前就试图安装1.0.1版本的openssl,结果需要的版本没成功安装上,原来的也因为部分文件覆盖而出了什么问题。

2. 关闭靶机防火墙和selinux

# 关闭selinux
vi /etc/selinux/config
# 打开该文件后,将"SELINUX=xx"改为"SELINUX=disabled"

修改完成后重启靶机,/usr/sbin/sestatus -v查看selinux状态。

# 关闭防火墙
systemctl stop firewalld.service 

3. 靶机安装docker-compose

# 安装
curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 将可执行权限应用于二进制文件
chmod +x /usr/local/bin/docker-compose
# 创建软链
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
# 检查是否安装成功
docker-compose --version

4. 配置docker-compose运行环境

我最开始参考的博客在这里说得不太清楚,我以为安装好docker-compose后,配置文件只要足够它运行即可,所以就直接复制粘贴了菜鸟教程上给出的示例,虽然成功运行了,但是在攻击机用nmap扫描不到漏洞。我看了几篇其他的博客,都没有用到docker-compose,还以为是配置文件哪里出了问题,自己尝试着修改,但没有成功。后来终于找到了一篇使用docker-compose复现该漏洞的博客,才发现docker-compose运行的配置文件需要在Github下载

下载完成后,找到openssl/heartbleed目录,执行以下命令,在后台创建服务。

docker-compose up -d

等待一段时间后,服务创建成功。

输入docker ps查看服务运行状态(第一行,漏洞存在于443端口)。

5. 攻击机扫描漏洞

nmap -sV -p 443 --script ssl-heartbleed.nse 192.168.227.138

可以看到,靶机存在heartbleed漏洞。

6. 攻击

打开kali,msfconsole启动msf,扫描Heartbleed漏洞的相关模块。

使用攻击模块,并进行相关的配置(在这里只需要配置一下靶机IP)。

输入run开始攻击。

第一行的内容表示漏洞确实存在并可以利用,将verbose设置为true,再次攻击,显示整个过程以及leak出来的数据。


文章作者: 恰醋
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 恰醋 !
评论
 上一篇
CVE-2014-4877漏洞复现 CVE-2014-4877漏洞复现
Wget 处理符号链接的方式存在缺陷,可能导致恶意代码执行。
2020-09-22
下一篇 
OpenSSH命令注入漏洞复现 OpenSSH命令注入漏洞复现
2020年6月9日,研究人员Chinmay Pandya在Openssh中发现了一个漏洞,于7月18日公开。OpenSSH的8.3p1中的scp允许在scp.c远程功能中注入命令,攻击者可利用该漏洞执行任意命令。目前绝大多数linux系统受影响。
2020-09-10
  目录