本文将讲述 Ubuntu 本地内核提权 (CVE-2017-16995)
可以说是很经典的漏洞了
在这篇文章中主要是复刻漏洞的出现过程
之后会针对 Poc 进行代码理解,并试图理解漏洞造成方式(BPf模块)
脏牛的提权操作过程与此相同,只不过漏洞造成的方式并不相同:
脏牛是利用内存机制和 Linux 内核处理机制来达到提权的目的
而本文讲到的提权是同样也是利用内存机制,但不是由 Linux 内核造成,而是由 BPf 模块
果然怎么保证内存安全和合理分配也是要研究的啊
本文中用到的操作系统和工具为:
1.Ubuntu 16.04 LTS
2.hyper-v 虚拟机
-
系统安装 , 无脑下一步即可,不要忘记弄上普通用户
-
设置 root 账户
由于 Ubuntu 在初始化时并没有设置 root 账户
所以要自己手动设置 root 账户
sudo passwd
- 登入 root 账户
su
输入刚才设定的密码就可以了
跟上图一样就可以
前面出现 root 就可以了
- 查看 Linux 内核
uname -r
这个版本应该是已经修改的 Linux 内核了
- 修改 Linux 内核
查找 Linux 内核
apt-cache search linux
安装 Linux 内核
sudo apt-get install linux-headers-4.4.0-92-generic linux-image-4.4.0-92-generic
- 修改内核配置信息
sudo gedit /boot/grub/grub.cfg
修改前
修改后(注意修改的版本)
保存
重启
reboot -n
检查内核信息
修改成功
- 将提权文件传输
在这里我用的是 XFTP
但是这里的 Ubuntu 并没有安装 OpenSSH
所以我们要手动安装
apt install ssh
获取本机 IP
ip a
配置 XFTP ,传输文件即可
我们返回 Linux 查看
可以看见我们传的 .c 文件已经传输了
- 进行编译
gcc upstream44.c -o exploit
此时我们可以看见生成了 exploit 文件
- 执行提权文件
./exploit
这时候我们看见我们由普通用户转为了 root 用户
提权成功
到底是怎么实现的呢?
得抽空看看源代码才能知道了