linux CVE-2019-13272 本地特權漏洞

漏洞描述

在5.1.17以前的Linux內核中,kernel / ptrace.c中的ptrace_link錯誤地處理了想要建立ptrace關係的進程的憑據記錄,這容許本地用戶經過利用父子的某些方案來獲取root訪問權限 進程關係,父進程刪除權限並調用execve(可能容許攻擊者控制)。 一個影響因素是對象壽命問題(也可能致使恐慌)。 另外一個影響因素是將ptrace關係標記爲特權,這能夠經過(例如)Polkit的pkexec幫助程序與PTRACE_TRACEME進行利用。 注意:在某些環境中,SELinux deny_ptrace多是一種可用的解決方法。html

影響版本

Linux Kernel < 5.1.17

復現

OS: Ubuntu 16.04

Kernel: 4.15.0-47-generic

 

 

poc地址:git

https://github.com/bcoles/kernel-exploits/tree/master/CVE-2019-13272  

下載poc:github

wget https://raw.githubusercontent.com/bcoles/kernel-exploits/master/CVE-2019-13272/poc.c  

可是ubuntu沒裝代理的,因而用curl下來,傳到ubuntu上ubuntu

而後編譯安全

gcc -s poc.c -o test

 

 賦予權限bash

chmod +x test  

建立普通用戶服務器

useradd test01
su test01

 

 運行pocssh

./test  

第一次實驗執行失敗:curl

 

由於在建立用戶時候沒有建立對應的用戶文件夾url

useradd -d /home/test01  test01 建立用戶
passwd test01 設置密碼

 

第二次實驗復現成功

 

 

在ssh上同一個普通用戶復現

 

 發現是失敗的,看了一些文章。發現ssh並不能完成提權操做。

具體細節

來源於大佬的博客

kernel 5.1.17以前版本中存在安全漏洞,該漏洞源於kernel/ptrace.c文件的ptrace_link沒有正確處理對憑證的記錄。攻擊者可利用該漏洞獲取root訪問權限。因爲PTRACE_TRACEME容許的borked權限,利用bug在概念上頗有趣。對象生命週期處理問題可能會致使內存損壞,但它須要以精確的方式進行代碼競爭。事實PTRACE_TRACEME證實,除了父進程以外,內核還記錄了跟蹤器的憑據。研究人員概述的方案涉及一個父進程,該進程建立一個子進程,這個子進程會建立子進程。第一個子進程使用命令pkexec(用於以root身份運行程序),第二個子進程運行PTRACE_TRACEME,而後第一個子進程丟棄其權限。最終結果是父進程可使用ptrace來控制第一個子進程,後者可使用ptrace來控制第二個子進程 - 從而讓攻擊者得到對兩個進程的控制權。

Polkit

Polkit 在系統層級進行權限控制,提供了一個低優先級進程和高優先級進程進行通信的系統。和sudo等程序不一樣,Polkit並無賦予進程徹底的 root 權限,而是經過一個集中的策略系統進行更精細的受權。

Polkit定義出一系列操做,例如運行GParted, 並將用戶按照羣組或用戶名進行劃分,例如 wheel羣組用戶。而後定義每一個操做是否能夠由某些用戶執行,執行操做前是否須要一些額外的確認,例如經過輸入密碼確認用戶是否是屬於某個羣組。

pkexec

pkexec allows an authorized user to execute PROGRAM as another user. If username is not specified, then the program will be executed as the administrative super user, root.

pkexec容許受權用戶做爲另外一個用戶執行程序。若是沒有指定用戶名,則程序將做爲管理超級用戶root執行。

普通用戶在SSH中使用pkexec時會顯示以下須要密碼驗證

test@ubuntu-vm:~$ pkexec –user root whoami
==== AUTHENTICATING FOR org.freedesktop.policykit.exec ===
Authentication is needed to run `/usr/bin/whoami’ as the super user
Authenticating as: test,,, (test)
Password:

在Gnome桌面中

 

 

在server版本中實測沒法提權

 

總結

經過poc代碼中的部分代碼,推測爲gnome桌面程序存在的缺陷致使用戶能夠實現代碼層面的條件競爭致使了提權,可是實戰中多數服務器不會配備桌面環境,屬比較雞肋的提權漏洞

相關文章
相關標籤/搜索