好友发来信息聊起WinRAR漏洞,其实这个漏洞的利用条件很有限,实际危害并不是很高,可是这个漏洞令人恐惧的是已经遗留了很多年,并且影响到全球5多亿的WinRAR用户,所以上班的时候,成了圈子里热议的话题。

好奇心驱使之下,开始了复现研究的过程。先看看原理。

根据Check Point研究人员的说法,该问题是因UNACEV2.dll代码库中的一个深藏已久的漏洞引起的,而且该代码库从2005年以来就一直没有被主动使用过。据了解,该代码库用于解析ACE格式,这是一种可以追溯到20世纪90年代常用的压缩格式。

有人会制作一个恶意的ACE文件,当被WinRAR 打开的时候,会利用UNACEV2.dll中的路径遍历漏洞欺骗归档工具将文件解压到这个人选择的路径中。研究人员试图将ACE 恶意文件放到启动文件夹中以便在系统启动时执行。 ——引用自FreeBuf

这是比较底层的实现原理,实现过程就是在压缩包里恶意插入代码,使压缩包在解压缩的时候,会执行命令把“脏程序”悄悄的放置在开机启动项中。

【CVE-2018-20250】WinRAR漏洞浅谈_第1张图片

至于实现还是比较复杂的,我是借用Github站点一套Python程序,完成复现。

【CVE-2018-20250】WinRAR漏洞浅谈_第2张图片

源码配置部分如上图,对封装的文件名称、脏程序名称、压缩后名称进行配置即可执行打包。在环境机上,解压缩后,重启测试。

【CVE-2018-20250】WinRAR漏洞浅谈_第3张图片

复现完成,但是在其之后的研究过程中,发现这个漏洞利用性其实非常有限。

因为脏程序路径涉及到用户名,所以目前这个定位方法是非常不可靠的,经过多环境试验,发现只有在桌面进行解压才具有相当的稳定性。

最终对此漏洞总结,如果能利用好复杂环境,此漏洞是Happy fun的,但在不能保证目标环境的前提下,也许需要更好的思路来利用这个漏洞。

复现代码和一些过程就不放出来了,感兴趣的朋友可以搜索相关资料了解。