linux用root权限执行命令,Linux曝新安全漏洞:用户执行sudo命令可获取root权限

来自 Qualys Security 的安全专家,最近发现了新的 Linux 系统漏洞。他们发现,利用该漏洞可以实现用户权限的提升,并可以覆盖文件系统中的文件。

25a36532e8ddd758c1c31f427a3f1bdf.png

该高危漏洞 CVE-2017-1000367(High级别)发生在 Linux 的 Sudo 命令中的 get_process_ttyname() 函数中。攻击者可以利用这个漏洞,让普通用户在使用 Sudo 命令获得临时权限时执行一些操作,将他们的权限提升到root级别。在运用 SELinux 机制的系统上,Sudo 用户可以使用命令行的输出提升自己的用户权限,还可以在文件系统中覆盖文件系统中的文件(甚至覆盖由root用户所拥有的文件)。

漏洞解析

研究员发现 Linux 系统中 Sudo 的 get_process_ttyname() 有这样的漏洞:

这个函数会打开 “ /proc/[pid]/stat ” (man proc)目录,并从 field 7 (tty_nr) 中读取设备的 tty 编号。但这些field 是以空格分开的,而 field 2中(comm,command的文件名)可以包含空格(CVE-2017-1000367)。

那么,当我们从符号链接 “./     1 ” 中执行 Sudo 命令时,get_process_ttyname() 就会调用sudo_ttyname_dev() 来在内置的 search_devs[] 中努力寻找并不存在的“1”号 tty设备 。

然后,sudo_ttyname_dev() 开始调用 sudo_ttyname_scan() 方法,遍历“/dev”目录,并以广度优先方式寻找并不存在的 tty 设备“1”。

最后的这个遍历过程中,我们可以利用漏洞让当前的用户伪造自己的 tty 成为文件系统上任意的字符设备,然后在两个竞争条件下,该用户就可以将自己的tty伪造成文件系统上的任意文件。

在一个SELinux系统中,如果用户是通过 Sudo 命令获得临时权限的话,并没有完全取得该用户root权限。由于 relabel_tty()  (在src/selinux.c中) 在用户的 tty 和 dup2() 中调用了 open(O_RDWR|O_NONBLOCK) ,并用在命令行标准输入输出中(stdin, stdout,和stderr),那么在这个情况下的 Sudo 用户就能够获取 root 权限了。

因此利用这个漏洞,sudo用户就可以用命令行输出覆盖文件系统中的任意文件。

4391ed1e5223bdfdff4a3b428858dac7.png

Linux 系统问题

fac33466fc3a30000c3ffb8e50ec60a5.png

这个文件是用在命令行的标准输入/输出/错误文件之中。如果 “/dev/shm” 之下的符号链接在被使用sudo命令打开之前,已经替换成另一个文件的连接,就可以通过写入标准输出或者错误来覆盖任意文件。这可以通过重写可信文件(例如etc/shadow或/etc/sudoers)来升级到完全根访问模式。

该Linux漏洞会影响所有从1.8.6p7到1.8.20的版本,Sudo1.8.20p1版本修复了这个问题。目前,该漏洞根据CVSS3评级标准记为7.8分。

转载来源:REEBUF

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值