Winrar目录穿越漏洞复现

 

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

 

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

Winrar目录穿越漏洞复现 Safe 第1张

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

Winrar目录穿越漏洞复现 Safe 第2张

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

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

 

Winrar目录穿越漏洞复现 Safe 第3张

Winrar目录穿越漏洞复现 Safe 第4张

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

Winrar目录穿越漏洞复现 Safe 第5张

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

Winrar目录穿越漏洞复现 Safe 第6张

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

 Winrar目录穿越漏洞复现 Safe 第7张

Winrar目录穿越漏洞复现 Safe 第8张

Winrar目录穿越漏洞复现 Safe 第9张

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

Winrar目录穿越漏洞复现 Safe 第10张

Winrar目录穿越漏洞复现 Safe 第11张

Winrar目录穿越漏洞复现 Safe 第12张

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

命令:

python acefile.py --headers hello.ace

Winrar目录穿越漏洞复现 Safe 第13张

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

Winrar目录穿越漏洞复现 Safe 第14张

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

Winrar目录穿越漏洞复现 Safe 第15张

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

Winrar目录穿越漏洞复现 Safe 第16张

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

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

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

Winrar目录穿越漏洞复现 Safe 第17张

Winrar目录穿越漏洞复现 Safe 第18张

 

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

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄