天天看點

CVE-2019-7304 Ubuntu Linux 權限更新漏洞複現

在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

CVE-2019-7304 Ubuntu Linux 權限更新漏洞複現

然後下載下傳POC代碼:

https://github.com/initstring/dirty_sock

CVE-2019-7304 Ubuntu Linux 權限更新漏洞複現

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

然後本地生成一個秘鑰:

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

CVE-2019-7304 Ubuntu Linux 權限更新漏洞複現

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

CVE-2019-7304 Ubuntu Linux 權限更新漏洞複現
CVE-2019-7304 Ubuntu Linux 權限更新漏洞複現

0X2 漏洞利用

開始利用下載下傳的poc代碼檔案中第一個腳本測試:

CVE-2019-7304 Ubuntu Linux 權限更新漏洞複現

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

CVE-2019-7304 Ubuntu Linux 權限更新漏洞複現

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

CVE-2019-7304 Ubuntu Linux 權限更新漏洞複現

利用腳本2成功:

CVE-2019-7304 Ubuntu Linux 權限更新漏洞複現

成功添加賬戶dirty_sock,檢視其資訊,發現已經具有sudo權限:

CVE-2019-7304 Ubuntu Linux 權限更新漏洞複現

提權成功!

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

CVE-2019-7304 Ubuntu Linux 權限更新漏洞複現

官方給的修複即将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