RAR漏洞复现 CVE-2018-20250

前言:

最近 Check Point安全团队又发现了WinRAR的四个漏洞

  • ACE文件验证逻辑绕过漏洞 [CVE-2018-20250]
  • ACE文件名逻辑验证绕过漏 [CVE-2018-20251]
  • ACE/RAR文件越界写入漏洞 [CVE-2018-20252]
  • LHA/LZH文件越界写入漏洞 [CVE-2018-20253]

网上流传最多的技术复现细节就是这个ACE文件验证逻辑绕过漏洞

漏洞影响的范围:

WinRAR < 5.70 Beta 1

Bandizip < = 6.2.0.0

好压(2345压缩) < = 5.9.8.10907

360压缩 < = 4.0.0.1170

复现工具:010 iditor
ACE相关工具: git clone https://github.com/droe/acefile

漏洞利用方式:
1.将脏程序放在用户的启动项,重启上线~
2.释放脏dll,做一个dll劫持,白加黑上线~

我的研究:
这个漏洞对路径要求比较严格~,目前我所了解的利用方式都是一个固定的死路径,如果我们生成的畸形压缩包没有被用户在我们设计好的路径释放,就有两种答案,一种是解压软件报错没有目标路径,一种是释放成功,但是没有达到我们想要实现的效果,现在来说还有第三种就是被杀软报毒.

1.下载安装好WinAce 这里有一个小问题 就是说我的电脑用默认WinAce的语言会乱码~ 必须要手动调成英文

RAR漏洞复现 CVE-2018-20250

2.生成一个ACE压缩包 FILE-Create-选择你的脏程序-选择store Full path - Add  =>OK

RAR漏洞复现 CVE-2018-20250

3.用010 Editor打开ace压缩包
RAR漏洞复现 CVE-2018-20250
覆盖原始文件名 也就是Users开头BAT结尾的内容 这步比较关键 我用的我师父利用的文件名,网上文章的给出的文件名 都是什么阿...

c:\c:c:../AppData\Roaming\Microsoft\Windows\StartMenu\Programs\Startup\testMyRar.bat.bat.bat.bat.bat
RAR漏洞复现 CVE-2018-20250
修改文件名长度 在文件名首部 00前一个bit位 文件名的长度是100 16进制是64
RAR漏洞复现 CVE-2018-20250
获得hdr_size的长度 01 01 开头 一直到文件名末尾 都为hdr_size的长度
RAR漏洞复现 CVE-2018-20250

这里hdr_size的长度 131 ,16进制是83 得到长度后 我们修改hdr_size的长度
RAR漏洞复现 CVE-2018-20250
最后我们还需要获取hdr_crc 这个值我们需要通过上面使用的python脚本来获取 这里python脚本还需要修改一下 否则效验hdr_crc的值不正确就直接结束了[ CorruptedArchiveError: header CRC failed]
修改acefile.py源码
RAR漏洞复现 CVE-2018-20250

添加红色框的哪行代码,在它抛出异常之前打印出来正确的CRC值
然后用acefile.py来查看下我们这个修改后的ace文件
 

RAR漏洞复现 CVE-2018-20250

62146 转成16进制 F2C2 这个就是我们修改后ace文件的hdr_crc
 

在hdr_size前2位 写入hdr_crc 这里不能直接写入F2C2 要写成C2F2
RAR漏洞复现 CVE-2018-20250
保存在用acefile.py工具效验一下我们这个畸形ace文件。 OK正确识别出来了
RAR漏洞复现 CVE-2018-20250

用火绒扫一下 嗯~报的很明显~
RAR漏洞复现 CVE-2018-20250
扔到靶机运行一下-------------------
靶鸡环境360安全卫士+360杀毒,开云查杀的安全卫士和五个杀毒引擎全开都是最新版本 不知道为什么 不杀这个畸形的ace文件
静态不杀,动态运行ace也不杀 奇怪了~
RAR漏洞复现 CVE-2018-20250