Vim任意代码执行漏洞(CVE-2019-12735)
前言
Vim通过Modelines执行任意代码
漏洞概要: 在8.1.1365之前的Vim和在0.3.6之前的Neovim很容易通过打开特制的文本文件而通过模型执行任意代码。
复现条件: 确保未禁用modeline选项(:set modeline)。
影响版本
Vim < 8.1.1365
Neovim < 0.3.6
测试环境
漏洞复现
首先下载复现所需文件
然后确保未禁用modeline选项。
开启modeline
vim /usr/share/vim/vimrc
大概在五十五行左右,写入 set modeline
准备就绪后开始复现过程
首先打开我们的poc_uname.txt
可以看到在使用vim打开的时候,是先执行了uname -a
的这个命令。
然后我们进阶创建反弹shell。
首先启动本地9999的监听端口。
然后打开我们的poc_shell.txt
这时我们可以发现反弹成功,建立了shell连接。
修复建议
一:打补丁
Vim补丁8.1.1365
https://github.com/vim/vim/commit/5357552
Neovim补丁(在v0.3.6中发布)
https://github.com/neovim/neovim/pull/10082
https://github.com/neovim/neovim/releases/tag/v0.3.6
二:在vimrc(set nomodeline)中禁用model,使用securemodelines 插件。
参考博客:
1.https://blog.csdn.net/xuandao_ahfengren/article/details/106957146