Linux kernel(CVE-2018-17182)提权漏洞复现
0x01 漏洞前言
Google Project Zero的网络安全研究人员发布了详细信息,并针对自内核版本3.16到4.18.8以来Linux内核中存在的高严重性漏洞的概念验证(PoC)漏洞利用。由白帽黑客Jann Horn发现,内核漏洞(CVE-2018-17182)是Linux内存管理子系统中的缓存失效错误,导致释放后使用漏洞,如果被利用,可能允许攻击者获得根权限目标系统上的特权。免费使用后(UAF)漏洞是一类内存损坏错误,非特权用户可利用这些错误来破坏或更改内存中的数据,从而导致拒绝服务(系统崩溃)或升级权限以获得管理权限访问系统Linux的内核漏洞于9月18日在OSS-安全邮件列表中公开,并在第二天在上游支持的稳定内核版本4.18.9,4.14.71,4.9.128和4.4.157中进行了修补。在58年3月16日版本中也有一个修复程序。为版本4.15.0-34.37的Ubuntu 18.04,内核linux-image-4.15.0-34-generic附加了一个丑陋的漏洞。它需(40min~1hour)在弹出root shell之前运行。
0x02 漏洞影响版本
Linux kernel 4.18.8及之前版本
0x03 漏洞复现
1. 本次复现环境:ubuntu18.04*64 内核版本:linux-image-4.15.0-34-generic
2. 添加更新源
sudo vi /etc/apt/sources.list
deb-src https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/ main restricted
3. 更新操作系统
sudo apt-get update
4. 更新操作系统
sudo apt-get dist-upgrade
5. 安装GCC和G++
sudo apt-get install gcc
sudo apt-get install g++
6.新建一个test账号
7.下载利用exp
git clone https://github.com/backlion/CVE-2018-17182.git
8.进入到vmacache目录,删除已编译好的文件。
rm puppet puppeteer suidhelper
9.通过运行compile.sh进行编译,当前目录下会生成三个二进制文件分别为:puppet, puppeteer,suidhelper
10.然后切换到普通用户权限test:
11.执行二进制提权文件puppeteer,大约需要等1到1个半小时,最终看到从test权限提升为root权限。
0x04漏洞修复建议
目前厂商已发布升级补丁以修复漏洞,补丁获取链接: