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

    Winrar目录穿越漏洞复现

     

     

    1、漏洞概述

      WinRAR 是一款功能强大的压缩包管理器,它是档案工具RAR在Windows环境下的图形界面。2019年 2 月 20 日Check Point团队爆出了一个关于WinRAR存在19年的漏洞,用它来可以获得受害者计算机的控制。攻击者只需利用此漏洞构造恶意的压缩文件,当受害者使用WinRAR解压该恶意文件时便会触发漏洞。

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

    影响版本:

      WinRAR < 5.70 Beta 1

      Bandizip < = 6.2.0.0

      好压(2345压缩) < = 5.9.8.10907

      360压缩 < = 4.0.0.1170

    漏洞危害:

      通过这个漏洞黑客可以将恶意程序放入用户启动项,当目标电脑重新启动时获取目标主机的权限。替换任意dll文件或覆盖任意配置文件。

    漏洞细节: 

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

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

        C:C:C:../AppDataRoamingMicrosoftWindowsStart MenuProgramsStartup est.exe

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

        C:../AppDataRoamingMicrosoftWindowsStart MenuProgramsStartup est.exe

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

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

        C:UsersAdministratorDownloads../AppDataRoamingMicrosoftWindowsStart MenuProgramsStartup est.exe

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

    2、漏洞复现

       所需软件:WinACE、Winhex/010Editor、Winrar5.50

    (1)在桌面创建一个txt文件,hello.txt

    (2)使用WinACE将hello.txt压缩,注意选择store full path.

    (3)使用010Editor打开hello.txt,修改原路径为以下路径(启动项)

    C:C:C:../AppDataRoamingMicrosoftWindowsStart MenuProgramsStartuphello.txt

    (4)修改长度,选中路径,可见修改之前文件长度为29

    (5)修改后选中文件长度为81

    (6)因此修改以下位,值为51(因为81是十进制,所以要改为hex的16进制)

     

    (7)同样,将以下文件长度改为70

    (8)使用acefile.py进行解析ace文件,acefile.py文件地址(https://github.com/backlion/CVE-2018-20250/blob/master/acefile.py)

    命令:

    python acefile.py --headers hello.ace

    报错,且提示正确的crc为0xa350,修改文件crc为50 a3 顺序从右到左。

    修改后未报错则说明修改成功

     (9)使用Winrar解压缩即可将hello.txt释放到C:AppDataRoamingMicrosoftWindowsStart MenuProgramsStartup

    (10)如果将hello.txt换为后门则可以配合msf远程控制受害机器

    https://github.com/backlion/CVE-2018-20250

    GitHub的POC-exp.py可以制作一个含有exe文件的漏洞压缩包,只要用户使用低版本的Winrar即可被种下exe后门。

     

    3、修复建议:

     

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

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

    4、参考:

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

     https://www.cnblogs.com/backlion/p/10417985.html

  • 相关阅读:
    docker设置国内镜像
    asp.net core 构建docker镜像
    asp.net POST 数据
    asp.net core 增加浏览器缓存设置
    .net fx源码
    新项目升级到JFinal3.5之后的改变-着重体验自动依赖注入
    微信小程序教程汇总
    如何注册微信小程序
    JFinal-美女图爬虫-一个不正经的爬虫代码
    投资20万研发的JFinal项目《旅游线路营销管理系统》准备公开课中
  • 原文地址:https://www.cnblogs.com/pureqh/p/10422999.html
Copyright © 2011-2022 走看看