0x00简介
在5.1.17之前的Linux内核中,kernel / ptrace.c中的ptrace_link错误地处理了想要创建ptrace关系的进程的凭据记录,这允许本地用户通过利用父子的某些方案来获取root访问权限 进程关系,父进程删除权限并调用execve可能允许攻击者控制。
0x01漏洞概述
Linux执行PTRACE_TRACEME函数时,ptrace_link函数将获得对父进程凭据的RCU引用,然后将该指针指向get_cred函数,但是,对象struct cred的生存周期规则不允许无条件的将RCU引用转换为稳定引用。PTRACE_TRACEME获取父进程的凭证,使其能够像父进程一样执行父进程能够执行的各种操作,如果恶意低权限子进程使用PTRACE_TRACEME并且该子进程的父进程具有高权限,子进程可获取其父进程的控制权并且使用其父进程的权限调用execve函数创建一个新的高权限进程。
注:该漏洞利用前提:需要目标服务器有桌面环境,所以较为鸡肋的漏洞
0x02影响范围
内核<5.1.17
0x03环境搭建
环境:ubuntu18.04版本
下载地址:http://mirrors.aliyun.com/ubuntu-releases/16.04/
1.下载完成后使用VMware虚拟机安装,安装时版本选择Ubuntu 64位的
2.镜像文件选择下载的ubuntu16版本的镜像安装开启虚拟机即可,详细安装方法自行百度
3.安装完成后重启即可
0x04漏洞复现
1.在Ubuntu上创建一个低权限用户test并设置密码
useradd -d /home/test -m test
passwd test
2.然后切换到test用户,查看系统内核版本是否小于5.1.17,并当前用户和当前用户的UID
3.切换到tmp目录使用git或wget下载漏洞poc
git clone https://github.com/bcoles/kernel-exploits.git
4.下载完成后进入CVE-2019-13272目录下,编译poc
gcc poc.c -o exp
5.然后执行exp,提权成功
总结
1.此漏洞危害性比较大,但漏洞的限制也非常的大,需要是linux桌面freedestop上的验证程序,就是说非桌面版本此提权方法没用,要用它只能在本地使用,使用ssh连接也不行。
2.以下为作者以实验成功的版本
0x05修复建议
1.建议升级linux内核版本至5.2或更高
参考链接:https://github.com/bcoles/kernel-exploits/tree/master/CVE-2019-13272
网友评论