Ubuntu被曝嚴重漏洞:切換系統語言+輸入幾行命令,就能獲取root權限

 
    
    
     
     
              
     
 
    
公衆號關注 傑哥的IT之旅 」,
  
     
     
      
      
               
      
  
     
選擇「 星標 」, 重磅乾貨,第一 時間送達!


來自:量子位git

無需系統密碼,就能添加新的sudo用戶、獲取root權限,過後還能刪除不留痕跡。github


這是GitHub安全研究員Kevin Backhouse發現的一個Ubuntu系統大漏洞。web

這種攻擊方法很是簡單,Backhouse在官方博客中寫道:「使用終端中的一些簡單命令,並單擊幾回鼠標,標準用戶就能夠爲本身建立一個管理員賬戶。」安全

目前還在維護的Ubuntu操做系統均受到影響,包括20.10以及20.0418.0416.04三個LTS版。bash

Backhouse是如何操做的?咱們接着往下看。
微信

攻擊方法

首先打開終端,在你的主目錄下建立一個軟連接:網絡


ln -s /dev/zero .pam_environment


(注:若是以上命令沒法運行,說明已經存在名爲.pam_environment的文件,請把這個文件重命名作好備份!)app

接下來,在系統設置中打開「區域和語言」,而後嘗試更改語言。編輯器

該對話框會凍結,只需忽略它,而後返回到終端便可。ide

此時,一個名爲accounts-daemon的程序正在消耗100%的CPU內核,所以你的計算機可能會變慢並開始變熱。

在終端中,刪除軟連接。不然,你可能沒法使用本身的賬戶!


rm .pam_environment


下一步是將SIGSTOP信號發送到accounts-daemon,阻止它破壞該CPU內核。可是要作到這一點,首先須要知道accounts-daemon的PID。

你能夠經過運行top來找到PID。因爲accounts-daemon被卡在一個無限循環中,所以它很快進入top列表的頂部。

或者使用pidof命令來查找PID:


$ pidof accounts-daemon
597


接着用kill命令殺死SIGSTOP信號:


kill -SIGSTOP 597


而後註銷賬戶,但首先須要設置一個計時器,保證在註銷後重置accounts-daemon。不然,前面的努力都將白費。


nohup bash -c 「sleep 30s; kill -SIGSEGV 597; kill -SIGCONT 597」


註銷後等待幾秒鐘,讓SIGSEGV起效。若是漏洞利用成功,則會顯示一系列對話框,讓你建立一個新的用戶賬戶。這個新賬戶具備管理員權限,能夠運行sudo命令。

Backhouse將整個過程錄成了2分多鐘的視頻,不明白操做方法的能夠前去觀看:

攻擊原理

該漏洞利用了Ubuntu系統中的兩個錯誤:

該漏洞利用了Ubuntu系統中的兩個錯誤:

  • 第一個是accountservice,它是管理計算機上用戶賬戶的服務。

  • 第二個是GNOME顯示管理器(gdm3),它能夠處理登陸屏幕。

accounts-daemon漏洞

accountsservice守護程序(accounts-daemon)是一項系統服務,能夠執行諸如建立新用戶賬戶或更改用戶密碼的操做,但也能夠執行對安全性較不敏感的操做,例如更改用戶的圖標或首選語言。

Ubuntu使用了通過修改的accountservice服務版本,添加了一個名爲is_in_pam_environment的函數,該函數會在用戶的主目錄中查找一個名爲.pam_environment的文件並進行讀取。

將.pam_environment連接到/dev/zero可讓accountservice服務被拒絕。

由於/dev/zero其實是磁盤上不存在的特殊文件。它由操做系統提供,其行爲就像一個無限長的文件,其中每一個字節均爲0。

當is_in_pam_environment嘗試讀取.pam_environment時,它會經過軟連接重定向到/dev/zero,而後因爲/dev/zero無限長而陷入無限循環。

如此操做會讓accounts-daemon喪失其root權限,轉而採用用戶的較低特權。而後將SIGSEGV發送給賬戶守護程序使其崩潰。

GNOME漏洞

GNOME顯示管理器(gdm3)是Ubuntu用戶界面的基本組件。它能夠處理用戶登陸和註銷時啓動和中止用戶會話之類的事情,還管理登陸屏幕。

當用戶進行新系統的初始設置時,會啓動一個對話框,它實際上是一個單獨的應用程序,稱爲gnome-initial-setup。

當gdm3查詢到用戶數量爲0時,會啓動這個程序。那麼gdm3如何檢查系統上有多少用戶?經過詢問accounts-daemon!

不幸的是,accounts-daemon已經被咱們前面的操做整崩潰了,因此gdm3在檢查超時後認爲賬戶數量爲0,並啓動gnome-initial-setup。

而初始化設置的用戶必須有管理員權限。

官方緊急修復

Backhouse於10月17日向Ubuntu和GNOME維護人員報告了這些錯誤,官方已經最新代碼中提供了修復程序。建議全部Ubuntu用戶都儘快安裝更新。

不過,該漏洞僅對桌面版Ubuntu有效。若是使用的是命令行界面,或者是GNOME以外的其餘桌面環境,則暫時不受影響。

博客地址:
https://securitylab.github.com/research/Ubuntu-gdm3-accountsservice-LPE

網友討論:
https://news.ycombinator.com/item?id=25053238


若是您以爲這篇文章對您有點用的話,麻煩您爲本文來個四連:轉發分享、點贊、點在看、留言,由於這將是我寫做與分享更多優質文章的最強動力!

本公衆號所有博文已整理成一個目錄,請在公衆號後臺回覆「 m」獲取!

推薦閱讀:
一、 經常使用的 Git 命令清單
二、 Linux 修改權限命令 chmod 用法示例
三、 Linux 經典的幾款收包引擎
四、 最全 VxLAN 知識詳解
五、 什麼是堡壘機?爲何須要堡壘機?
六、 Linux 系統下對目錄擴容的方法
七、 一文吃透 Linux 提權
八、 Linux 日誌文件系統原來是這樣工做的
九、 Linux 網絡狀態工具 ss 命令使用詳解
十、 一文理解 Linux 平均負載,附排查工具
關注微信公衆號「 傑哥的IT之旅」,後臺回覆「 1024」查看更多內容,回覆「 加羣備註:地區-職業方向-暱稱 便可加入讀者交流羣。

     
  
       
       
        
        
                 
        
  
       
點個[在看],是對傑哥最大的支持!

本文分享自微信公衆號 - 傑哥的IT之旅(Jake_Internet)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索