CVE-2019-13272:Linux本地内核提权漏洞复现

本文作者:axKcV(Timeline Sec核心成员)

本文共766字,阅读大约需要2分钟

0x00 简介

2019年07月20日,Linux正式修复了一个本地内核提权漏洞。通过此漏洞,攻击者可将普通权限用户提升为Root权限。

0x01 漏洞概述

当调用PTRACE_TRACEME时,ptrace_link函数将获得对父进程凭据的RCU引用,然后将该指针指向get_cred函数。但是,对象struct cred的生存周期规则不允许无条件地将RCU引用转换为稳定引用。

PTRACE_TRACEME获取父进程的凭证,使其能够像父进程一样执行父进程能够执行的各种操作。如果恶意低权限子进程使用PTRACE_TRACEME并且该子进程的父进程具有高权限,该子进程可获取其父进程的控制权并且使用其父进程的权限调用execve函数创建一个新的高权限进程。

0x02 影响版本

目前受影响的Linux内核版本:

Linux Kernel < 5.1.17

0x03 环境搭建

创建一个低权限账户

useradd test   # 创建test用户passwd test    # 给test用户设置密码

切换到test用户

su test

查看系统内核版本是否小于5.1.17

uname-a

0x04 漏洞利用

查看当前用户和当前用户的UID

下载漏洞利用脚本,保存为poc.c文件

https://github.com/bcoles/kernel-exploits/tree/master/CVE-2019-13272

使用gcc编译c文件,生成exp文件

gcc poc.c -o exp

运行生成的exp

./exp

可以看到已成功利用exp将普通用户test提升为root

查看一下成功利用后的当前用户

查看当前用户的UID,已变为root

0x05 修复方式


补丁修复链接:

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6994eefb0053799d2e07cd140df6c2ea106c41ee

0x06 小结


此漏洞为本地提权漏洞,在vps是不能成功的,所以对于渗透测试人员来说,该漏洞更适用于在企业内网中做测试,对于甲方安全人员,只有三个字,打补丁。

vps上执行exp结果:

EXP脚本:

https://github.com/bcoles/kernel-exploits/tree/master/CVE-2019-13272

参考链接:

https://www.secpulse.com/archives/110052.html

本文分享自微信公众号 - 小白帽学习之路(bat7089)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-10-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏编程语言xuetang

Linux中配置Java开发环境

rpm是管理套件命令,-qa表示使用询问模式查询所有套件;grep表示查询文件里符合条件的字符串;java表示查询包含java的字符串

12930
来自专栏Linyb极客之路

Java 如何有效地避免OOM:善于利用软引用和弱引用

想必很多朋友对OOM(OutOfMemory)这个错误不会陌生,而当遇到这种错误如何有效地解决这个问题呢?今天我们就来说一下如何利用软引用和弱引用来有效地解决程...

9250
来自专栏Rust语言学习交流

【Rust日报】2019-10-02 InfoQ 趋势报告- Rust 从创新阶段转变为早期采用阶段

Rust 已经从创新阶段转变为早期采用阶段,这主要是由于它在基础设施和网络数据平面空间(例如,Habitat和Linkerd 2.0)中的应用。Rust 语言也...

13420
来自专栏Linyb极客之路

高手总结的9种 OOM 常见原因及解决方案

当堆内存(Heap Space)没有足够空间存放新创建的对象时,就会抛出 java.lang.OutOfMemoryError:Javaheap space 错...

20030
来自专栏Linyb极客之路

分布式任务调度框架技术选型

很多业务场景需要我们某一特定的时刻去做某件任务,定时任务解决的就是这种业务场景。一般来说,系统可以使用消息传递代替部分定时任务,两者有很多相似之处,可以相互替换...

32650
来自专栏JiekeXu之路

Oracle 12CR2 安装配置与基础学习

https://www.oracle.com/database/technologies/oracle-database-software-downloads....

23140
来自专栏生信宝典

知道肠道菌种组成之后怎么做功能注释?

在广大粉丝的期待下,《生信宝典》联合《宏基因组》在2019年11月1-3日,北京鼓楼推出《宏基因组分析》专题培训第六期,为大家提供一条走进生信大门的捷径、为同行...

17630
来自专栏咸鱼学Python

Python | Python学习之unicode和utf8

在很久很久以前,美国人发明了计算机,计算机只能处理数字也就是把文字转换为8个bit也就是一个字节,8个bit最大能表示的数字为255,而[A-Z]、[a-z]、...

10760
来自专栏编程珠玑

为什么执行自己的程序要在前面加./

在说明清楚问题之前,我们必须了解shell是如何运行程序的。首先我们必须要清楚的是,执行一条Linux命令,本质是在运行一个程序,如执行ls命令,它执行的是ls...

10140
来自专栏前端自习课

【Gitlab】371- GitLab从安装到全自动化备份一条龙

1.在新服务器上安装并搭建好gitlab2.手动+自动将旧服务器上的gitlab备份3.手动+自动将gitlab备份包scp到新服务器上4.手动+自动恢复新服务...

9330

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励