|
|
51CTO旗下网站
|
|
移动端
创建专栏

Chkrootkit 0.49本地提权漏洞利用与防范研究

最近研究Linux rootkit检查,发现很多文章都推荐使用Chkrootkit,但是Chkrootkit0.49以及以下版本均存在本地提权漏洞,只要提权上传一个文件到tmp目录,管理员再次运行Chkrootkit后,即可获取root权限,本文就chrootkit本地提权漏洞进行分析和再现,最后给出了防范方法,希望对系统管理员有所帮助。

作者:simeon|2017-04-07 09:46

【51CTO.com原创稿件】最近研究Linux rootkit检查,发现很多文章都推荐使用Chkrootkit,但是Chkrootkit0.49以及以下版本均存在本地提权漏洞,只要提权上传一个文件到tmp目录,管理员再次运行Chkrootkit后,即可获取root权限,本文就chrootkit本地提权漏洞进行分析和再现,最后给出了防范方法,希望对系统管理员有所帮助。

一、漏洞分析

Thomas Stangner在chkrootkit包中发现了一个严重的漏洞,允许本地攻击者在某些情况下获得对根框的访问权限配置(/ tmp不挂载noexec),漏洞位于函数slapper()中:

Chkrootkit 0.49本地提权漏洞利用与防范研究

如果$ file_port为空,因为变量赋值缺少引号,'file_port = $ file_port $ i'行将执行其中指定的所有文件,$ SLAPPER_FILES作为用户(通常是root)chkrootkit正在运行,因此获取root权限。使用notepad打开chkrootkit文件,其代码位于第93~120行,如图1所示。

Chkrootkit 0.49本地提权漏洞利用与防范研究

图1存在漏洞代码处

二、漏洞利用条件

1.在/ tmp中放入一个名为'update'的非root所有者的可执行文件

2.以Root身份运行chkrootkit

Chkrootkit 版本小于0.49,其文件/ tmp /update将以root身份执行。

如果攻击者知道管理员是定期运行chkrootkit(通过查看cron.daily获知),并且对/ tmp(没有挂载noexec)有写访问权限,就可以利用该漏洞获取root权限。

漏洞可利用代码update.c:

Chkrootkit 0.49本地提权漏洞利用与防范研究

三、实际测试

1、编译update.c

将update.c文件放在tmp目录,执行gcc –o update update.c进行编译,编译后通过ls –al update进行查看,如图2所示。

Chkrootkit 0.49本地提权漏洞利用与防范研究

图2编译update程序

2、执行chkrootkit

上传一个chkrootkit版本为0.49的程序,解压缩后,使用make sense进行编译,尽管编译会出错,不用管它,使用命令执行:./chkrootkit,如图3所示,顺利执行chkrootkit程序。执行完毕后到tmp目录查看update,明显程序已经被设置了root权限,如图4所示。

Chkrootkit 0.49本地提权漏洞利用与防范研究

图3执行rootkit程序

Chkrootkit 0.49本地提权漏洞利用与防范研究

图4检查update程序权限

3、执行提权

以普通用户登录,到tmp目录执行./update可以直接获取root权限,如图5所示,分别执行id和cat /etc/shadow | grep ‘root’命令来获取当前用户权限和shadow值。

Chkrootkit 0.49本地提权漏洞利用与防范研究

图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/

Chkrootkit 0.49本地提权漏洞利用与防范研究

图6搜索exploit-database漏洞库

◆使用msf查看可利用漏洞

在kali Linux中打开msf漏洞利用平台,如图7所示,执行“search chkrootkit”,其结果仅一项,使用“use exploit/unix/local/chkrootkit”、“show options”命令使用和查看漏洞模块的相关情况,该漏洞为本地利用型,即查看/usr/sbin/目录是否存在chkrootkit程序,如果存在则可以利用。

Chkrootkit 0.49本地提权漏洞利用与防范研究

图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比较可疑。

Chkrootkit 0.49本地提权漏洞利用与防范研究

图8查找高权限用程序

3.设置tmp目录无执行权限

4.使用最新版0.51版本

官方最新版本下载地址:http://www.chkrootkit.org/download/

【51CTO原创稿件,合作站点转载请注明原文作者和出处为51CTO.com】

【编辑推荐】

  1. 流行漏洞利用工具包瞄准Flash、Java和IE
  2. 从漏洞利用工具到零日漏洞:网络黑市大全
  3. 从MS16-098看Windows 8.1内核漏洞利用
  4. 远程漏洞利用:无需借助套接字的Shellcode
  5. phpMyAdmin漏洞利用与安全防范
【责任编辑:蓝雨泪 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

热门职位+更多