CVE-2019-7304 Ubuntu Linux 權限升級漏洞復現

  • 2019 年 10 月 6 日
  • 筆記

在2019年1月,國外安全人員在Ubuntu Linux的默認安裝中發現了一個權限提升漏洞。這是由於snapd API中的一個錯誤,這是一個默認服務。任何本地用戶都可以利用此漏洞獲取對系統的直接root訪問權限,CVE編號CVE-2019-7304。

為了簡化Linux系統上的打包應用程序,各種新的競爭標準正在出現。Canonical,Ubuntu Linux的製造商,正在推廣他們的「Snap」軟件包。這是一種將所有應用程序依賴項轉換為單個二進制文件的方法 – 類似於Windows應用程序。

Snap生態系統包括一個「應用程序商店」,開發人員可以在其中貢獻和維護隨時可用的軟件包。

管理本地安裝的Snap以及與此在線商店的通信部分由名為「snapd」的系統服務處理。此服務自動安裝在Ubuntu中,並在「root」用戶的上下文中運行。Snapd正在發展成為Ubuntu操作系統的重要組成部分,特別是在用於雲和物聯網的「Snappy Ubuntu Core」等更精簡的旋轉中。

0X1 漏洞描述

Snapd提供附加到本地UNIX_AF套接字的REST API。通過查詢與該套接字的任何連接相關聯的UID來完成對受限API函數的訪問控制。在for循環中進行字符串解析期間,可能會影響用戶控制的套接字對等數據以覆蓋UID變量。這允許任何用戶訪問任何API函數。

通過訪問API,有多種方法可以獲取root。下面提到了兩種可能性:

1.使用「create-user」API根據從Ubuntu SSO查詢的詳細信息創建本地用戶。

2.Sideloads Snap包含一個生成新本地用戶的install-hook。

本次影響版本:

Ubuntu 18.10

Ubuntu 18.04 LTS

Ubuntu 16.04 LTS

Ubuntu 14.04 LTS

0X2 環境搭建

實驗環境Ubuntu16.04

然後下載POC代碼:

https://github.com/initstring/dirty_sock

登錄Ubuntu:https://login.ubuntu.com

然後本地生成一個秘鑰:

ssh-keygen -t rsa -C "<you email>"

然後到./.ssh下把,id_rsa.pub(公鑰)拷到你賬戶的ssh_key裏面去

0X2 漏洞利用

開始利用下載的poc代碼文件中第一個腳本測試:

直接利用腳本1進行提權攻擊:

顯示成功,但是ssh沒有開啟,所以連接失敗,再次利用顯示失敗!

利用腳本2成功:

成功添加賬戶dirty_sock,查看其信息,發現已經具有sudo權限:

提權成功!

再次回到第一次提權,發現snap的版本已經系統被更新了:

官方給的修復即將snap升級到2.37.1以上即可,所以腳本1利用失敗!但是利用腳本2的用戶我們已經添加了,所以後門用戶存在。因此,使用Ubuntu系統的用戶需要儘快更新升級!

參考文章:

https://github.com/SecuritySi/CVE-2019-7304_DirtySock

http://www.4hou.com/vulnerable/16181.html

https://github.com/initstring/dirty_sock