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