Winrar目录穿越漏洞复现

1、漏洞概述

  WinRAR 是一款功能强大的压缩包管理器,它是档案工具RAR在Windows环境下的图形界面。2019年 2 月 20 日Check Point团队爆出了一个关于WinRAR存在19年的漏洞,用它来可以获得受害者计算机的控制。攻击者只需利用此漏洞构造恶意的压缩文件,当受害者使用WinRAR解压该恶意文件时便会触发漏洞。

  该漏洞是由于 WinRAR 所使用的一个陈旧的动态链接库UNACEV2.dll所造成的,该动态链接库在 2006 年被编译,没有任何的基础保护机制(ASLR, DEP 等)。动态链接库的作用是处理 ACE 格式文件。而WinRAR解压ACE文件时,由于没有对文件名进行充分过滤,导致其可实现目录穿越,将恶意文件写入任意目录,甚至可以写入文件至开机启动项,导致代码执行。

影响版本:

  WinRAR < 5.70 Beta 1

  Bandizip < = 6.2.0.0

  好压(2345压缩) < = 5.9.8.10907

  360压缩 < = 4.0.0.1170

漏洞危害:

  通过这个漏洞黑客可以将恶意程序放入用户启动项,当目标电脑重新启动时获取目标主机的权限。替换任意dll文件或覆盖任意配置文件。

漏洞细节: 

https://research.checkpoint.com/extracting-code-execution-from-winrar/

  漏洞主要是由Winrar用来解压ACE压缩包采用的动态链接库unacev2.dll这个dll引起的。unacev2.dll中处理filename时只校验了CRC,黑客可以通过更改压缩包的CRC校验码来修改解压时候的filename来触发这个Path Traversal漏洞。但是Winrar本身检测了filename,有一些限制并且普通用户解压RAR文件时候不能将我们恶意的Payload解压到需要System权限的文件夹。所以当用户将文件下载到默认的C:\Users\Administrator\Downloads 目录下时,我们通过构造

    C:\C:C:../AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\test.exe

  经过Winrar的CleanPath函数处理会变成

    C:../AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\test.exe

  其中C:会被转换成当前路径,如果用Winrar打开那么当前路径就是C:\Program Files\WinRAR,要是在文件夹中右键解压到xxx\那么当前路径就是压缩包所在的路径。

  当用户在文件夹中直接右键解压到xx那么我们恶意的payload解压地址就会变成

    C:\Users\Administrator\Downloads../AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\test.exe

  就是当前用户的启动项。这样一个利用完成了从一个Path Traversal到任意命令执行的过程。

2、漏洞复现

  所需软件:WinACE、Winhex/010Editor、Winrar5.50

(1)在桌面创建一个txt文件,hello.txt

(2)使用WinACE将hello.txt压缩,注意选择store full path.

(3)使用010Editor打开hello.txt,修改原路径为以下路径(启动项)

C:\C:C:../AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\hello.txt

(4)修改长度,选中路径,可见修改之前文件长度为29

(5)修改后选中文件长度为81

(6)因此修改以下位,值为51(因为81是十进制,所以要改为hex的16进制)

(7)同样,将以下文件长度改为70

(8)使用acefile.py进行解析ace文件,acefile.py文件地址(https://github.com/backlion/CVE-2018-20250/blob/master/acefile.py)

命令:

python acefile.py --headers hello.ace

报错,且提示正确的crc为0xa350,修改文件crc为50 a3 顺序从右到左。

修改后未报错则说明修改成功

(9)使用Winrar解压缩即可将hello.txt释放到C:\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

(10)如果将hello.txt换为后门则可以配合msf远程控制受害机器

https://github.com/backlion/CVE-2018-20250

GitHub的POC-exp.py可以制作一个含有exe文件的漏洞压缩包,只要用户使用低版本的Winrar即可被种下exe后门。

 

3、修复建议:

  1. 升级到最新版本,WinRAR 目前版本是 5.70 Beta 1

  2. 删除其安装目录下的UNACEV2.dll文件

4、参考:

https://research.checkpoint.com/extracting-code-execution-from-winrar/

https://www.cnblogs.com/backlion/p/10417985.html

转载于:https://www.cnblogs.com/pureqh/p/10422999.html

Winrar目录穿越漏洞复现相关推荐

  1. winrar目录穿越漏洞(更新经验)

    原文地址:http://www.cnblogs.com/dadawang/p/10426425.html 方法总结: 1.用Winace建立压缩包: 2.修改exe路径为系统启动目录(C:\C:C:. ...

  2. CVE-2021-41773 CVE-2021-42013 Apache HTTPd最新RCE漏洞复现 目录穿越漏洞

    给个关注?宝儿! 给个关注?宝儿! 给个关注?宝儿! 关注公众号:b1gpig信息安全,文章推送不错过 CVE-2021-41773漏洞描述: Apache HTTPd是Apache基金会开源的一款流 ...

  3. Nginx漏洞修复之目录穿越(目录遍历)漏洞复现及修复

    Nginx漏洞修复之目录穿越[目录遍历]漏洞复现及修复 漏洞描述 漏洞复现 环境搭建 漏洞验证 漏洞修复 参考链接 漏洞描述 前言 Nginx是一个高性能的HTTP和反向代理服务器,经常被做为反向代理 ...

  4. php目录遍历漏洞复现,nginx解析漏洞,配置不当,目录遍历漏洞环境搭建、漏洞复现...

    nginx解析漏洞,配置不当,目录遍历漏洞复现 1.Ubuntu14.04安装nginx-php5-fpm 安装了nginx,需要安装以下依赖 sudo apt-get install libpcre ...

  5. nginx配置错误导致的目录穿越漏洞

    背景 nginx之前被发现alias配置指令使用不当,会导致目录穿越漏洞,参考:https://github.com/yandex/gixy/blob/master/docs/en/plugins/a ...

  6. Nginx目录穿越漏洞

    Nginx目录穿越漏洞 影响版本:全版本 影响说明:信息泄漏 环境说明:Nginx 1.13.0 漏洞复现: Nginx的目录穿越漏洞严格定义的话,并非是漏洞,而是Nginx的特性,由于运维人员或者开 ...

  7. Apache HTTP Server 2.4.49 路径穿越漏洞复现及利用

    漏洞介绍 Apache HTTP Server是Apache基金会开源的一款流行的HTTP服务器.在其2.4.49版本中,引入了一个路径穿越漏洞,满足下面两个条件的Apache服务器将会受到影响: 版 ...

  8. CVE-2021-41773 Apache2.4.49路径穿越漏洞复现

    CVE-2021-41773 Apache2.4.49路径穿越漏洞复现 1. 环境搭建 (1) 下载Apache2.4.49版本镜像 $ docker pull httpd:2.4.49 查看镜像是否 ...

  9. 漏洞复现----12、Apache Flink目录穿越漏洞(CVE-2020-17519 )

    文章目录 一.漏洞简介 二.漏洞复现 一.漏洞简介 Apache Flink 1.11.0中引入的更改,允许攻击者通过JobManager进程的REST接口读取JobManager本地文件系统上的任何 ...

最新文章

  1. avalon数据已更新,视图未更新的bug修复
  2. MyBatisPlus中全局Sql注入器应用_逻辑删除使用
  3. 虚拟主机 php .htacess,LiteSpeed添加虚拟主机+支持htaccess图文教程
  4. PHP Token(令牌)设计
  5. 信息学奥赛一本通(1049:晶晶赴约会)
  6. [转]Effective C# 原则7: 选择恒定的原子值类型数据
  7. 开源mes系统_如何让iMES系统快速落地变得so easy?
  8. Sqlite中的字符串连接
  9. hadoop的几个常用命令
  10. 神奇DP [HNOI2004] 打砖块
  11. QT_布局管理器 网格布局管理器 QGridLayout 超简单
  12. DB2 数据库软件下载
  13. 海思烧录工具Hitool使用方法
  14. SPSS教程—实现多层感知器神经网络
  15. python 豆瓣评论分析方法_基于Python的豆瓣影评分析——数据预处理
  16. vue调用手机浏览器打开pdf_在微信中调用外部浏览器实现文件下载之解决
  17. ERROR in ./src/vue/login.vue?vuetype=templateid=28b333d2 2:0 Module parse failed: Unexpected toke
  18. (转贴)汉字转拼音缩写
  19. 关于no ‘read’ permission
  20. VINS-Mono之后端非线性优化 (目标函数中视觉残差和IMU残差,及其对状态量的雅克比矩阵、协方差递推方程的推导)

热门文章

  1. java 11-7String类里的方法的一些案例
  2. 从一个数组中提取出第start位到第end位
  3. 推荐13个CSS3快速开发工具
  4. vs2010 将.mc编译为.rc文件
  5. Wijmo 更优美的jQuery UI部件集:爱上 ThemeRoller
  6. mysql数据库主要用来做什么的_为什么有了 MySQL ,还要有时序数据库?
  7. 4.PHP正则表达式与数组
  8. hdu1824 基础2sat
  9. 【Android 应用开发】Canvas 精准绘制文字 ( 测量文本真实边界 | 将文本中心点与给定中心点对齐 )
  10. 【AOP 面向切面编程】Android Studio 使用 AspectJ 监控方法运行 ( 定义连接点注解 | 定义 Aspect 切面 | 定义切入点 | 逐个处理切入点的各个连接点 )