本文最后更新于 2019年03月01日 18:17 可能会因为没有更新而失效。如已失效或需要修正,请留言!

Winrar目录穿越漏洞复现

漏洞描述:

近日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

等等…

漏洞复现:

该漏洞的实现过程:首先新建一个任意文件,然后利用WinACE进行压缩,修改filename来实现目录穿越漏洞,可以将文件解压到任意目录中。

主要所需工具WinACE、010Editor。

下载WinACE并安装,安装完成后新建一个文本文件,名字任意。

Winrar目录穿越漏洞复现-ChaBug安全

然后利用WinACE进行压缩。

Winrar目录穿越漏洞复现-ChaBug安全

设置为store full path

3通过脚本检查rar的header信息,其脚本下载地址为:

https://raw.githubusercontent.com/backlion/acefile/master/acefile.py

使用命令python acefile.py --headers test.ace来读取该文件头信息

Winrar目录穿越漏洞复现-ChaBug安全

要注意这三块

hdr_crc

hdr_size

filename的长度

filename

使用010 Editor打开ace文件进行修改(这里要注意修改顺序是从后往前的)

Winrar目录穿越漏洞复现-ChaBug安全

如果要修改filename,则需要修改上面标注这几处。第一处为0xd9e2(hdr_crc),第二处为0x0027(hdr_size),第三处为0x0008(filename的长度),以及最后一处为filename

这里修改filename为d:\d:\test.txt

长度为14,对应的hex为0x000e

Winrar目录穿越漏洞复现-ChaBug安全

然后修改hdr_size,长度为45,对应的hex为0x002d

Winrar目录穿越漏洞复现-ChaBug安全

接下来就是修改hdr_crc了,这里有一个取巧的方法。

我们再次运行命令python acefile.py --headers test.ace

程序中断并提示CorruptedArchiveError: header CRC failed

定位到错误的位置

Winrar目录穿越漏洞复现-ChaBug安全

然后去修改hdr_crc 为0xb2f3

Winrar目录穿越漏洞复现-ChaBug安全

再次查看,可以正常解析,并看到filename已经修改成功

Winrar目录穿越漏洞复现-ChaBug安全

右键解压该文件,则会在D盘生成一个test.txt文件。

Winrar目录穿越漏洞复现-ChaBug安全

解压后会在D盘生成一个test.txt文件

修复建议

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

  2. 删除UNACEV2.dll文件,解压则会报错

参考:https://fuping.site/2019/02/21/WinRAR-Extracting-Code-Execution-Validate/

喜欢这篇文章的话就点一点喜欢吧!