概述
Heartbleed漏洞是由于未能在memcpy()调用受害用户输入内容作为长度参数之前正确进行边界检查。攻击者可以追踪OpenSSL所分配的64KB缓存、将超出必要范围的字节信息复制到缓存当中再返回缓存内容,这样一来受害者的内存内容就会以每次64KB的速度进行泄露。
主要影响范围是OpenSSL1.0.1
环境
ip | 操作系统 | |
靶机 | 192.168.74.161 | Ubuntu |
攻击主机 | 192.168.74.199 | kali |
漏洞复现
(一)容器环境准备
首先将https://github.com/vulhub/vulhub/tree/master/openssl/heartbleed链接中所有的文件down下来,保存到CVE-2014-0160文件夹中,我用容器起了一个Heartbleed的nginx靶机
然后启动docker拉镜像
systemctl start docker #启动docker
docker-compose build && docker-compose up -d #拉镜像并启动靶机环境
拉完镜像会启动nginx
执行下面这条命令查看正在运行的容器
docker ps #查看正在运行的容器
访问靶机的443端口也可以访问到心脏滴血的测试页面
(二)漏洞利用
利用https://github.com/vulhub/vulhub/blob/master/openssl/heartbleed/ssltest.py的ssltest.py脚本验证漏洞
在攻击主机kali上用python2.7执行
python ssltest.py 192.168.74.161
可以返回一些主页信息
再使用msf利用一下
首先搜索heartbleed漏洞
search heartbleed
使用第一个漏洞
use auxiliary/scanner/ssl/openssl_heartbleed
设置一些选项,rhost为靶机地址,rport为靶机端口
设置verbose,这个设置要设置成true才能看到泄露的信息
show options #查看一下设置好的配置
最后run执行
Heart response with leak说明存在心脏滴血漏洞,最后返回的信息如下
至此CVE-2014-0160漏洞心脏滴血复现完毕