【干货】Winrar目录穿越漏洞实现

  • A+

漏洞简介

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 ,单击即可选中。

image.png

修改保存路径,并将压缩包要保存的格式从ace修改为rar,例如修改为桌面的mdirker.rar。
点开下拉列表,选择store full path,使压缩包中保存完整路径。

image.png

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

image.png

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

image.png

准备Python环境

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

image.png

查看压缩包状态

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

image.png
打开命令行,将命令行中当前路径切换到桌面,然后执行如下命令查看压缩包详细信息。
```acefile.py --headers mdirker.rar

```

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

image.png

制作EXP压缩包

替换解压路径

打开 010Editor主程序

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

image.png
找到刚才在命令行中看到解压路径,并将其覆盖为处理后的解压绝对路径。
处理后路径如下:
以Win7的自启动目录为例,在路径最前端再加一个[C:],然后在目录最后面加上解压后的文件名字。
```C:C:UsersmdirkerAppDataRoamingMicrosoftWindowsStart MenuProgramsStartupcmd.exe

```

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

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

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

image.png

修改文件头

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

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

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

image.png
!!!!记得Ctrl+S保存文件

修改起始位置

使用刚才命令行窗口再次执行刚才的命令。
```acefile.py --headers mdirker.rar

```

出现如下报错,看到红框中的16进制代码为d45c。
因为要保证为4位,如出现3位情况,需要自己在前面加0。

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

image.png
!!!!Ctrl+S保存文件

最终EXP检查

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

image.png

受害机测试

受害者测试环境准备

注意
受害机器已经安装存在漏洞的winrar程序
受害机下载了刚才编辑过rar压缩包。
为展示运行结果也打开了启动目录,也就是刚才修改后的解压目录。

image.png

解压测试

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

image.png

结果查看

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

image.png

自启程序测试

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

image.png

至此,重现完毕。

相关推荐: Hack The Box - OpenAdmin

0x00 目标 Kali: 10.10.16.242 靶机地址:10.10.10.171 目标:user blood and root blood 0x01 信息收集 端口: 使用nmap对目标进行端口扫描: 开放端口:22、80 说明开放ssh和web。 常…