Chkrootkit 0.49本地提權(quán)漏洞利用與防范研究
原創(chuàng)【51CTO.com原創(chuàng)稿件】最近研究Linux rootkit檢查,發(fā)現(xiàn)很多文章都推薦使用Chkrootkit,但是Chkrootkit0.49以及以下版本均存在本地提權(quán)漏洞,只要提權(quán)上傳一個(gè)文件到tmp目錄,管理員再次運(yùn)行Chkrootkit后,即可獲取root權(quán)限,本文就chrootkit本地提權(quán)漏洞進(jìn)行分析和再現(xiàn),最后給出了防范方法,希望對(duì)系統(tǒng)管理員有所幫助。
一、漏洞分析
Thomas Stangner在chkrootkit包中發(fā)現(xiàn)了一個(gè)嚴(yán)重的漏洞,允許本地攻擊者在某些情況下獲得對(duì)根框的訪問(wèn)權(quán)限配置(/ tmp不掛載noexec),漏洞位于函數(shù)slapper()中:
如果$ file_port為空,因?yàn)樽兞抠x值缺少引號(hào),'file_port = $ file_port $ i'行將執(zhí)行其中指定的所有文件,$ SLAPPER_FILES作為用戶(通常是root)chkrootkit正在運(yùn)行,因此獲取root權(quán)限。使用notepad打開(kāi)chkrootkit文件,其代碼位于第93~120行,如圖1所示。
圖1存在漏洞代碼處
二、漏洞利用條件
1.在/ tmp中放入一個(gè)名為'update'的非root所有者的可執(zhí)行文件
2.以Root身份運(yùn)行chkrootkit
Chkrootkit 版本小于0.49,其文件/ tmp /update將以root身份執(zhí)行。
如果攻擊者知道管理員是定期運(yùn)行chkrootkit(通過(guò)查看cron.daily獲知),并且對(duì)/ tmp(沒(méi)有掛載noexec)有寫訪問(wèn)權(quán)限,就可以利用該漏洞獲取root權(quán)限。
漏洞可利用代碼update.c:
三、實(shí)際測(cè)試
1、編譯update.c
將update.c文件放在tmp目錄,執(zhí)行g(shù)cc –o update update.c進(jìn)行編譯,編譯后通過(guò)ls –al update進(jìn)行查看,如圖2所示。
圖2編譯update程序
2、執(zhí)行chkrootkit
上傳一個(gè)chkrootkit版本為0.49的程序,解壓縮后,使用make sense進(jìn)行編譯,盡管編譯會(huì)出錯(cuò),不用管它,使用命令執(zhí)行:./chkrootkit,如圖3所示,順利執(zhí)行chkrootkit程序。執(zhí)行完畢后到tmp目錄查看update,明顯程序已經(jīng)被設(shè)置了root權(quán)限,如圖4所示。
圖3執(zhí)行rootkit程序
圖4檢查update程序權(quán)限
3、執(zhí)行提權(quán)
以普通用戶登錄,到tmp目錄執(zhí)行./update可以直接獲取root權(quán)限,如圖5所示,分別執(zhí)行id和cat /etc/shadow | grep ‘root’命令來(lái)獲取當(dāng)前用戶權(quán)限和shadow值。
圖5獲取root權(quán)限
4、擴(kuò)展漏洞利用
◆搜索漏洞chkrootkit
在exploit-database中對(duì)漏洞chkrootkit進(jìn)行搜索,執(zhí)行命令:“searchsploit chkrootkit”查看目前所有能夠利用的漏洞,如圖6所示,只有兩個(gè),exploit-db網(wǎng)站給出了相關(guān)的利用方法和文章:
https://www.exploit-db.com/exploits/38775/
https://www.exploit-db.com/exploits/33899/
圖6搜索exploit-database漏洞庫(kù)
◆使用msf查看可利用漏洞
在kali Linux中打開(kāi)msf漏洞利用平臺(tái),如圖7所示,執(zhí)行“search chkrootkit”,其結(jié)果僅一項(xiàng),使用“use exploit/unix/local/chkrootkit”、“show options”命令使用和查看漏洞模塊的相關(guān)情況,該漏洞為本地利用型,即查看/usr/sbin/目錄是否存在chkrootkit程序,如果存在則可以利用。
圖7查看msf平臺(tái)中的chkrootkit漏洞
四、利用與防范方法探討
1.查看系統(tǒng)是否存在chkrookit
在centos下查看是否存在chkrootkit:
updated
locate chkrootkit
ls –al /usr/sbin/chkrootkit
2.查找高權(quán)限用戶命令
查找具備高權(quán)限執(zhí)行文件命令“find / -perm +4000 –ls>20170309.txt”,將會(huì)找出目前具備root權(quán)限的可執(zhí)行文件,如圖8所示,明顯tmp目錄下的update比較可疑。
圖8查找高權(quán)限用程序
3.設(shè)置tmp目錄無(wú)執(zhí)行權(quán)限
4.使用最新版0.51版本
官方最新版本下載地址:http://www.chkrootkit.org/download/
【51CTO原創(chuàng)稿件,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文作者和出處為51CTO.com】