WinRAR漏洞详细复现过程

把写在公司社区里的文章在里再发一遍 :)

漏洞描述:

2019年2月20日,Check Point团队爆出了一个关于WinRAR存在19年的漏洞, 该漏洞是由于 WinRAR 所使用的一个陈旧的动态链接库UNACEV2.dll所造成的,即在解压一个恶意ACE文件时,解压目录会被设置为Startup文件夹,这个文件夹可在电脑重新启动时自动运行文件夹内的程序,从而造成任意代码执行的效果。

漏洞影响版本:

WinRAR < 5.70 Beta 1

Bandizip    < = 6.2.0.0

好压(2345压缩)    < = 5.9.8.10907

360压缩    < = 4.0.0.1170

PS:目前我在WinRAR上复现成功,但是在Bandzip上失败,看来有些软件的行动还是蛮快的。

漏洞验证:

首先,我下载并安装了唯一允许创建ACE存档的软件 WinACE

然后在桌面创建了一个txt的文本,并用它作为最后存入Startup文件夹的文件

WinRAR漏洞详细复现过程_第1张图片

用把txt拖入WinACE的方式打开WinACE

点击Create,再次把txt拖入新出现的弹框内,再把下方的store full path设置好,最后点击Add创建。

WinRAR漏洞详细复现过程_第2张图片

这时桌面上就出现了创建好的ACE文件,接下来我们需要一个python脚本:acefile.py

https://github.com/droe/acefile

运行这个py脚本,我们可以看到新创建的ACE文件的头信息

WinRAR漏洞详细复现过程_第3张图片

红框中的内容即为解压时的目录,我们需要做的便是手动修改它,Check Point团队为我们准备好了最终的向量:

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

下来,因为CRC的保护,如何手动修改就成为了关键的一步:

你需要有一个编辑工具如WinHex等,这里我个人习惯使用HEdit

用十六进制的方法打开ACE文件后,我们需要修改四个地方

首先,将预设的解压目录修改为我们的最终向量

第二,修改路径长度为新向量长度

第三,修改hdr_size,我的长度为111,十六进制为6f

WinRAR漏洞详细复现过程_第4张图片

第四,用编辑器打开acefile.py

寻找CRC failed,找到下面这一行

将代码中输出的CRC failed改为变量的值

再次执行python脚本

将这个值转换为16进制后即为我们最后一处用来修改的内容

63686,转换为16进制为f8c6,我们使用的时候要颠倒一下即为c6f8

WinRAR漏洞详细复现过程_第5张图片

将红圈中的内容修改为新内容后即可完成操作。

解压做好的ACE文件,发现我们的目录及其中的文件已经创建完毕。

WinRAR漏洞详细复现过程_第6张图片

重启电脑,发现txt文件执行成功!

WinRAR漏洞详细复现过程_第7张图片


修复方案:

建议删除压缩程序目录下的如图的文件

WinRAR漏洞详细复现过程_第8张图片

或者下载最新版本的WinRAR。


参考文章:https://www.anquanke.com/post/id/171403

你可能感兴趣的:(WinRAR漏洞详细复现过程)