1. 程式人生 > >臟牛Linux本地提權漏洞復現(CVE-2016-5195)

臟牛Linux本地提權漏洞復現(CVE-2016-5195)

cin 實現 ubun pass 進入 函數 dirty 賬號密碼 swd

學習該漏洞的原因:
總是看到圈子裏一位老哥發文章使用這個漏洞來提權,進過測試發現centos比較難提取,而Ubuntu是比較好提權的。

漏洞範圍:

Linux kernel >= 2.6.22(2007年發行,到2016年10月18日才修復)

危害:

低權限用戶利用該漏洞可以在眾多Linux系統上實現本地提權

簡要分析:

該漏洞具體為,get_user_page內核函數在處理Copy-on-Write(以下使用COW表示)的過程中,可能產出競態條件造成COW過程被破壞,導致出現寫數據到進程地址空間內只讀內存區域的機會。修改su或者passwd程序就可以達到root的目的。具體分析請查看官方分析。

測試工具:

官方放出的EXP: https://github.com/dirtycow/dirtycow.github.io
提權為root權限的EXP一:https://github.com/FireFart/dirtycow
提權為root權限的EXP二:https://github.com/gbonacini/CVE-2016-5195

測試過程(EXP一):

本次環境使用 bee-box虛擬機進行測試。
假設一開始獲得的是普通用戶bee的權限。

技術分享圖片

1.使用uname -a命令查看linux內核信息,發現在臟牛漏洞範圍內,可以進行測試。

技術分享圖片

2.將exp一下載到本地,使用gcc -pthread dirty.c -o dirty -lcrypt命令對dirty.c進行編譯,生成一個dirty的可執行文件。

技術分享圖片

3.執行./dirty 密碼命令,即可進行提權。

技術分享圖片

4.此時使用上圖中的賬號密碼即可獲取root權限。

技術分享圖片

測試過程(EXP二):

由於bee-box的gcc版本較低,就不進行具體的測試了,具體步驟如下:
1.下載exp到靶機,解壓並進入文件夾,執行make後會生成一個dcow的可執行文件。
2.執行./dcow -s 如果成功的話會返回一個root的 shell,失敗則返回fail。

總結:

內核版本需要在2.6.22以上,並且未打補丁
gcc版本可能有要求(exp2),需先升級再測
成敗取決於環境

由於寢室快要斷電了,我就僅僅復現了一下。
link: https://www.jianshu.com/p/df72d1ee1e3e

臟牛Linux本地提權漏洞復現(CVE-2016-5195)