zoukankan      html  css  js  c++  java
  • Winrar目录穿越漏洞复现

    0x01 漏洞描述

    近日Check Point团队爆出了一个关于WinRAR存在19年的漏洞,用它来可以获得受害者计算机的控制。攻击者只需利用此漏洞构造恶意的压缩文件,当受害者使用WinRAR解压该恶意文件时便会触发漏洞。

    该漏洞是由于 WinRAR 所使用的一个陈旧的动态链接库UNACEV2.dll所造成的,该动态链接库在 2006 年被编译,没有任何的基础保护机制(ASLR, DEP 等)。动态链接库的作用是处理 ACE 格式文件。而WinRAR解压ACE文件时,由于没有对文件名进行充分过滤,导致其可实现目录穿越,将恶意文件写入任意目录,甚至可以写入文件至开机启动项,导致代码执

    0x02 漏洞影响

    影响软件:

    WinRAR < 5.70 Beta 1

    Bandizip < = 6.2.0.0

    好压(2345压缩) < = 5.9.8.10907

    360压缩 < = 4.0.0.1170

    0x03  漏洞危害

    1. 通过这个漏洞黑客可以将恶意程序放入用户启动项,当目标电脑重新启动时获取目标主机的权限。

    2. 在拥有system权限下可以放入

    c:/windows/system32/wbem/mof/nullevt.mof,直接在获取目标主机的权限。

    3. 可以投放恶意dll文件进行dll劫持获取到目标主机的权限,或者覆盖用户主机上的文件等方式获取目标主机的权限

     

    0x04  漏洞细节

     漏洞主要是由Winrar用来解压ACE压缩包采用的动态链接库unacev2.dll这个dll引起的。unacev2.dll中处理filename时只校验了CRC,黑客可以通过更改压缩包的CRC校验码来修改解压时候的filename来触发这个Path Traversal漏洞。但是Winrar本身检测了filename,有一些限制并且普通用户解压RAR文件时候不能将我们恶意的Payload解压到需要System权限的文件夹。当用户将文件下载到默认的C:UsersAdministratorDownloads目录下时,我们通过构造

    C:C:C:../AppDataRoamingMicrosoftWindowsStartMenuProgramsStartup est.exe 

    经过Winrar的CleanPath函数处理会变成

    C:../AppDataRoamingMicrosoftWindowsStartMenuProgramsStartup est.exe

    其中C:会被转换成当前路径,如果用Winrar打开那么当前路径就是C:Program FilesWinRAR,要是在文件夹中右键解压到xxx那么当前路径就是压缩包所在的路径。

    当用户在文件夹中直接右键解压到xx那么我们恶意的payload解压地址就会变成

    C:UsersAdministratorDownloads../AppDataRoamingMicrosoftWindowsStartMenuProgramsStartup est.exe

    就是当前用户的启动项。这样一个利用完成了从一个Path Traversal到任意命令执行的过程。

     

     

    0x05   漏洞复现

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

    主要所需工具WinACE、010Editor,下载地址为:

    http://d3gkuj25u7yvfk.cloudfront.net/97m4@s345u2a5/Installer_winace_2.69.exe

    https://download.sweetscape.com/010EditorWin64Installer901.exe

    1.下载WinACE并安装,安装完成后,新建一个文本文件,名字可以任意,这里为backlion.txt。

    2.利用WinACE进行压缩,这里选择store full path.
    3.通过脚本检查rar的header信息,其脚本下载地址为:
    https://raw.githubusercontent.com/backlion/acefile/master/acefile.py
    python acefile.py --headers backlion.ace
    需要注意以下参数:

    hdr_crc
    hdr_size
    filename的长度
    filename

     

     

    4.我们开始修改,要把他放置在启动项

    C:ProgramDataMicrosoftWindowsStart MenuProgramsacklion.txt。这里修改如下:

    5.选中文件位置,可以看到其文件的长度为65(十进制,这里需要转换成十六进制)
     
    长度为65(十进制)->0x41
    6.其修改的长度位置:00  41(修改顺序是由后到前
    然后修改 hdr_size的值,这里选择如下位置,可以看到其长度为96(十进制,这里需要转换成十六进制)。
    长度为96(十进制)->0x0060
    其修改的位置如下:
     
     
    7.然后这个时候我们使用acefile.py进行解析ace文件,就可以爆错/
    D:python3>python acefile.py --headers backlion.ace
    [+] right_hdr_crc : 0xcda5 | struct b'xa5xcd'
    [*] current_hdr_crc : 0xed55 | struct b'Uxed'
    backlion.ace: CorruptedArchiveError: header CRC failed
    8.我们可以看出正确的CRC值为 0xcda5,所以进行如下修改:
    9.再次解析发现成功
     
    10.解压backlion.rce文件,就会在其启动项下释放一个文件为backlion.txt 文件
     
     
    脚本自动化利用:
    另附上自定脚本执行:
    其中里面的:calc.exe可以换成你的木马文件,这里为了测试方便我用计算器来替换,然后world.txt和hello.txt是你需要压缩的文件。
    执行exp.py脚本后,会自动生成test.rar文件。
    只需要受害者打开test.rar文件就会在你当前用户的启动选项下生产一个后门文件hh.exe
    C:Users这个是当前计算机使用的用户名AppDataRoamingMicrosoftWindowsStart MenuPrograms
    C:UsersxxxAppDataRoamingMicrosoftWindowsStart MenuProgramsStartup
     
     
     
     

    0x06   修复建议

    有两种方式

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

    2. 删除其安装目录下的UNACEV2.dll文

     
     

    0x07  参考

    https://research.checkpoint.com/extracting-code-execution-from-winrar/

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

    https://mp.weixin.qq.com/s/j8G9Tjq2NPg0CFhXl_sQGQ

    https://github.com/Ridter/acefile

     
     

    <wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">

  • 相关阅读:
    Service Name Port Number Transport Protocol tcp udp 端口号16bit
    linux linux 互传文件 win 不通过 ftp sftp 往linux 传文件(文件夹)
    soft deletion Google SRE 保障数据完整性的手段
    Taylor series
    Taylor's theorem
    Moving average
    REQUEST
    Unix file types
    mysqld.sock
    Tunneling protocol
  • 原文地址:https://www.cnblogs.com/backlion/p/10417985.html
Copyright © 2011-2022 走看看