[漏洞复现] [Vulhub靶机] OpenSSL Heartbleed Vulnerability (CVE-2014-0160)
免责声明:本文仅供学习研究,严禁从事非法活动,任何后果由使用者本人负责。
0x00 背景知识
传输层安全协议SSL
安全套接字协议SSL(Secure Sockets Layer),及其继任者传输层安全协议TLS(Transport Layer Security)是为网络通信提供安全及数据完整性的一种安全协议,它们在传输层与应用层之间对网络连接进行加密。
例如,常见的HTTPS协议,就是由HTTP加上SSL/TLS协议构建的可进行加密传输、身份认证的网络协议,实现互联网数据传输安全。当用户访问安全网站时,在URL地址旁会有一个“锁”,就表明我们与该网站之间的通讯信息都被加密。在 Microsoft Edge 中安全浏览 Web。
另外,这两种协议没有固定的端口。根据是否使用了传输层安全协议,应用层协议的端口会有不同。例如:http协议是80端口,https是443端口,常用的邮件服务器SSL/非SSL协议端口号。
OpenSSL
OpenSSL是一个开源的SSL安全软件包,是SSL协议的实现程序。网站的开发者要使用SSL,就会选择在自己的网站中导入openSSL软件包,实现网站数据加密。
0x01 漏洞介绍
漏洞成因
OpenSSL有一个叫Heartbeat(心跳检测)的拓展,它允许连接SSL一端的电脑发出一条简短的信息Client Hello问询来检测对方服务器是否正常在线,若服务器返回Server hello,则表明可以正常SSL通讯。
每次问询,A都会向服务器B发送请求包,其中含有包的类型(type)和数据长度(Length)等信息,而服务器B返回一个包含有请求包内容的响应包。OpenSSL心脏出血漏洞产生的主要原因是,OpenSSL的心跳处理逻辑没有检测心跳包中的长度字段值是否和实际长度相吻合,导致攻击者可以构造异常数据包,来直接获取心跳数据所在的内存区域的后续数据,于是形成了内存数据的越界访问(信息泄露)。通过不断进行心跳检测,就能一点点泄露服务器的数据,这就是心脏滴血(Heartbleed)漏洞。
当B收到A的请求包后,并没有的验证A包的实际长度,而是简单的把请求包data中说明的长度当作data的实际长度,于是当请求包中说明的长度与请求包数据实际长度不同时,问题就产生了。假设A构造一个请求包,它的实际内容长度只有1,而却告诉B的它的长度是65535,那么B接受到这个包后就会把A的内容完全当作65535来处理,其实到这里,问题还并不严重,最严重的问题出在,心跳的响应包还需要附带请求包的全部内容,这就需要程序做一次将请求包的数据从它所在的内存拷贝到响应包的内存里的操作。
这下就出大问题了,当拷贝的时候,程序认为A包的内容长度是65535个字节,结果A包在内存里面实际只有1个字节,于是程序不仅拷贝出了A包的内容,还“傻傻”地将A包数据在内存中位置后额外的65534个字节拷贝进了响应包里,并将这个响应包发还给了A,于是A便轻易地获得了B内存中这65534个字节的数据。想象一下,如果这65534个字节数据中包括一些敏感信息,那么后果将非常严重。而且A还可以简单地通过连续的发送心跳包,获取B机器内存中n个65534字节的数据。
摘自:https://blog.csdn.net/weixin_39190897/article/details/106879383
漏洞危害
攻击者可以利用该漏洞,远程读取服务器内存中64K的敏感数据(OpenSSL分配的缓存为64KB),这些数据里可能包括用户的登录账号密码、电子邮件甚至是加密私钥,用户cookie等信息。
不同OpenSSL版本,Heartbleed漏洞存在情况
漏洞影响
由于互联网应用最广泛的安全传输方法就是SSL,而OpenSSL又是多数SSL加密网站使用的开源软件包,所以漏洞影响范围广大,一时间席卷全球各个互联网相关领域,网银、在线支付、电商网站、门户网站、电子邮件等无一幸免。
0x02 漏洞复现
环境搭建
漏洞扫描/检测
- URL“心脏滴血”漏洞检测网站
- 使用Nmap扫描脚本对靶机进行漏洞检测:
- 使用AWVS对目标服务器进行漏洞扫描
使用Vulnhub官方POC复现
Python2运行ssltest.py,拿到敏感数据:
使用MSF进行漏洞利用
- 搜索openssl_heartbleed
- 使用auxiliary/scanner/ssl/openssl_heartbleed模块,设置好常规选项后还要使用
set verbose true
设置verbose参数为真,才能显示详细信息看到获取到的服务器内存信息。
- 实际攻击需要多次获取内存信息并进行整理,提取有用信息。
0x03 漏洞修复
升级openssl,还可以配合措施:修改服务器密码、重新配置私钥、重新配置证书。
相关链接
- SSL相关
SSL证书在线工具
心脏出血?这是什么漏洞? - 参考文章
Heartbleed心脏滴血漏洞总结(CVE-2014-0106)
渗透测试-Openssl心脏出血漏洞复现
心脏滴血漏洞详解及利用--HeartBleed With OpenSSL - 有待研究
心脏滴血HeartBleed漏洞研究及其POC
[漏洞复现] [Vulhub靶机] OpenSSL Heartbleed Vulnerability (CVE-2014-0160)的更多相关文章
- [漏洞复现] [Vulhub靶机] Tomcat7+ 弱口令 && 后台getshell漏洞
免责声明:本文仅供学习研究,严禁从事非法活动,任何后果由使用者本人负责. 0x00 背景知识 war文件 0x01 漏洞介绍 影响范围:Tomcat 8.0版本 漏洞类型:弱口令 漏洞成因:在tomc ...
- [漏洞复现] [Vulhub靶机] Struts2-045 Remote Code Execution Vulnerablity(CVE-2017-5638)
免责声明:本文仅供学习研究,严禁从事非法活动,任何后果由使用者本人负责. 0x00 背景知识 Apache Struts 2是美国Apache软件基金会的一个开源项目,是一套用于创建企业级Java W ...
- CVE-2019-11043 Nginx PHP 远程代码执行漏洞复现
漏洞背景:来自Wallarm的安全研究员Andrew Danau在9月14-16号举办的Real World CTF中,意外的向服务器发送%0a(换行符)时,服务器返回异常信息.由此发现了这个0day ...
- OpenSSL Heartbleed “心脏滴血”漏洞简单攻击示例
OpenSSL Heartbleed漏洞的公开和流行让许多人兴奋了一把,也让另一些人惊慌了一把. 单纯从攻击的角度讲,我已知道的,网上公开的扫描工具有: 1. Nmap脚本ssl-heartblee ...
- OpenSSL Heartbleed "心脏滴血"漏洞简单攻击示例
转自:http://www.lijiejie.com/openssl-heartbleed-attack/ OpenSSL Heartbleed漏洞的公开和流行让许多人兴奋了一把,也让另一些人惊慌了一 ...
- SSRF——weblogic vulhub 漏洞复现及攻击内网redis(一)(附批量检测脚本)
0X01 概述 SSRF(Server-Side Request Forgery, 服务端请求伪造)利用漏洞可以发起网络请求来攻击内网服务.利用SSRF能实现以下效果:1) 扫描内网(主 ...
- 漏洞复现环境集锦-Vulhub
0x01 Vulhub简介 Vulhub是一个面向大众的开源漏洞靶场,无需docker知识,简单执行两条命令即可编译.运行一个完整的漏洞靶场镜像. 0x02 安装 # 安装pip curl -s ht ...
- CVE¬-2020-¬0796 漏洞复现(本地提权)
CVE-2020-0796 漏洞复现(本地提权) 0X00漏洞简介 Microsoft Windows和Microsoft Windows Server都是美国微软(Microsoft)公司的产品 ...
- 【Vulhub】CVE-2019-3396 Confluence RCE漏洞复现
CVE-2019-3396 Confluence RCE漏洞复现 一.环境搭建 选择的vulhub里的镜像,进入vulhub/Confluence/CVE-2019-3396目录下,执行 docker ...
随机推荐
- vue入门文章
本来想自己写一篇关于vue入门的文章.但是看到链接的文章后,觉得写得太详细了,实在有保存下来的必要.后面可能在这篇文章基础上,有所内容的增加. CSS预处理器 定义了一种新的专门的编程语言,编译后成正 ...
- canvas元素内容生成图像文件
准备工作 想要将canvas元素当前显示的内容生成为图像文件,我们首先要获取canvas中的数据,在HTML5 <canvas>元素的标准中提供了toDataURL()的方法可以将canv ...
- 前端调试利器 - Charles
Docs 开发之 Charles 配置指南 1.下载与安装 charles-proxy-4.1.4 .dmg56.12 MB已存到云盘下载 2.激活 使用公司正版license 激活 安装证书 点击证 ...
- Muse UI遇到的坑
写在前面:我只是一个前端小白,文章中的提到可能会有不足之处,仅提供一个参考.若有不完善的地方,欢迎各位大佬指出,希望对你有帮助! 故事背景是这样的,最近做一个Vue项目,使用到 Muse UI 组件库 ...
- 【Android开发】毛玻璃效果
使用一:静态控件上使用 先附上自定义view-BlurringView public class BlurringView extends View { private int mDownsample ...
- 【每日日报】第五十三天---安装My SQL
1 2今天安装了My SQL并学习了一些基础的命令 mysql下载及安装教程 2 没有成功安装SQL Server,误删了一些文件 3 明天继续看视频 ------------------------ ...
- android.content.res.Resources$NotFoundException: String resource ID #0x0报错
报错:android.content.res.Resources$NotFoundException: String resource ID #0x0 原因:在setText()中使用了int型的参数 ...
- js判断json数据是否存在某字段的方法
方式一 !("key" in obj) if("name" in json){//json就是数组,name是你要找的值 console.log("有 ...
- Ubuntu安装docker(摘自官网,自用)
在 Ubuntu 上安装 Docker 引擎(按照标红顺序执行命令) 预计阅读时间:11分钟 适用于 Linux 的 Docker 桌面 Docker Desktop 可帮助您在 Mac 和 Wind ...
- k8s节点执行master命令报错 localhost:8080 was refused
首先是按照二进制方式安装的k8s. [root@ht22 calico]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) [ ...