
本文首發于:微信公眾號「運維之美」,公眾號 ID:Hi-Linux,
「運維之美」是一個有情懷、有態度,專注于 Linux 運維相關技術文章分享的公眾號,公眾號致力于為廣大運維作業者分享各類技術文章和發布最前沿的科技資訊,公眾號的核心理念是:分享,我們認為只有分享才能使我們的團體更強大,如果你想第一時間獲取最新技術文章,歡迎關注我們!
公眾號作者 Mike,一個月薪 3000 的雜工,從事 IT 相關作業 15+ 年,熱衷于互聯網技術領域,認同開源文化,對運維相關技術有自己獨特的見解,很愿意將自己積累的經驗、心得、技能與大家分享交流,篇篇干貨不要錯過喲,如果你想聯系到我,可關注公眾號獲取相關資訊,
作為 Linux 中最常使用的重要實用程式之一,sudo 幾乎安裝在每一款 UNIX 和 Linux 發行版上的,以便用戶呼叫和運行核心命令,然而近期這個命令曝出的一個嚴重的本地提權漏洞,即便配置中明確不允許 root 用戶訪問,該漏洞仍可允許惡意用戶或程式,在目標 Linux 系統上以 root 用戶身份執行任意命令,
sudo作為一個系統命令,其允許普通用戶以特殊權限來運行程式或命令,而無需切換使用環境,
漏洞詳情
據悉,該漏洞由蘋果資訊安全部門的 Joe Vennix 追蹤發現(漏洞的 CVE ID 為 CVE-2019-14287 ),

如果想要利用這個漏洞,只需按以下的方式運行即可,
$ sudo -u#-1 id -u
或者
$ sudo -u#4294967295 id -u
使用
sudo命令時,你可以直接指定用戶的 UID 來代替用戶名,
之所以會產生這個漏洞,是因為將用戶 ID 轉換為用戶名的函式會將 -1(或無效等效的 4294967295)誤認為是 0,而這正好是 root 用戶 User ID ,此外,由于通過 -u 選項指定的 User ID 在密碼資料庫中不存在,因此不會運行任何 PAM 會話模塊,
如何利用漏洞
CVE-2019-14287 是管理員在組態檔中用了 ALL 關鍵詞后造成的,當 /etc/sudoers 檔案中存在 *=(ALL, *) 形式的配置時,本地攻擊者可以通過指定用戶 ID 為 -1 或者 4294967295,從而以 root 權限在服務器上執行命令,例如:
user_name ALL=(ALL, !root) /usr/bin/vim
當存在這種 ALL=(ALL, !root) 形式的配置時,表示對被切換到的用戶進行了 ALL(所有用戶) 和其他用戶的剔除操作,例如上面的含義就是:允許 user_name 用戶以非 root 權限之外的所有用戶權限運行 vim 命令,
下面我們來看一個實體,首先配置一個允許 r7 用戶以非 root 權限之外的所有用戶權限運行 vim 命令的規則,

然后,直接以 r7 用戶身份切換為 root 來運行 vim 命令,

我們可以看到,命令執行請求被拒絕了,
接著,我們利用漏洞中所描述的方式進行身份切換,

我們可以看到成功切換到為 root 用戶,并打開了 /etc/shadow 檔案,

/etc/shadow檔案只有具備 root 權限的用戶才能進行訪問,
因此,我們可以很輕易地利用該漏洞在 vim 命令下啟動一個具有 root 權限的 Shell,然后執行任何命令,
# 在 vim 中執行外部命令,下面這個就表示執行一個帶有 root 權限的 SHELL,
:!/bin/bash
漏洞修復建議
-
該漏洞影響最新版本 1.8.28 之前的所有 Sudo 版本,目前各大 Linux 發行版都已經向用戶推送最新版本,請及時升級到
sudo 1.8.28版本, -
檢查
/etc/sudoers是否存在 ALL 關鍵詞的復合限制邏輯,
參考檔案
-
https://www.google.com
-
https://www.cnbeta.com/articles/tech/899229.htm
-
https://www.anquanke.com/post/id/188743
-
https://nosec.org/home/detail/3045.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/161980.html
標籤:Linux
