前言
近期看到了Ubuntu本地提权漏洞所以顺手演示一份,实践一波!
漏洞描述
Ubuntu是一个以桌面应用为主的开源GNU/Linux操作系统,基于Debian GNU/Linux 。近期有白帽子爆出 ubuntu 的最新版本(Ubuntu 16.04)存在本地提权漏洞,漏洞编号为CVE-2017-16995。该漏洞存在于调用eBPF bpf(2)的Linux内核系统中,当用户提供恶意BPF程序使eBPF验证器模块产生计算错误,导致任意内存读写问题, 低权限用户可使用此漏洞获得管理权限。
该漏洞在老版本中已经得到修复,然而最新版本中仍然可被利用,官方暂未发布相关补丁,漏洞处于0day状态。
影响版本
Linux Kernel Version 4.14-4.4
仅影响Ubuntu/Debian发行版本
漏洞等级
高危
环境搭建
目标主机:Ubuntu 192.168.11.158
攻击主机:在本次漏洞复现过程中攻击主机只是起到一个上传exploit到目标主机以及实现远程操作的功能,这里为了方便就不再使用其他主机作为攻击机了,直接在Ubuntu中操作
Ubuntu IP地址:
Ubuntu当前系统、当前用户权限、当前内核:
这里的内核版本是4.13.0-36-generic,该Ubuntu 16.04是从官方网站刚刚下载的纯净版,无其他任何安装程序,但是这里的内核版本不再影响范围之内,所以为了演示我们需要修改以下内核版本,修改方式如下:
搜索内核版本信息:
下载在漏洞影响范围内的内核版本,这里选择4.4.0-92 版本(读者可以自我选择安装版本进行复现)
修改内核配置信息:
修改前信息:
修改后的信息(注意自己的版本):
保存之后重启
确认当前内核版本信息:
漏洞复现
(1)上传Exploit到Ubuntu中
(2)编译exploit
(3)执行exploit程序
(4)查看当前用户权限
成功提权!
漏洞修复方案
(1)目前暂未有明确的补丁升级方案提出,但是建议用户通过修改内核参数限制普通用户使用bpf(2)系统调用来缓解:
设置参数“kernel.unprivileged_bpf_disabled = 1”通过限制对bpf(2)调用了访问来防止这种特权升级
之后以一个普通用户的权限再次运行exploit时:
可以看到无法完成提权了!
(2)升级Linux Kernel 版本,需要重启服务器之后生效:
这一步在环境搭建过程中已经描述过了具体的操作,用户只需要修改内核版本即可!
总结
像这样的内核漏洞的如果出现会引起较为严重的影响,用户或企业需要尽快的完成修复,避免造成始料未及的损失。同时在修复时也最好采用可以从根本上解决问题的方法为好!