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;">

  • 相关阅读:
    react路由传参的三种方式:
    毕设登录逻辑分析
    redis缓存数据库的配置和分析
    c#窗体虚线图形验证码设计
    C#窗体技巧
    关于子窗体的层级关系
    安装SQL SERVER开启SA用户登录的方法
    SQL中CONVERT日期不同格式的转换用法
    sql server中自连接的使用
    IFieldEdit Interface 接口
  • 原文地址:https://www.cnblogs.com/backlion/p/10417985.html
Copyright © 2011-2022 走看看