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

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

这种攻击方法非常简单,Backhouse在官方博客中写道:“使用终端中的一些简单命令,并单击几次鼠标,标准用户就可以为自己创建一个管理员帐户。”

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

Backhouse是如何操作的?我们接着往下看。

攻击方法

首先打开终端,在你的主目录下创建一个软链接:

ln -s /dev/zero .pam_environment

(注:如果以上命令无法运行,说明已经存在名为.pam_environment的文件,请把这个文件重命名做好备份!)

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

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

此时,一个名为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分多钟的视频,不明白操作方法的可以前去观看:

http://mpvideo.qpic.cn/0b78geaagaaanaaeqt5lsrpvamodamyqaaya.f10002.mp4?dis_k=3284cc88ebe5166deefa9446d816ea85&dis_t=1605689349&vid=wxv_1601707293463592966&format_id=10002

攻击原理

该漏洞利用了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之外的其他桌面环境,则暂时不受影响。

Ubuntu被曝严重漏洞:切换系统语言+输入几行命令,就能获取root权限(仅支持ubuntu桌面版、提权)相关推荐

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

    晓查 发自 凹非寺  量子位 报道 | 公众号 QbitAI 无需系统密码,就能添加新的sudo用户.获取root权限,事后还能删除不留痕迹. 这是GitHub安全研究员Kevin Backhouse ...

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

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 晓查 发自 凹非寺  量子位 报道 | 公众号 QbitAI 无需系统密码,就能添加新 ...

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

    公众号关注 "GitHubDaily" 设为 "星标",带你了解技术圈内新鲜事! 来自量子位 无需系统密码,就能添加新的 sudo 用户.获取 root 权限, ...

  4. 魅蓝3如何root_我的魅蓝3系统是5.1.4.2Y,怎么获取root权限,不是说魅蓝官网开放权限了吗?登录账户找不到啊?...

    之前也是想root在知乎上找不到办法,前段时间终于搞定,希望有帮助. =========== 首先感谢制作魅蓝3 Android ROM的大神----眷恋阳阳 想必很多人跟我一样,在购买了魅蓝3之后才 ...

  5. Shell脚本切换root用户或获取root权限

    前言 需求:Shell脚本不能通过root用户执行,只能通过普通用户执行.但是脚本中的某些命令需要时root权限. 想法:在执行需要root权限的命令时切换到root用户 或者 拿到root权限. 一 ...

  6. android 语音和输入法按钮切换,android 切换系统语言,输入法也随之切换

    为什么有时候切换系统语言,输入法也随之切换 在系统有谷歌拼音输入法(Pinying输入法)和android 键盘输入法(Latin 输入法)的时候,此时系统的输入法不是第三方输入法. 在这时候去切换系 ...

  7. Android 获取当前系统语言和切换系统语言

    最近有需求需要切换系统语言的功能,查阅api最终搞定,代码分享如下: 1.切换语言 public void updateLanguage(Locale locale) {try {Object obj ...

  8. Android 切换系统语言

    切换系统语言分为下面两个步骤: 1. 创建不同语言资源: 2. 替换当前页面 Context 所持有的资源: 一.创建不同语言资源 创建步骤如下: 二.替换资源 界面需要重新创建,使用 recreat ...

  9. Android 9.0 代码切换系统语言

    最近有个功能要求切换系统语言,通过查询资料找到用反射的方法进行系统设置,但是感觉实现方式太麻烦了,后来看源码发现 LocalePicker 这个类里面有 updateLocale 方法能够轻松完成系统 ...

最新文章

  1. JMX 与系统管理--转
  2. 为什么Android要采用Binder作为IPC机制?
  3. mysql5.7版本安装部署详细步骤
  4. jpa执行sql脚本_JPA persistence.xml SQL脚本定义
  5. 机器学习算法(8)——朴素贝叶斯、最小风险贝叶斯决策
  6. java nio 面试题_10个最高频的Java NIO面试题剖析!
  7. [swift] LeetCode 35. Search Insert Position
  8. 程序员修炼之道 pdf_程序员修炼之道-注重实效
  9. 超级搜索术5-商业变现/生活便捷
  10. 【python】简单的车辆管理系统
  11. 贾俊平统计学思维导图- 第二章 数据搜集
  12. 短信API接口组团出战,加速企业转型升级
  13. Windows 11的临时文件清理工具
  14. 日立JP1当选07年度制造业信息化杰出供应商
  15. Android 裸眼3D效果View
  16. 使用certbot-auto脚本安装Certbot 生成https证书
  17. 【弱监督显著目标检测论文】Weakly-Supervised Salient Object Detection via Scribble Annotations
  18. 都快2021了,你还不知道怎么成为优秀程序员?大牛推荐6个软件开发步骤
  19. 以核心素养为导向的计算机教学方式,《核心素养导向的课堂教学》导读
  20. 服务器硬件与 Linux 初体验

热门文章

  1. SQLite | SQLite 与 Pandas 比较篇之一
  2. 中山大学附属第一医院精准医学研究院 消化系统肿瘤研究于君课题组招聘启事...
  3. 高颜值可定制在线绘图工具
  4. Nifty File Lists for Mac(文件列表创建工具)
  5. 兼容最新PS2021 Raya Pro 5 for Mac——值得推荐的PS终极数字混合扩展面板
  6. python做炫酷的界面_用python打造可视化爬虫监控系统,酷炫的图形化界面
  7. 《深入浅出程序设计竞赛(基础篇)》第1部分 语言入门 第3章 分支结构程序设计
  8. P1287 盒子与球(python3实现)
  9. es6 filter函数的用法_Python 函数式编程指北,不只是面向对象哦!超级详细!
  10. Java学习之JDK的安装与配置