Linux本地內核提權漏洞復現(CVE-2019-13272) 一、漏洞描述 當調用PTRACE_TRACEME時,ptrace_link函數將獲得對父進程憑據的RCU引用,然後將該指針指向get_cred函數。但是,對象struct cred的生存周期規則不允許無條件地將RCU引用轉換為穩定引用。 ...
Linux本地內核提權漏洞復現(CVE-2019-13272)
一、漏洞描述
當調用PTRACE_TRACEME時,ptrace_link函數將獲得對父進程憑據的RCU引用,然後將該指針指向get_cred函數。但是,對象struct cred的生存周期規則不允許無條件地將RCU引用轉換為穩定引用。
PTRACE_TRACEME獲取父進程的憑證,使其能夠像父進程一樣執行父進程能夠執行的各種操作。如果惡意低許可權子進程使用PTRACE_TRACEME並且該子進程的父進程具有高許可權,該子進程可獲取其父進程的控制權並且使用其父進程的許可權調用execve函數創建一個新的高許可權進程。
註:該漏洞利用前提:需要目標伺服器有桌面環境,所以很雞肋的漏洞
二、漏洞影響版本
目前受影響的Linux內核版本:
Linux Kernel < 5.1.17
三、漏洞環境搭建
靶機:kali 2018.2
1、 創建一個低許可權賬戶
2、切換到test用戶, 查看系統內核版本是否小於5.1.17, 查看當前用戶和當前用戶的UID
四、漏洞復現
1、切換到tmp目錄下,下載漏洞利用腳本
2、查看poc.c的許可權,並設置執行許可權
3、編譯poc.c
4、執行exp,提權成功
五、漏洞修複
補丁地址: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6994eefb0053799d2e07cd140df6c2ea106c41ee
六、後記
1、總體來說這個漏洞的限制還是很大的,首先要找到一個內部有減權的suid程式,pkexec是linux桌面freedestop上的驗證程式,也就是說非桌面版本就可能沒有這個東西,要用它也只能在桌面上。像android,它把suid程式都去除了,這個漏洞就幾乎造不成什麼影響。
2、在另一臺電腦(ubuntu)通過ssh連接靶機,然後執行提權程式,發現提權失敗,這是因為通過ssh登錄時執行提權腳本沒有桌面環境
3、作者已測試成功的版本
---------------------------------------------------------------------------------------------------
參考: exp下載地址:https://github.com/bcoles/kernel-exploits/tree/master/CVE-2019-13272