Linux本地内核提权漏洞复现(CVE-2019-13272)html
1、漏洞描述linux
当调用PTRACE_TRACEME时,ptrace_link函数将得到对父进程凭据的RCU引用,而后将该指针指向get_cred函数。可是,对象struct cred的生存周期规则不容许无条件地将RCU引用转换为稳定引用。android
PTRACE_TRACEME获取父进程的凭证,使其可以像父进程同样执行父进程可以执行的各类操做。若是恶意低权限子进程使用PTRACE_TRACEME而且该子进程的父进程具备高权限,该子进程可获取其父进程的控制权而且使用其父进程的权限调用execve函数建立一个新的高权限进程。git
注:该漏洞利用前提:须要目标服务器有桌面环境,因此很鸡肋的漏洞github
2、漏洞影响版本ubuntu
目前受影响的Linux内核版本:服务器
Linux Kernel < 5.1.17ssh
3、漏洞环境搭建函数
靶机:kali 2018.2 测试
一、 建立一个低权限帐户
二、切换到test用户, 查看系统内核版本是否小于5.1.17, 查看当前用户和当前用户的UID
4、漏洞复现
一、切换到tmp目录下,下载漏洞利用脚本
二、查看poc.c的权限,并设置执行权限
三、编译poc.c
四、执行exp,提权成功
5、漏洞修复
补丁地址: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6994eefb0053799d2e07cd140df6c2ea106c41ee
6、后记
一、整体来讲这个漏洞的限制仍是很大的,首先要找到一个内部有减权的suid程序,pkexec是linux桌面freedestop上的验证程序,也就是说非桌面版本就可能没有这个东西,要用它也只能在桌面上。像android,它把suid程序都去除了,这个漏洞就几乎造不成什么影响。
二、在另外一台电脑(ubuntu)经过ssh链接靶机,而后执行提权程序,发现提权失败,这是由于经过ssh登陆时执行提权脚本没有桌面环境
三、做者已测试成功的版本
---------------------------------------------------------------------------------------------------
参考: exp下载地址:https://github.com/bcoles/kernel-exploits/tree/master/CVE-2019-13272
原文出处:https://www.cnblogs.com/yuzly/p/11745677.html