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的语言会乱码~ 必须要手动调成英文
2.生成一个ACE压缩包 FILE-Create-选择你的脏程序-选择store Full path - Add =>OK
3.用010 Editor打开ace压缩包
覆盖原始文件名 也就是Users开头BAT结尾的内容 这步比较关键 我用的我师父利用的文件名,网上文章的给出的文件名 都是什么阿...c:\c:c:../AppData\Roaming\Microsoft\Windows\StartMenu\Programs\Startup\testMyRar.bat.bat.bat.bat.bat
修改文件名长度 在文件名首部 00前一个bit位 文件名的长度是100 16进制是64
获得hdr_size的长度 01 01 开头 一直到文件名末尾 都为hdr_size的长度这里hdr_size的长度 131 ,16进制是83 得到长度后 我们修改hdr_size的长度
最后我们还需要获取hdr_crc 这个值我们需要通过上面使用的python脚本来获取 这里python脚本还需要修改一下 否则效验hdr_crc的值不正确就直接结束了[ CorruptedArchiveError: header CRC failed]
修改acefile.py源码添加红色框的哪行代码,在它抛出异常之前打印出来正确的CRC值
然后用acefile.py来查看下我们这个修改后的ace文件
62146 转成16进制 F2C2 这个就是我们修改后ace文件的hdr_crc
在hdr_size前2位 写入hdr_crc 这里不能直接写入F2C2 要写成C2F2
保存在用acefile.py工具效验一下我们这个畸形ace文件。 OK正确识别出来了
用火绒扫一下 嗯~报的很明显~
扔到靶机运行一下-------------------
靶鸡环境360安全卫士+360杀毒,开云查杀的安全卫士和五个杀毒引擎全开都是最新版本 不知道为什么 不杀这个畸形的ace文件
静态不杀,动态运行ace也不杀 奇怪了~