溫馨提示×

溫馨提示×

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

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

如何利用文本編輯器的插件在Unix機器上實現(xiàn)提權

發(fā)布時間:2021-11-01 17:32:35 來源:億速云 閱讀:155 作者:小新 欄目:編程語言

小編給大家分享一下如何利用文本編輯器的插件在Unix機器上實現(xiàn)提權,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

研究人員表示,他們對Sublime、Vim、Emacs、Gedit、Pico以及Nano(從Ubuntu設備克?。┑染庉嬈鬟M行了安全測試,除了Pico和Nano之外,他們都可以利用其他文本編輯器加載插件過程中的安全漏洞來成功在目標主機中實現(xiàn)提權。

問題出在哪里?

這些文本編輯器主要通過第三方插件來擴展其功能,而這些插件都是由其他用戶或開發(fā)者開發(fā)的,并且其中有很多都是開放了源代碼的。

SafeBreach的安全研究人員Dor Azouri表示:

“我們通過對這些文本編輯器進行了測試之后發(fā)現(xiàn),它們一般有兩種模式,即常規(guī)模式和提權模式。當它們在加載插件時,便會進入提權模式,但是由于它們對文件夾權限完整性的控制做得并不到位,因此僅擁有普通用戶權限的攻擊者將可以利用這個漏洞實現(xiàn)提權,并在目標主機上執(zhí)行任意代碼。

假設現(xiàn)在攻擊者只能在目標主機上運行任意代碼,但并沒有實現(xiàn)提權。那么他們現(xiàn)在就可以向文本編輯器當前所使用的文件夾中寫入惡意插件代碼,然后等待編輯器切換到提權模式,而此時用戶將需要輸入設備的root密碼。當然了,對于某些“高端”用戶來說,攻擊者可能只需要等一會兒就可以完成攻擊了,因為這些用戶往往需要安裝各種功能擴展插件,或者通常需要使用sudo命令來打開各種文件。但是在某些情況下,攻擊者可能得永遠等待下去了…”

細節(jié)描述

注:本文以Sublime和VIM為例進行攻擊講解,所有的相關代碼以及內容描述都可以在SafeBreach的GitHub代碼庫中找到【傳送門】。

Sublime

測試環(huán)境:

Sublime Version: 3.0 Build 3143

Ubuntu 14.04.5, Kernel 4.13.0

添加插件

Sublime插件主要有以下兩種形式:

1.   安裝包(使用包管理工具直接安裝);

2.   單獨的Python插件文件;

第一種形式由Package Control負責管理(一般是sublime-package文件),目錄路徑一般為:

/opt/sublime_text

第二種形式就是一種Python文件,路徑地址為:

~/.confg/sublime-text-3/Packages/User

如果你想讓插件來處理編輯器事件,你就需要實現(xiàn)sublime_plugin.EventListener類的子類,然后重寫某些事件回調,你的首選一般是on_actvated_async。這種特殊的事件意思是“當一個視圖獲取到了輸入焦點時便會調用該方法,然后程序將以單獨的線程運行?!币虼?,每當用戶切換編輯器標簽tab時,或者當Sublime打開時,都需要調用這個回調方法【API文檔】。

接下來,攻擊者只需要在完整的Python環(huán)境下實現(xiàn)惡意代碼即可完成攻擊。

VIM

測試環(huán)境:

Vim Versions: 7.4 & 8.0

Ubuntu 14.04.5, Kernel 4.13.0

為了在VIM中復現(xiàn)攻擊場景,我們需要定位相關插件的存儲位置,而且我們還需要弄清楚如何在啟動時加載插件。攻擊的核心思想如下:

1.   開發(fā)自己的Python攻擊腳本。

2.   將它存儲在~/.vim/plugin/中。

3.   在同一目錄下創(chuàng)建一個新的*.vim文件,這個文件為實際的vim插件,它將會在編輯器啟動過程中與其他插件一起加載。在我們的測試場景下,我們將演示如何使用Python腳本實現(xiàn)攻擊(看起來有點像VimScript):

if !has('python') && !has('python3') finishendiffunction! RootWrite() If has('python') pyfile ~/.vim/plugin/write_root_file.py else py3file ~/.vim/plugin/write_root_file.py          endifendfunccall RootWrite()

4.我們開發(fā)的write_root_file.py腳本會嘗試向受保護的路徑地址(只有root用戶擁有寫入權限)寫入一份文件:

try: f = open("/stub.file", "wb") f.close()except IOError as e: pass

關于這種攻擊技術的更多細節(jié)描述,請參考研究人員發(fā)布的【研究報告】。

緩解方案

研究人員已經(jīng)將他們所發(fā)現(xiàn)的問題提交給了Sublime、Vim、Emacs和Gedit的開發(fā)人員,但是報告中并沒有提到相關的緩解方案。

對此,研究人員的建議是:完善文件/文件夾權限模型,并且保證編輯器可以正常地在常規(guī)模式和提權模式之間切換。他們也可以讓編輯器在提權模式下運行時,阻止加載第三方插件?;蛘哒f,給用戶提供一個手動接口來以提權模式加載插件。當然了,他們也可以使用類似sudoedit這樣的內置命令(而不是以root權限)來允許普通用戶安全地編輯文件內容。

除此之外,研究人員還給廣大管理員提供了一份OSSEC syscheck配置規(guī)則【點我獲取】,大家可以利用這份配置文件來監(jiān)控文件或文件夾的修改情況。

OSSEC監(jiān)控規(guī)則

監(jiān)控你設備中關鍵文件以及文件夾的修改情況,比如說,你可以將下列規(guī)則添加到OSSEC syscheck配置文件之中:

/var/ossec/etc/ossec.conf:<syscheck>      <directoriescheck_all="yes" realtime="yes"report_changes="yes"> ~/.config/sublime-text-3/Packages/User </directories> <directories check_all="yes"realtime="yes" report_changes="yes"> ~/.vim/plugin/ </directories> <directories check_all="yes"realtime="yes" report_changes="yes"> ~/.emacs, ~/_emacs, ~/.emacs.d/init.el, ~/.xemacs, ~/.xemacs/init.el,             ~/Library/Preferences/AquamacsEmacs/Preferences.el      </directories> <directories check_all="yes"realtime="yes" report_changes="yes"> ~/.local/share/gedit/plugins </directories></syscheck>

修改之后,別忘了使用下列命令重啟OSSEC:

sudo /var/ossec/bin/ossec-control restart

以上是“如何利用文本編輯器的插件在Unix機器上實現(xiàn)提權”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

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

AI