专栏首页运维之美Linux 曝出严重安全漏洞,受限用户亦可提权至 Root 身份运行任意命令!(内附解决方案)

Linux 曝出严重安全漏洞,受限用户亦可提权至 Root 身份运行任意命令!(内附解决方案)

作为 Linux 中最常使用的重要实用程序之一,sudo 几乎安装在每一款 UNIXLinux 发行版上的,以便用户调用和运行核心命令。

然而近期这个命令曝出的一个严重的本地提权漏洞,即便配置中明确不允许 root 用户访问,该漏洞仍可允许恶意用户或程序,在目标 Linux 系统上以 root 用户身份执行任意命令。

sudo 作为一个系统命令,其允许普通用户以特殊权限来运行程序或命令,而无需切换使用环境。

漏洞详情

据悉,该漏洞由苹果信息安全部门的 Joe Vennix 追踪发现(漏洞的 CVE ID 为 CVE-2019-14287 )。

如果想要利用这个漏洞,只需按以下的方式运行即可。

$ sudo -u#-1 id -u

或者

$ sudo -u#4294967295 id -u

使用 sudo 命令时,你可以直接指定用户的 UID 来代替用户名。

之所以会产生这个漏洞,是因为将用户 ID 转换为用户名的函数会将 -1(或无效等效的 4294967295)误认为是 0,而这正好是 root 用户 User ID 。此外,由于通过 -u 选项指定的 User ID 在密码数据库中不存在,因此不会运行任何 PAM 会话模块。

如何利用漏洞

CVE-2019-14287 是管理员在配置文件中用了 ALL 关键词后造成的。当 /etc/sudoers 文件中存在 *=(ALL, *) 形式的配置时,本地攻击者可以通过指定用户 ID 为 -1 或者 4294967295,从而以 root 权限在服务器上执行命令。例如:

user_name ALL=(ALL, !root) /usr/bin/vim

当存在这种 ALL=(ALL, !root) 形式的配置时,表示对被切换到的用户进行了 ALL(所有用户) 和其他用户的剔除操作。例如上面的含义就是:允许 user_name 用户以非 root 权限之外的所有用户权限运行 vim 命令。

下面我们来看一个实例,首先配置一个允许 r7 用户以非 root 权限之外的所有用户权限运行 vim 命令的规则。

然后,直接以 r7 用户身份切换为 root 来运行 vim 命令。

我们可以看到,命令执行请求被拒绝了。

接着,我们利用漏洞中所描述的方式进行身份切换。

我们可以看到成功切换为 root 用户,并打开了 /etc/shadow 文件。

/etc/shadow 文件只有具备 root 权限的用户才能进行访问。

因此,我们可以很轻易地利用该漏洞在 vim 命令下启动一个具有 root 权限的 Shell,然后执行任何命令。

# 在 vim 中执行外部命令,下面这个就表示执行一个带有 root 权限的 SHELL。
:!/bin/bash

漏洞修复建议

  1. 该漏洞影响最新版本 1.8.28 之前的所有 sudo 版本,目前各大 Linux 发行版都已经向用户推送最新版本,请及时升级到 sudo 1.8.28 版本。
  2. 检查 /etc/sudoers 是否存在 ALL 关键词的复合限制逻辑。

参考文档

  1. https://www.google.com
  2. https://www.cnbeta.com/articles/tech/899229.htm
  3. https://www.anquanke.com/post/id/188743
  4. https://nosec.org/home/detail/3045.html

本文分享自微信公众号 - 运维之美(Hi-Linux)

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

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Linux基础学习4

    出 处:https://www.cnblogs.com/guokaifeng/

    郭大侠
  • 19 个强大、有趣、好玩、又装B的 Linux 命令!

    输出一句话,有笑话,名言什么的 (还有唐诗宋词sudo apt-get install fortune-zh)

    程序员小明
  • Mac下配置免安装的tomcat

    在jdk安装好的情况下我们只需要在终端运行我下好的压缩包中的starup.sh文件就能正常运行tomcat服务器了 在终端运行shutdown.sh文件就能...

    用户4478423
  • 玩转BashBunny

    这几天需要准备一个威胁演示的demo,正好手头上有BashBunny,因此我就测试了一波,特此记录。

    安恒网络空间安全讲武堂
  • 纸牌游戏中的洗牌是如何实现的?

    对于算法书买了一本又一本却没一本读完超过 10%,Leetcode 刷题从来没坚持超过 3 天的我来说,算法能力真的是渣渣。但是,今天决定写一篇跟算法有关的文章...

    数据森麟
  • 原生iOS嵌入Unity导出的Xcode工程

    将classes中main.mm 中的代码复制到项目的main.m中 并把后缀也改为mm 并将

    老沙
  • 带你使用Windows上的Linux(Win10子系统)

    在过去我们需要在windows下使用liunx,要么装虚拟机要么装双系统模式。在Win10时代又增了一个方法,可以使用他的子系统。现在教大家如何安装以及使用。

    23号杂货铺
  • Linux 基础学习1

    [root@localhost ~]# echo $SHELL /bin/bash

    郭大侠
  • Mac安装配置zookeeper

    首先从官网下载ZooKeeper压缩包,然后解压下载得到的ZooKeeper压缩包,发现有“bin,conf,lib”等目录。“bin目录”中存放有运行脚本;“...

    用户4478423
  • ubuntu1~16.04.9 下安装python3.6 详细教程(在腾讯云服务器上安装实例)

    1.输入 sudo add-apt-repository ppa:jonathonf/python-3.6

    用户2416682

扫码关注云+社区

领取腾讯云代金券