美文网首页
linux提权

linux提权

作者: 7cf6fadda7c4 | 来源:发表于2019-03-15 21:24 被阅读0次

此漏洞可用于从未授权进程中执行内核代码,恶意访问者只需要本地普通权限,就能利用该漏洞导致拒绝服务(系统奔溃)或提升到管理员权限。

1、登录

2、uname -a //查看系统内核版本/

3、id //查看用户属性信息

可以看到,当前权限为普通的用户,接下来我们进入POC所在目录,使用命令:

cd /test//进入目录test

接下来执行,使用命令:

>>>./chocobo_root  //在当前目录执行chocobo_root文件

4、可以看到,已经成功的提升到root权限,使用 id 查看权限:root

vi 文件名                             //查看文档

cat 文件名                          //查看文档

转载:https://www.ichunqiu.com/experiment/detail?id=57085&source=1

步骤1:分析漏洞

本步骤将分析其漏洞产生的原理

这个漏洞问题出在inside packet_set_ring() 和 packet_setsockopt()函数中,我们可以看到当套接字使用PACKET_RX_RING选项时候,packet_set_ring()会调用setsockopt()函数,如下:

switch (po->tp_version) {

                case TPACKET_V3:

                /* Transmit path is not supported. We checked

                * it above but just being paranoid

                */

                        if (!tx_ring)

                                init_prb_bdqc(po, rb, pg_vec, req_u);

                        break;

                default:

                        break;

                }

在上述代码中可以看到,如果套接字的版本是TPACKET_V3,一个 timer_list对象将会在init_prb_bdqc()调用时被 packet_set_ring()初始化。

上述函数的流程如下:

packet_set_ring()->init_prb_bdqc()->prb_setup_retire_blk_timer()->prb_init_blk_timer()->prb_init_blk_timer()->init_timer()

当套接字关闭,packet_set_ring()会再次被调用,如果packet的版本> TPACKET_V2,会释放和删除先前初始化的定时器:

if (closing && (po->tp_version > TPACKET_V2)) {

                /* Because we don't support block-based V3 on tx-ring */

                if (!tx_ring)

                        prb_shutdown_retire_blk_timer(po, rb_queue);

        }

当packet版本为TPACKET_V1时,init_prb_bdqc()将会在packet_setsockopt()后被执行,在packet_set_ring() 函数前返回。

ring buffer被初始化后,可以尝试拒绝改变套接字版本。但是这样的校验是不完整的。

case PACKET_VERSION:

        {

...

          if (po->rx_ring.pg_vec || po->tx_ring.pg_vec)

                  return -EBUSY;

在 packet_set_ring()中init_prb_bdqc() 和 swap(rb->pg_vec, pg_vec) 之间的调用有足够的空间来竞争这条代码路径

当套接字关闭,packet_set_ring()将不会删除定时器,因此这时套接字的版本为TPACKET_V1,timer_list 结构体描述定时器对象定位在内部的packet_sock结构体中,套接字将调用kfree()释放。

我们可以在通过UAF利用定时器对象上对SLAB分配器实现不同的中毒利用,这最终会导致当定时器过期内核跳到处理函数。

新建AF_PACKE套接字你需要CAP_NET_RAW在你的网络命名空间 ,然而系统中非权限的进程在非权限的命名空间可以获得这个能力(Ubuntu, Fedora等发行版),这个漏洞可以在容器内触发,从而入侵整个主机内核。在android上,有 gid=3004/AID_NET_RAW的进程可以新建AF_PACKET套接字 (mediaserver),从而触发这个漏洞。

相关文章

  • Linux提权

    0x00 Linux提权基础命令 0x01 Linux提权工具 Linux内核CVE提权(github):可能会导...

  • linux 提权-Crontab提权

    前言 记录一下linux提权系列的Crontab计划任务提权的学习过程。 crontab 命令 crontab命令...

  • linux 提权-SUID提权

    前言 最近想着学习linux提权的一些姿势,这里简单分享学习SUID提权的一些知识点。 权限解读 先来父复习一下l...

  • linux 提权-sudo提权

    前言 最近听闻sudo刚刚出来了新漏洞,而最近正好在看linux提权这块知识点。借此梳理一下sudo提权相关的姿势...

  • linux提权

    虽然还没有看暗月的教程,但要提醒自己不要忘了···

  • linux提权

    http://bobao.360.cn/learning/detail/4512.html

  • linux提权

    当我们拿到了一台Linux服务器的低权限账号,于是,我们想要通过技术手段提权至 root 用户权限,以执行更多的操...

  • linux提权

    此漏洞可用于从未授权进程中执行内核代码,恶意访问者只需要本地普通权限,就能利用该漏洞导致拒绝服务(系统奔溃)或提升...

  • Linux提权

    简单概述Linux的几种提权的办法。 内核溢出提权 mysql udf提权 上传库文件 执行库文件创建命令执行函数...

  • 记录Linux下的钓鱼提权思路

    参考Freebuf上的提权文章(利用通配符进行Linux本地提权):http://www.freebuf.com/...

网友评论

      本文标题:linux提权

      本文链接:https://www.haomeiwen.com/subject/ddkzeqtx.html