Winrar目录穿越漏洞复现

WinRAR 是一款功能强大的压缩包管理器,它是档案工具RAR在 Windows环境下的图形界面。该软件可用于备份数据,缩减电子邮件附件的大小,解压缩从 Internet 上下载的RAR、ZIP及其它类型文件,并且可以新建 RAR 及 ZIP 格式等的压缩类文件。

WinRAR的 UNACEV2.dll代码库中存有严重安全漏洞。2月21日,国家信息安全漏洞共享平台(CNVD)收录WinRAR系列任意代码执行漏洞,预计全球超过5亿用户受此WinRAR 漏洞影响。

不仅如此,在检测中发现,除WinRAR软件外,另有38款软件受到此漏洞影响。目前,CNVD已通报相关软件厂商,并协助其进行漏洞修复,以便及时消除漏洞攻击隐患。

漏洞编号

CVE-2018-20250: ACE文件验证逻辑绕过漏洞
CVE-2018-20251: ACE文件名逻辑验证绕过漏洞
CVE-2018-20252: ACE/RAR文件越界写入漏洞
CVE-2018-20253: LHA/LZH文件越界写入漏洞

影响软件版本

理论调用UNACEV2.dll的压缩程序都存在此漏洞,已知存在漏洞的解压缩程序如下:

WinRAR < 5.70 Beta 1

Bandizip < = 6.2.0.0(笔者没有测试Bandzip,有兴趣的师傅可以自行测试)

好压(2345压缩) < = 5.9.8.10907

360压缩 < = 4.0.0.1170

修复方式

1. 删除安装文件夹内的unacev2.dll文件
2. 升级成winrar5.70 Beata 1以上版本(https://www.win-rar.com/download.html)

准备工具

cmd.exe(解压测试用)

Winace

010Editer

Winrar < 5.70 Beta 1

acefile.py

复现过程

WinACE创建压缩包

打开winace,点击Create图标开始创建压缩包,切换路径找到要放在压缩包中的程序,如桌面上的 cmd.exe ,单击即可选中。

Winrar目录穿越漏洞复现

修改保存路径,并将压缩包要保存的格式从ace修改为rar,例如修改为桌面的mdirker.rar。

Winrar目录穿越漏洞复现

点开下拉列表,选择store full path,使压缩包中保存完整路径。

Winrar目录穿越漏洞复现

点击add按钮开始压缩并将压缩后的文件保存到指定位置。

Winrar目录穿越漏洞复现

查看保存出来的压缩包文件,例如桌面上的mdirker.rar。

Winrar目录穿越漏洞复现

准备Python环境

下载并安装python环境,本测试环境中用的是python 3.7.2,建议使用3.7版本的python,其他低版本可能出现语法不兼容情况。

Winrar目录穿越漏洞复现

查看压缩包状态

将acefile.py下载到桌面准备使用

Winrar目录穿越漏洞复现

打开命令行,将命令行中当前路径切换到桌面,然后执行如下命令查看压缩包详细信息。

acefile.py –headers mdirker.rar

出现如下信息代表压缩包正常,红框内的路径代表刚才压缩时候保存的完整路径,下面要对其进行修改。

Winrar目录穿越漏洞复现

制作EXP压缩包

替换解压路径

打开 010Editor主程序

Winrar目录穿越漏洞复现

将mdirker.rar拖拽到010Editer中,出现如下界面。

Winrar目录穿越漏洞复现

找到刚才在命令行中看到解压路径,并将其覆盖为处理后的解压绝对路径。

处理后路径如下:

以Win7的自启动目录为例,在路径最前端再加一个[C:\],然后在目录最后面加上解压后的文件名字。

C:\C:\Users\mdirker\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\cmd.exe

覆盖后如下图所示,并在左下角看到长度为71:

Winrar目录穿越漏洞复现

使用10转16进制工具将71转换为16进制,转换后16进制数为47。

Winrar目录穿越漏洞复现

替换到如下位置,也就是路径前面第二块位置。

Winrar目录穿越漏洞复现

修改文件头

选中如下代码块查看长度,从第四行第九列(01)到刚才替换路径的文件名的最后一位,查看长度为102。

Winrar目录穿越漏洞复现

再次将102转换为16进制,转换后16进制数为66。

Winrar目录穿越漏洞复现

将66覆盖到刚才选中16进制块的前面第二块上,也就是 00的前面,如下图所示

Winrar目录穿越漏洞复现

!!!!Ctrl+S保存文件

修改起始位置

使用刚才命令行窗口再次执行刚才的命令。

acefile.py –headers mdirker.rar

出现如下报错,看到红框中的16进制代码为d45c。

因为要保证为4位,如出现3位情况,需要自己在前面加0。

Winrar目录穿越漏洞复现

首先将d45c以2位为一块调换位置为 5cd4 ,覆盖到刚才66前面两块中,如下图所示。

Winrar目录穿越漏洞复现

!!!!Ctrl+S保存文件

最终EXP检查

使用刚才的命令行窗口再次执行命令,来查看压缩包信息,结果为正常,和第一次相比最大区别就是路径发生变化。

Winrar目录穿越漏洞复现

受害机测试

受害者测试环境准备

注意

受害机器已经安装存在漏洞的winrar程序

受害机下载了刚才编辑过rar压缩包。

为展示运行结果也打开了启动目录,也就是刚才修改后的解压目录。

Winrar目录穿越漏洞复现

解压测试

解压RAR文件到当前文件夹,右键RAR文件选择减压到当前文件夹。

Winrar目录穿越漏洞复现

结果查看

解压后桌面没有任何变化,发现文件直接出现在了刚才修改后的目录中,说明之前对rar文件的处理没有问题,Winrar目录穿越漏洞重现成功。

Winrar目录穿越漏洞复现

自启程序测试

将受害机重启并登录账户,出现命令行窗口,说明程序自启动成功。

Winrar目录穿越漏洞复现

文章均为本站原创,转载请注明出处为安全吧!