专栏首页犀牛饲养员的技术笔记天呐,经常用的sudo居然有漏洞?

天呐,经常用的sudo居然有漏洞?

这两天看到一个新闻让我很是震惊,linux上最常用的命令之一, sudo 命令居然被爆出有安全漏洞。作为一个程序员,可以说几乎天天和这个命令打交道,哪能想到这么成熟的命令工具居然隐藏着安全漏洞。

sudo介绍

大部分开发运维对这个命令都非常熟悉,不过考虑到有效读者不了解我还是简单介绍下。

sudo 指“超级用户”。作为一个系统命令,其允许其它非 root 用户以特殊权限来运行程序或命令,而无需切换使用环境。举个例子:

我下面已一个普通用户在 /usr/local/ 目录下新建一个目录,直接运行会报没有权限的错误,

user1@user1:/usr/local$ mkdir test
mkdir: cannot create directory ‘test’: Permission denied

必须要这样才可以,

user1@user1:/usr/local$ sudo mkdir test
user1@user1:/usr/local$ ls
bin  etc  games  include  lib  man  sbin  share  src  test

一个普通用户要想使用sudo,必须有管理员(root)配置 sudoers 文件,对用户的权限进行定义。类似下面这样:

# User privilege specification
user2    ALL=(ALL:ALL) ALL

上述命令中:

  • user2 表示用户名
  • 第一个 ALL 指示允许从任何终端、机器访问 sudo
  • 第二个 (ALL:ALL) 指示 sudo 命令被允许以任何用户身份执行,后面那个ALL是用户所在的群组
  • 第三个 ALL 表示所有命令都可以作为 root 执行

如果没有加这个配置,执行的时候会报如下的错误:

user2@pony:/home$ sudo mkdir test2
[sudo] password for user2: 
user2 is not in the sudoers file.  This incident will be reported.

如何利用漏洞

我根据下面这篇文章,进行问题复现,

https://www.sudo.ws/alerts/minus_1_uid.html

我使用的linux版本是 Ubuntu 18.04.3 LTS 。

首先我配置用户 user2 的权限,

# User privilege specification
user2    ALL=(ALL,!root) /bin/bash

这个配置的意思是,user2用户可以用任何用户(除了root)执行 /bin/bash 命令。

然后我试着执行,

user2@pony:~$ sudo -u#-1 /bin/bash
sudo: unknown user: #-1
sudo: unable to initialize policy plugin

什么鬼,好像没有啥问题啊,直接报错了,并没有切换到 root 用户,再试着执行,

user2@pony:~$ sudo -u#-1 id -u
sudo: unknown user: #-1
sudo: unable to initialize policy plugin

也没有任何问题啊,那这个漏洞究竟该怎么复现呢??

按照上面文章的说法,之所以会产生这个漏洞,是因为将用户 ID 转换为用户名的函数会将 -1(或无效等效的 4294967295)误认为是 0,而这正好是 root 的用户 ID 。

但是,我实际操作发现并复现到这个漏洞。感觉应该是我哪里配置的不对?

总结

我也不知道为啥我复现不了问题。请大神执教!

本文分享自微信公众号 - 犀牛饲养员的技术笔记(coder_start_up),作者:siwuxie18

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

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • ES对磁盘的要求都有哪些,大部分你可能不知道

    有一个问题被关注的比较少,就是ES对本地磁盘的占用情况。有人可能觉得这个问题的答案显而易见,不就是ES软件本身占用的空间,还有索引数据持久化占用的磁盘空间,另外...

    用户7634691
  • 这可能是讲雪花算法最全的文章

    snowflake中文的意思是 雪花,雪片,所以翻译成雪花算法。它最早是twitter内部使用的分布式环境下的唯一ID生成算法。在2014年开源。开源的版本由s...

    用户7634691
  • ES系列之一文带你避开日期类型存在的坑

    时间相关的字段是ElasticsSearch(以下简称ES)最常用的字段了,几乎所有的索引应用场景都会有时间字段,一般用于基于时间范围的搜索,聚合等场景。但是由...

    用户7634691
  • 『中级篇』容器网络之host和none(29)

    PS : none 和host的网络基本也讲解完成了,他们各有利弊,其实用到最多的还是bridage,了解他们的之间的区别。

    IT故事会
  • 『中级篇』多容器复杂应用的部署(30)

    PS : none 和host的网络基本也讲解完成了,他们各有利弊,其实用到最多的还是bridage,了解他们的之间的区别。

    IT故事会
  • 『中级篇』容器网络之host和none(29)

    PS : none 和host的网络基本也讲解完成了,他们各有利弊,其实用到最多的还是bridage,了解他们的之间的区别。

    IT故事会
  • 如何在CentOS 7上安装Elasticsearch 1.7,Logstash 1.5和Kibana 4.1(ELK Stack)

    在本教程中,我们将介绍在CentOS 7上安装Elasticsearch ELK Stack,即Elasticsearch 1.7.3,Logstash 1.5...

    苏子晨
  • 如何在Ubuntu 14.04上安装Elasticsearch 1.7,Logstash 1.5和Kibana 4.1(ELK Stack)

    在本教程中,我们将在Ubuntu 14.04上重新安装Elasticsearch ELK Stack,即Elasticsearch 1.7.3,Logstash...

    水门
  • 22课时、19大主题,CS 231n进阶版课程视频上线!

    计算机视觉在日常生活中已经无处不在。从搜索引擎、图像理解、地图、医疗、无人机、自动驾驶到各类手机 app,都离不开计算机视觉。这些应用中有许多像图像分类和目标检...

    计算机视觉联盟
  • Hue中使用Oozie创建Shell工作流在脚本中切换不同用户

    前面Fayson讲过《Hue中使用Oozie创建Ssh工作流时sudo命令执行失败问题分析》,如果不在Shell脚本中使用sudo命令该如何切换到其它呢?本篇文...

    Fayson

扫码关注云+社区

领取腾讯云代金券