【漏洞复现】WinRAR目录穿越漏洞(CVE-2018-20250)
好不容易下了个 WinRAR 5.4 ,不容易啊。。
一、CVE-2018-20250
该漏洞由 Check Point 团队爆出,存在19了年之久,用它来可以获得受害者计算机的控制。攻击者只需利用此漏洞构造恶意的压缩文件,当受害者使用低版本的 WinRAR 解压该恶意文件时便会触发漏洞。
二、漏洞产生的原理
该漏洞是由于 WinRAR 所使用的一个陈旧的动态链接库UNACEV2.dll所造成,该动态链接库在 2006 年被编译,没有任何的基础保护机制(ASLR, DEP 等)。此动态链接库的作用是处理 ACE 格式文件。而 WinRAR 解压ACE文件时,由于没有对文件名进行充分过滤,导致其可实现目录穿越,将恶意文件写入任意目录,比如可以写入文件至开机启动项,实现开机自启。
三、漏洞危害
1. 通过这个漏洞黑客可以将恶意程序(挖矿、勒索、间谍、anything)放入用户启动项,当目标电脑重新启动时获取目标主机的权限。
2. 在拥有system权限下可以放入c:/windows/system32/wbem/mof/nullevt.mof,直接在获取目标主机的权限。
3. 可以投放恶意dll文件进行dll劫持获取到目标主机的权限,或者覆盖用户主机上的文件等方式获取目标主机的权限
四、影响范围
① WinRAR < 5.70 Beta 1
② Bandizip < = 6.2.0.0
③ 好压(2345压缩) < = 5.9.8.10907
④ 360压缩 < = 4.0.0.1170
五、漏洞利用原理
漏洞主要是由 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到任意命令执行的过程。
六、漏洞复现
1. 下载 payload 和低版本 WinRAR,这里用的 WinRAR 5.4 版本,自行查MD5
https://pan.baidu.com/s/1VYH5uBZ-_pdbA4ZwXnsBng
2. python3 执行如下脚本
3. 生成 test.rar
4. 只要安装了目标版本的解压缩软件,那么在解压该压缩包的时候就会触发漏洞,在用户计算机自启动目录生成 hi.exe ,当然可以换成其他的恶意程序,达到开启自启动的目的,详见危害。
5. 如果解压缩软件并非目标版本,则提示解压失败或者不是一个正常的压缩包。
参考:
https://blog.csdn.net/qq_36119192/article/details/89636414
https://www.cnblogs.com/backlion/p/10417985.html