無需系統(tǒng)密碼,就能添加新的sudo用戶、獲取root權(quán)限,事后還能刪除不留痕跡。
這是GitHub安全研究員Kevin Backhouse發(fā)現(xiàn)的一個(gè)Ubuntu系統(tǒng)大漏洞。
這種攻擊方法非常簡單,Backhouse在官方博客中寫道:“使用終端中的一些簡單命令,并單擊幾次鼠標(biāo),標(biāo)準(zhǔn)用戶就可以為自己創(chuàng)建一個(gè)管理員帳戶?!?/p>
目前還在維護(hù)的Ubuntu操作系統(tǒng)均受到影響,包括20.10以及20.04、18.04、16.04三個(gè)LTS版。
Backhouse是如何操作的?我們接著往下看。
攻擊方法
首先打開終端,在你的主目錄下創(chuàng)建一個(gè)軟鏈接:
ln-s/dev/zero.pam_environment
(注:如果以上命令無法運(yùn)行,說明已經(jīng)存在名為.pam_environment的文件,請把這個(gè)文件重命名做好備份?。?/p>
接下來,在系統(tǒng)設(shè)置中打開“區(qū)域和語言”,然后嘗試更改語言。
該對話框會(huì)凍結(jié),只需忽略它,然后返回到終端即可。
此時(shí),一個(gè)名為accounts-daemon的程序正在消耗100%的CPU內(nèi)核,因此你的計(jì)算機(jī)可能會(huì)變慢并開始變熱。
在終端中,刪除軟鏈接。否則,你可能無法使用自己的帳戶!
rm.pam_environment
下一步是將SIGSTOP信號發(fā)送到accounts-daemon,阻止它破壞該CPU內(nèi)核。但是要做到這一點(diǎn),首先需要知道accounts-daemon的PID。
你可以通過運(yùn)行top來找到PID。由于accounts-daemon被卡在一個(gè)無限循環(huán)中,因此它很快進(jìn)入top列表的頂部。
或者使用pidof命令來查找PID:
$pidofaccounts-daemon 597
接著用kill命令殺死SIGSTOP信號:
kill-SIGSTOP597
然后注銷帳戶,但首先需要設(shè)置一個(gè)計(jì)時(shí)器,保證在注銷后重置accounts-daemon。否則,前面的努力都將白費(fèi)。
nohupbash-c“sleep30s;kill-SIGSEGV597;kill-SIGCONT597”
注銷后等待幾秒鐘,讓SIGSEGV起效。如果漏洞利用成功,則會(huì)顯示一系列對話框,讓你創(chuàng)建一個(gè)新的用戶帳戶。這個(gè)新帳戶具有管理員權(quán)限,可以運(yùn)行sudo命令。
Backhouse將整個(gè)過程錄成了2分多鐘的視頻,不明白操作方法的可以前去觀看:
攻擊原理
該漏洞利用了Ubuntu系統(tǒng)中的兩個(gè)錯(cuò)誤:
第一個(gè)是accountservice,它是管理計(jì)算機(jī)上用戶帳戶的服務(wù)。
第二個(gè)是GNOME顯示管理器(gdm3),它可以處理登錄屏幕。
accounts-daemon漏洞
accountsservice守護(hù)程序(accounts-daemon)是一項(xiàng)系統(tǒng)服務(wù),可以執(zhí)行諸如創(chuàng)建新用戶帳戶或更改用戶密碼的操作,但也可以執(zhí)行對安全性較不敏感的操作,例如更改用戶的圖標(biāo)或首選語言。
Ubuntu使用了經(jīng)過修改的accountservice服務(wù)版本,添加了一個(gè)名為is_in_pam_environment的函數(shù),該函數(shù)會(huì)在用戶的主目錄中查找一個(gè)名為.pam_environment的文件并進(jìn)行讀取。
將.pam_environment鏈接到/dev/zero可以讓accountservice服務(wù)被拒絕。
因?yàn)?dev/zero實(shí)際上是磁盤上不存在的特殊文件。它由操作系統(tǒng)提供,其行為就像一個(gè)無限長的文件,其中每個(gè)字節(jié)均為0。
當(dāng)is_in_pam_environment嘗試讀取.pam_environment時(shí),它會(huì)通過軟鏈接重定向到/dev/zero,然后由于/dev/zero無限長而陷入無限循環(huán)。
如此操作會(huì)讓accounts-daemon喪失其root權(quán)限,轉(zhuǎn)而采用用戶的較低特權(quán)。然后將SIGSEGV發(fā)送給帳戶守護(hù)程序使其崩潰。
GNOME漏洞
GNOME顯示管理器(gdm3)是Ubuntu用戶界面的基本組件。它可以處理用戶登錄和注銷時(shí)啟動(dòng)和停止用戶會(huì)話之類的事情,還管理登錄屏幕。
當(dāng)用戶進(jìn)行新系統(tǒng)的初始設(shè)置時(shí),會(huì)啟動(dòng)一個(gè)對話框,它其實(shí)是一個(gè)單獨(dú)的應(yīng)用程序,稱為gnome-initial-setup。
當(dāng)gdm3查詢到用戶數(shù)量為0時(shí),會(huì)啟動(dòng)這個(gè)程序。那么gdm3如何檢查系統(tǒng)上有多少用戶?通過詢問accounts-daemon!
不幸的是,accounts-daemon已經(jīng)被我們前面的操作整崩潰了,所以gdm3在檢查超時(shí)后認(rèn)為帳戶數(shù)量為0,并啟動(dòng)gnome-initial-setup。
而初始化設(shè)置的用戶必須有管理員權(quán)限。
官方緊急修復(fù)
Backhouse于10月17日向Ubuntu和GNOME維護(hù)人員報(bào)告了這些錯(cuò)誤,官方已經(jīng)最新代碼中提供了修復(fù)程序。建議所有Ubuntu用戶都盡快安裝更新。
不過,該漏洞僅對桌面版Ubuntu有效。如果使用的是命令行界面,或者是GNOME之外的其他桌面環(huán)境,則暫時(shí)不受影響。
博客地址:
https://securitylab.github.com/research/Ubuntu-gdm3-accountsservice-LPE
網(wǎng)友討論:
https://news.ycombinator.com/item?id=25053238
責(zé)任編輯:xj
原文標(biāo)題:Ubuntu被曝嚴(yán)重漏洞:切換系統(tǒng)語言+輸入幾行命令,就能獲取root權(quán)限
文章出處:【微信公眾號:Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
-
Ubuntu
+關(guān)注
關(guān)注
5文章
565瀏覽量
29922 -
root
+關(guān)注
關(guān)注
1文章
86瀏覽量
21403 -
GitHub
+關(guān)注
關(guān)注
3文章
473瀏覽量
16506
原文標(biāo)題:Ubuntu被曝嚴(yán)重漏洞:切換系統(tǒng)語言+輸入幾行命令,就能獲取root權(quán)限
文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論