您好,登錄后才能下訂單哦!
小編給大家分享一下如何利用文本編輯器的插件在Unix機器上實現提權,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
研究人員表示,他們對Sublime、Vim、Emacs、Gedit、Pico以及Nano(從Ubuntu設備克隆)等編輯器進行了安全測試,除了Pico和Nano之外,他們都可以利用其他文本編輯器加載插件過程中的安全漏洞來成功在目標主機中實現提權。
這些文本編輯器主要通過第三方插件來擴展其功能,而這些插件都是由其他用戶或開發者開發的,并且其中有很多都是開放了源代碼的。
SafeBreach的安全研究人員Dor Azouri表示:
“我們通過對這些文本編輯器進行了測試之后發現,它們一般有兩種模式,即常規模式和提權模式。當它們在加載插件時,便會進入提權模式,但是由于它們對文件夾權限完整性的控制做得并不到位,因此僅擁有普通用戶權限的攻擊者將可以利用這個漏洞實現提權,并在目標主機上執行任意代碼。
假設現在攻擊者只能在目標主機上運行任意代碼,但并沒有實現提權。那么他們現在就可以向文本編輯器當前所使用的文件夾中寫入惡意插件代碼,然后等待編輯器切換到提權模式,而此時用戶將需要輸入設備的root密碼。當然了,對于某些“高端”用戶來說,攻擊者可能只需要等一會兒就可以完成攻擊了,因為這些用戶往往需要安裝各種功能擴展插件,或者通常需要使用sudo命令來打開各種文件。但是在某些情況下,攻擊者可能得永遠等待下去了…”
注:本文以Sublime和VIM為例進行攻擊講解,所有的相關代碼以及內容描述都可以在SafeBreach的GitHub代碼庫中找到【傳送門】。
測試環境:
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
如果你想讓插件來處理編輯器事件,你就需要實現sublime_plugin.EventListener類的子類,然后重寫某些事件回調,你的首選一般是on_actvated_async。這種特殊的事件意思是“當一個視圖獲取到了輸入焦點時便會調用該方法,然后程序將以單獨的線程運行。”因此,每當用戶切換編輯器標簽tab時,或者當Sublime打開時,都需要調用這個回調方法【API文檔】。
接下來,攻擊者只需要在完整的Python環境下實現惡意代碼即可完成攻擊。
測試環境:
Vim Versions: 7.4 & 8.0
Ubuntu 14.04.5, Kernel 4.13.0
為了在VIM中復現攻擊場景,我們需要定位相關插件的存儲位置,而且我們還需要弄清楚如何在啟動時加載插件。攻擊的核心思想如下:
1. 開發自己的Python攻擊腳本。
2. 將它存儲在~/.vim/plugin/中。
3. 在同一目錄下創建一個新的*.vim文件,這個文件為實際的vim插件,它將會在編輯器啟動過程中與其他插件一起加載。在我們的測試場景下,我們將演示如何使用Python腳本實現攻擊(看起來有點像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.我們開發的write_root_file.py腳本會嘗試向受保護的路徑地址(只有root用戶擁有寫入權限)寫入一份文件:
try: f = open("/stub.file", "wb") f.close()except IOError as e: pass
關于這種攻擊技術的更多細節描述,請參考研究人員發布的【研究報告】。
研究人員已經將他們所發現的問題提交給了Sublime、Vim、Emacs和Gedit的開發人員,但是報告中并沒有提到相關的緩解方案。
對此,研究人員的建議是:完善文件/文件夾權限模型,并且保證編輯器可以正常地在常規模式和提權模式之間切換。他們也可以讓編輯器在提權模式下運行時,阻止加載第三方插件。或者說,給用戶提供一個手動接口來以提權模式加載插件。當然了,他們也可以使用類似sudoedit這樣的內置命令(而不是以root權限)來允許普通用戶安全地編輯文件內容。
除此之外,研究人員還給廣大管理員提供了一份OSSEC syscheck配置規則【點我獲取】,大家可以利用這份配置文件來監控文件或文件夾的修改情況。
監控你設備中關鍵文件以及文件夾的修改情況,比如說,你可以將下列規則添加到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機器上實現提權”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。