漏洞介绍
WebLogic是Oracle公司出品的基于JavaEE架构的中间件,用于开发、集成、部署和管理大型分布式 Web 应用、网络应用和数据库应用。
2019年10月14日,Sudo官方发布了Sudo 1.8.28版本,其中包含sudo root权限绕过漏洞的补丁修复。
漏洞编号是CVE-2019-14287,当sudo配置为允许用户以任意方式运行命令时用户通过Runas规范中的ALL关键字,可以通过指定用户ID -1或4294967295以root用户身份运行命令。
具有足够sudo权限的用户可以使用它来运行Runas规范明确禁止使用的root命令,以这种方式运行的命令的日志条目将列出目标用户为4294967295而不是root。
利用条件
1.sudo -v < 1.8.28
2.知道当前用户的密码
3.当前用户存在于sudo权限列表
漏洞分析
udo程序是为了让用户使用自己的登录密码来以其他用户身份执行命令,无需输入密码,有趣的是,攻击者可以利用此漏洞,只需指定用户ID“ -1”或“ 4294967295”即可以root身份运行命令。
因为将用户ID转换为用户名的函数将-1或其无符号等效4294967295误认为是0,该值始终是root用户的用户ID
利用漏洞要求用户具有 sudo 权限,从而以任意用户 ID 运行命令。一般而言,用户的 sudoers 条目在 Runas 规范中具有特殊值 ALL。
Sudo 支持在 sudoers 策略允许的情况下,以用户指定的名称或用户 ID 运行命令。
例如,如下 sudoers 条目允许 id 命令以任意用户身份运行,因为它包含 Runas 规范中的关键字ALL。
myhost alice = (ALL) /usr/bin/id
用户不仅能够以其它合法用户身份运行该 id 命令,还能使用 #uid 语法以任意用户 ID 运行该命令,例如:
sudo -u#12345 id -u
将返回12345,然而,sudo 在运行命令前用户修改用户 ID 的setresuid(2) 和 setreuid(2)系统调用将特殊对待用户 ID为-1(或其未签名的等同值 4294967295)而且并不会修改该值的用户 ID。因此,
sudo -u#-1 id -u
或者
sudo -u#4294967295 id -u
会返回 0。这是因为 sudo命令本身就已经以用户 ID 为0 运行,
因此当 sudo 试图将用户 ID 修改成 -1时,不会发生任何变化。
这就导致 sudo 日志条目将该命令报告为以用户 ID 为 4294967295而非 root (或者用户ID为 0)运行命令。此外,由于通过–u 选项指定的用户 ID 并不存在于密码数据库中,因此不会运行任何 PAM 会话模块。
如果sudoers 条目被写入允许用户以除 root 身份以外的用户身份运行命令,则可利用该 bug 绕过该限制。例如,给定如下 sudoers 条目:
myhost alice = /usr/bin/id
漏洞复现
查看sudo版本,确定sudo -v < 1.8.28
编辑/etc/sudoers文件,增加对test账户设置的权限
test ALL=(ALL,!root) /bin/bash
保存后,退出。
参考信息
https://thehackernews.com/2019/10/linux-sudo-run-as-root-flaw.html
https://www.sudo.ws/alerts/minus_1_uid.htm
http://vulsee.com/archives/vulsee_2019/1015_9074.html
https://mp.weixin.qq.com/s/bb6Hd3JdYiLilqdP_-INtA
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论