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

WinRAR存在严重的安全漏洞影响5亿用户

WinRAR可能是目前全球用户最多的解压缩软件,近日安全团队发现并公布了WinRAR中存在长达19年的严重安全漏洞,这意味着有可能超过5亿用户面临安全风险。
图片描述

该漏洞存在于所有WinRAR版本中包含的UNACEV2.DLL库中,该库负责以ACE格式解压缩档案,而自2005年起WinRAR已经停止更新UNACEV2.DLL,并决定放弃ACE归档格式支持。

研究人员在其中发现了一个路径遍历漏洞,可以把被压缩文件的文件提取到任意文件夹。攻击者通过利用恶意ACE档案伪装成RAR文件,用户在解压恶意的压缩文档时,WinRAR软件将恶意代码解压至系统自启动目录,当用户下次登陆电脑时系统将自动运行释放的恶意代码。

漏洞在CVE-2018-20250、CVE-2018-20251、CVE-2018-20252和CVE-2018-20253标识下进行跟踪。该漏洞影响WinRAR 5.61及以前的版本,目前最新版本已经放弃了对ACE格式的支持,从而消除该漏洞。

小伙伴们快检查一下自己的电脑,如果安装了WinRAR,安全起见一定要马上更新至最新版本。
说到安全漏洞,网安的朋友们一定不陌生,甚至有很多人是挖洞高手。那么栈溢出漏洞大家是否了解呢?

今天i春秋就为大家介绍一个在国内的CTF比赛中,PWN题最常见考点——缓冲区溢出漏洞,而缓冲区溢出代表就是栈溢出漏洞,我们一起来学习一下吧。

基础知识

栈是一种先进后出的数据结构,从高地址向低地址增长的内存结构。

函数调用栈是指程序运行时内存一段连续的区域,用来保存函数运行时的状态信息,包括函数参数与局部变量等,是系统栈的一部分。

在一次函数调用中,函数调用栈中将被依次压入:函数实参、返回地址、EBP。如果函数有局部变量,那就在栈中开辟相应的空间以构造变量。

图片描述

ESP 称为栈顶指针,用来指示当前栈帧的顶部。

EBP 称为栈基址指针,用来指示当前栈帧的底部。

漏洞原理

栈溢出漏洞是由于使用了不安全的函数,如C中的 read(fd, buf, nbytes)、gets(s)等,通过构造特定的数据使得栈溢出,从而导致程序的执行流程被控制。

当程序代码如下时:
图片描述

当构造变量char s[12]时,系统就在栈中给s开辟栈空间,可gets(s)函数未限制输入字符长度,可以构造大量的数据来超出变量的空间从而造成溢出,覆盖到s以上的栈空间。
图片描述

解题步骤

图片描述

例举一道栈溢出的PWN题,根据解题步骤来解答。

1、逆向工程:

将PWN题拖入IDA,点击程序入口函数。按F5逆向main函数,查看对应的C伪代码。

main函数调用vulnerable()函数。
图片描述

点击进入vulnerable()函数并F5逆向。
图片描述

vulnerable()函数中调用了gets()和puts()函数,而程序的逻辑就运行main函数和vulnerable函数。

vulnerable函数功能:输入字符串,输出字符串

程序中主要函数有:

内置行数:gets、puts、system

自定义函数:main、test、success

2、分析代码:

进行逆向工程拿到C伪代码,代码大致如下:
图片描述

gets() 是一个危险函数,因为它不检查输入字符串的长度,而是以回车来判断是否输入结束,所以很容易导致栈溢出。

3、漏洞利用:

查看程序的保护机制:
图片描述

程序在无任何保护的情况下进行解题:
图片描述

输入s的值溢出到返回地址,将返回地址替换成text函数的起始地址。

查看text函数的起始地址。

图片描述

EBP与EBP的距离14H,而栈中的EBP占栈内存4H,所以要覆盖到放回地址需要18H。

图片描述

编写脚本如下:
图片描述

利用脚本后的栈结构如下:
图片描述

所以当函数调用完毕后,执行返回地址时将执行text函数。

运行脚本,成功运行text函数:
图片描述

4、getshell:

分析代码发现程序中有getshell函数,这时就不需要构造shellcode,直接溢出返回地址,让程序执行此函数。

图片描述

查看success函数地址:
图片描述

脚本如下:
图片描述
运行脚本,成功拿到shell:
图片描述

以上就是今天的全部内容,大家对栈溢出漏洞都了解了吧,相信对于新手小白来说也是一个学习的知识点,要好好掌握哦!

相关文章:

  • Git知识
  • cd命令
  • Mac 命令行美化
  • 写给自己看的发布react静态资源的方法
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • spring + angular 实现导出excel
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • Git for Windows 2.21.0 发布,Win 下的 Git 客户端
  • 聊聊flink的BlobWriter
  • PDF旋转使用的转换器有哪些
  • luoguP4647 [IOI2007] sails 船帆
  • 乐视云计算被列入失信名单;三星华为达成和解;Python3 采用率超 84%丨Q新闻
  • django -- 修改admin 密码问题
  • Java 最常见的 200+ 面试题:面试必备
  • lvm管理卷之缩减卷大小
  • CSS 提示工具(Tooltip)
  • JavaScript类型识别
  • mysql_config not found
  • orm2 中文文档 3.1 模型属性
  • Python学习之路13-记分
  • react 代码优化(一) ——事件处理
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • vue学习系列(二)vue-cli
  • webgl (原生)基础入门指南【一】
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 判断客户端类型,Android,iOS,PC
  • 使用 QuickBI 搭建酷炫可视化分析
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 用mpvue开发微信小程序
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • Spring第一个helloWorld
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • 说说我为什么看好Spring Cloud Alibaba
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • #1014 : Trie树
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (备忘)Java Map 遍历
  • (分类)KNN算法- 参数调优
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
  • (转)memcache、redis缓存
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .NET Core 版本不支持的问题
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性
  • .NET 的程序集加载上下文
  • @Autowired注解的实现原理
  • [Android Pro] listView和GridView的item设置的高度和宽度不起作用
  • [Angular] 笔记 8:list/detail 页面以及@Input
  • [C#]C# winform实现imagecaption图像生成描述图文描述生成