[漏洞复现] [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 ...
随机推荐
- 对height 100%和inherit的总结
对height 100%和inherit的总结 欢迎大家来我的博客留言:https://sxq222.github.io/CSS%...博客主页:https://sxq222.github.io 正文 ...
- js 简易模块加载器 示例分析
前端模块化 关注前端技术发展的各位亲们,肯定对模块化开发这个名词不陌生.随着前端工程越来越复杂,代码越来越多,模块化成了必不可免的趋势. 各种标准 由于javascript本身并没有制定相关标准(当然 ...
- 移动端城市定位,城市区域代码adcode
使用高德定位API : AMap.Map('iCenter') AMap.CitySearch() 先在高德开放平台注册申请定位权限的key. 网站:高德开放平台 在需要定位的页面引入有定位key的s ...
- MySQL中MyISAM和InnoDB引擎的区别
区别: 1. InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个事 ...
- 解决stram++的host代理443端口被占用的问题(电脑有虚拟机进!!)
解决stram++的host代理443端口被占用的问题 一.steam++ 最近在用steam++这个开源且功能强大的加速器,过多就不介绍了 主页地址跳转:Steam++ - 主页 (steampp. ...
- Windows中Nginx配置nginx.conf不生效解决方法
转:https://lucifer.blog.csdn.net/article/details/83860644?utm_medium=distribute.pc_relevant.none-task ...
- window升级Nginx1.10到1.12.2
window升级Nginx较为简单,只需要修改配置文件,然后启动即可. 环境:window系统 服务器:10.123.98.92 Nginx目录:e:\hgeagle\nginx-1.10.1 旧版N ...
- What are PCIe Slots
https://www.hp.com/us-en/shop/tech-takes/what-are-pcie-slots-pc What are PCIe Slots and How Can I Us ...
- 安卓记账本开发学习day1
学习了一些简单的布局与界面设计
- 约定编程与Sping AOP
一.约定编程 Spring AOP是一种约定流程的编程,咱们可以先通过动态代理模式的实现来理解Spring AOP的概念. 代理的逻辑很简单,例如,当你需要采访一名儿童时,首先需要经过他父母的同意,在 ...