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

Winrar目录穿越漏洞复现的更多相关文章

  1. 【漏洞复现】WinRAR目录穿越漏洞(CVE-2018-20250)复现

    前言 这漏洞出来几天了,之前没怎么关注,但是这两天发现开始有利用这个漏洞进行挖矿和病毒传播了,于是想动手复现一波. WinRAR 代码执行相关的CVE 编号如下: CVE-2018-20250,CVE ...

  2. nginx目录穿越漏洞复现

    nginx目录穿越漏洞复现 一.漏洞描述 Nginx在配置别名(Alias)的时候,如果忘记加/,将造成一个目录穿越漏洞. 二.漏洞原理 1. 修改nginx.conf,在如下图位置添加如下配置 在如 ...

  3. winrar目录穿越漏洞

    地址: 参考: https://research.checkpoint.com/extracting-code-execution-from-winrar/ POC: https://github.c ...

  4. WinRAR目录穿越

    WinRAR目录穿越漏洞浅析及复现(CVE-2018-20250) 文章来源: https://www.t00ls.net/articles-50276.html EXP: https://githu ...

  5. nginx目录遍历漏洞复现

    nginx目录遍历漏洞复现 一.漏洞描述 Nginx的目录遍历与apache一样,属于配置方面的问题,错误的配置可导致目录遍历与源码泄露. 二.漏洞原理 1. 修改nginx.conf,在如下图位置添 ...

  6. 2020/1/31 PHP代码审计之目录穿越漏洞

    0x00 目录穿越 目录穿越(Directory Traversal)攻击是黑客能够在Web应用程序所在的根目录以外的文件夹上,任意的存取被限制的文件夹,执行命令或查找数据.目录穿越攻击,也与人称为P ...

  7. WinRAR代码执行漏洞复现

    漏洞介绍 WinRAR 是一款流行的解压缩工具,据其官网上发布的数据,全球有超过5亿的用户在使用 2019年2月20日,安全厂商 checkpoint 发布了名为<Extracting a 19 ...

  8. Nginx目录穿越漏洞

    Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器.Nginx经常被做为反向代理,动态的部分被proxy_pass传递给后端端口,而静 ...

  9. WinRAR 代码执行漏洞复现

    影响版本: WinRAR < 5.70 Beta 1 Bandizip    < = 6.2.0.0 好压(2345压缩)    < = 5.9.8.10907 360压缩    & ...

随机推荐

  1. 我的blog第一天

    今天是2017年6月13号,一个很平凡的日子,但是对我来说意义非凡.这是我开通博客的第一天,这是我写的第一篇文章. 先自我介绍一下,本人邢卜,河北石家庄人,生于89年6月,说到这我马上就要过生日了!嘿 ...

  2. JS BOM对象 History对象 Location对象

    一.BOM对象 BOM(浏览器对象模型),可以对浏览器窗口进行访问和操作 window对象 所有浏览器都支持 window 对象. 概念上讲.一个html文档对应一个window对象. 功能上讲: 控 ...

  3. 【转】ubuntu右键在当前位置打开终端

    ubuntu右键在当前位置打开终端   ubuntu增加右键命令:   在终端中打开   软件中心:   搜索nautilus-open-terminal安装   命令行:   sudo apt-ge ...

  4. Python爬虫实战---抓取图书馆借阅信息

    Python爬虫实战---抓取图书馆借阅信息 原创作品,引用请表明出处:Python爬虫实战---抓取图书馆借阅信息 前段时间在图书馆借了很多书,借得多了就容易忘记每本书的应还日期,老是担心自己会违约 ...

  5. linux下postgresql的安装与卸载

    安装: sudo apt-get update sudo apt-get install postgresql 启动: sudo /etc/init.d/postgresql start 查看是否启动 ...

  6. oracle使用索引和不使用索引性能分析

    首先准备一张百万条数据的表,这样分析数据差距更形象! 下面用分页表数据对表进行分析,根据EMP_ID 字段排序,使用索引和不使用索引性能差距! sql查询语法准备,具体业务根据具体表书写sql语法: ...

  7. 转:asp.net 中的viewstate

    概述 ViewState是一个被误解很深的动物了.我希望通过此文章来澄清人们对ViewState的一些错误认识.为了达到这个目的,我决定从头到尾详细的描述一下整个ViewState的工作机制,其中我会 ...

  8. [翻译] JTSReachability

    JTSReachabilit An adaptation of Apple's Reachability with some block-based conveniences. 这是一个苹果的网络检测 ...

  9. url用法

    url中的name用法: 0.定义主rul.py urlpatterns = [ url(r'^sinfors/', include('sinfors.urls', namespace="s ...

  10. 铁乐学python_md5校验两个文件的一致性

    # 写一个函数,参数是两个文件的路径 # 返回的结果是T/F # 判断两个文件的md5值是否相同 import hashlib def diff_md5(file1,file2): def chick ...