当前位置: 首页 > news >正文

心脏滴血漏洞详解(CVE-2014-0160)

参考链接:心脏滴血漏洞利用(CVE-2014-0160)_cve-2014-0160漏洞禁用443端口-CSDN博客

目录

OpenSSL简介

漏洞原理

影响版本

漏洞复现

漏洞利用

修复方案


OpenSSL简介

OpenSSL是一个开放源代码的软件库包,提供了一组加密和认证协议,用于保护网络连接和数据传输的安全性。它实现了SSLTLS协议,包含了主要的密码算法、常用的密钥和整数封装管理功能。OpenSSL的作用是提供安全通信和数据加密的功能,在数据安全存储、数据传输、身份验证等领域中发挥着重要作用。

漏洞原理

这个漏洞的来源是因为OpenSSL软件中使用到一个叫做heartbeat的扩展,这个扩展出现问题才将这个漏洞形象的称为“心脏出血”。

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

描述的再详细点,首先要知道OpenSSL处理TLS心跳的流程是:A向B发送请求包,B收到包后读取这个包的内容(包含包的类型和数据长度等信息),处理后返回一个包含有请求包内容的响应包。

举个例子:A向B发送请求包,B收到A的请求包后,并没有去验证A包的实际长度,而是直接将请求包中的数据长度信息值作为data的实际长度,于是当请求包中说明的数据长度和请求包的数据的实际长度不相同时就会出现问题,因为响应包需要包含请求包的全部内容,程序就会将请求包的数据从它的内存中拷贝过来,如果长度不同,那么就会将B内存的内容一起拷贝,导致信息泄露。

比如实际长度只有1,而说明长度有65535,那么B就会把A的内容当作65535长度进行处理,B程序要拷贝的是65535长度的内容,但是实际长度只有1,所以就会将内存位置后额外的65534个字节拷贝到了响应包中,并且将这个响应包发送给了A,于是A能够轻而易举的得到B内存的数据。

所以说受害者的内存内容会以每次接近64KB的速度进行泄露。

影响版本

OpenSSL 1.0.1

漏洞复现

使用vulhub靶场进行复现。

cd /vulhub/openssl/CVE-1014-0160docker-compose up -d docker ps

进行信息收集,使用nmap扫描开放端口:

然后使用nmap自带的ssl-heartbleed.nse脚本进行漏洞扫描探测:

存在该漏洞,可以使用Msfconsole工具进行脚本攻击利用:

msfconsole
search heartbleed
use 1

然后查看需要配置的参数:

 可知需要配置攻击者的ip和端口

 然后还需要设置一个verbose参数为true,目的是为了能够看到泄露的信息,设置后进行攻击

 就可以看到靶机的信息了

 

漏洞利用

使用fofa语法搜一下存在心脏滴血的网站

使用kali攻击

修复方案

升级版本

仅供学习参考!!!!

相关文章:

  • ubuntu 如何使用阿里云盘
  • 基于华为ensp的企业网络规划(新版)
  • mosquitto - 笔记
  • 在Ubuntu20.04(原为cuda12.0, gcc9.几版本和g++9.几版本)下先安装cuda9.0后再配置gcc-5环境
  • Linux 常用命令 chattr
  • 素数问题 python
  • 就业班 第二阶段 2401--3.19 day4 主从复制
  • 初级爬虫实战——哥伦比亚大学新闻
  • 开源的OCR工具基本使用:PaddleOCR/Tesseract/CnOCR
  • JavaScript 权威指南第七版(GPT 重译)(二)
  • 【Qt5】QVariant
  • 力扣Lc18--- 168. Excel表列名称(java版)-2024年3月19日
  • 如何使用 Elasticsearch 作为向量数据库
  • 代码审计与web安全-第四章作业
  • 链表oj测试题(上)
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • MySQL几个简单SQL的优化
  • Python socket服务器端、客户端传送信息
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 复杂数据处理
  • 工作手记之html2canvas使用概述
  • 欢迎参加第二届中国游戏开发者大会
  • 聚簇索引和非聚簇索引
  • 扑朔迷离的属性和特性【彻底弄清】
  • 前端性能优化--懒加载和预加载
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (四)Linux Shell编程——输入输出重定向
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • (转)菜鸟学数据库(三)——存储过程
  • .NET CORE 第一节 创建基本的 asp.net core
  • .net core控制台应用程序初识
  • .NET delegate 委托 、 Event 事件,接口回调
  • .Net MVC + EF搭建学生管理系统
  • .NET 发展历程
  • .net 托管代码与非托管代码
  • .NET/C# 使窗口永不激活(No Activate 永不获得焦点)
  • .net实现头像缩放截取功能 -----转载自accp教程网
  • .net知识和学习方法系列(二十一)CLR-枚举
  • @Transient注解
  • [ 环境搭建篇 ] 安装 java 环境并配置环境变量(附 JDK1.8 安装包)
  • [ 云计算 | AWS ] AI 编程助手新势力 Amazon CodeWhisperer:优势功能及实用技巧