但使用-s或 -i标志运行sudoedit时,实际上并未进行转义,从而可能导致缓冲区溢出。 所有稳定版(默认配置) Sudo 1.8.2 到 1.8.31p2 所有旧版本(默认配置) 安全版本:Sudo 1.9.5p2或更新版本 漏洞检测方法 1、以非root账户登录系统运行如下命令: sudoedit -s / 若返回如图以“ sudoedit:”开头的错误,则当前系统可能存在安全风险。 (图片可放大查看) 1)若受影响,错误信息会出现如下提示 sudoedit: /: not a regular file 2)若已安装修复补丁,错误信息则是 usage: sudoedit [-AknS (图片可放大查看) 2、验证sudo版本及再次进行检测 这时其它sudo用户再使用 sudo -V sudoedit -s / ?
当用户指定的编辑器包含绕过sudoers策略的 " --" 参数时,拥有sudoedit访问权限的本地攻击者可通过将任意条目附加到要处理的文件列表中,最终在目标系统上实现权限提升。 执行攻击命令:(如果sudoedit后面接的文件和sudoers中的不是相同的文件,系统会要求输入root密码) export EDITOR="vi -- /etc/passwd" sudoedit / SUDOEDIT env_delete+="SUDO_EDITOR VISUAL EDITOR" Cmnd_Alias SUDOEDIT = sudoedit /etc/services root ALL=(root) NOPASSWD: SUDOEDIT 2、更新到最新版本的sudo。 参考链接 https://www.vicarius.io/blog/cve-2023-22809-sudoedit-bypass-analysis 历史漏洞
但使用-s或 -i标志运行sudoedit时,实际上并未进行转义,从而可能导致缓冲区溢出。 1.8.2 - 1.8.31p2 Sudo 1.9.0 - 1.9.5p1 不受影响版本 sudo =>1.9.5p2 3漏洞检测 3.1 人工检测 用户可以使用非root的账户登录系统,运行“ sudoedit 若返回如图以“ sudoedit:”开头的错误,则当前系统可能存在安全风险。 不受影响的系统将显示以“ usage:”开头的错误响应。 创建以下systemtap脚本(将文件命名为sudoedit-block.stap): probe process("/usr/bin/sudo").function("main") { 使用以下命令安装脚本:(使用root权限) # nohup stap -g sudoedit-block.stap & 该脚本将使得易受攻击的sudoedit二进制文件停止工作。
但使用 -s 或 -i 标志运行 sudoedit 时,实际上并未进行转义,从而可能导致缓冲区溢出。 Sudo 1.9.0 - 1.9.5p1 不影响版本: Sudo => 1.9.5p2 0x02 漏洞检测 查看sudo版本 sudo --version 检测是否存在漏洞,使用普通用户执行下面的命令 sudoedit -s / 若返回如图以 sudoedit: 开头的错误,则当前系统可能存在安全风险。
但使用 -s 或 -i 标志运行 sudoedit 时,实际上并未进行转义,从而可能导致缓冲区溢出。 检测方法 非root执行sudoedit -s / 若返回以“ sudoedit:”开头的错误,则当前系统可能存在安全风险。 ? 不受影响的系统将显示以“ usage:”开头的错误 4.
case 'e': ... 361 mode = MODE_EDIT; 362 sudo_settings[ARG_SUDOEDIT = flags) 533 usage(1); 但是我们发现了一个漏洞:如果我们以“ sudoedit”而不是“ sudo”的身份执行Sudo,则parse_args()会自动设置MODE_EDIT "; 270 mode = MODE_EDIT; 271 sudo_settings[ARG_SUDOEDIT].value = "true"; 272 } 因此,如果执行“ sudoedit -s”,那么我们将同时设置MODE_EDIT和MODE_SHELL(但不设置MODE_RUN),则避免转义代码,到达易受攻击的代码,并通过命令行溢出基于堆的缓冲区“ user_args”以单个反斜杠字符结尾的参数: sudoedit -s '\' `perl -e 'print "A" x 65536'` malloc(): corrupted top size
-2021-3156 漏洞级别:高危 受影响版本: sudo: 1.8.2 - 1.8.31p2 sudo: 1.9.0 - 1.9.5p1 检测方法: 以非root用户登录系统,并运行如下命令: sudoedit -s / - 如果响应一个以sudoedit:开头的报错,那么表明存在漏洞。
但使用-s或 -i标志运行sudoedit时,实际上并未进行转义,从而可能导致缓冲区溢出。 影响范围: Sudo 1.9.0 到 1.9.5p1 所有稳定版(默认配置) Sudo 1.8.2 到 1.8.31p2 所有旧版本(默认配置) 漏洞检测: 用户可以使用非root的账户登录系统,运行“ sudoedit 若出现如同,以sudoedit开头的错误,则存在风险 经测试,如果在sudo配置(/etc/sudoers)中权限足够细,那么普通用户是没有sudoedit执行权限的 ?
影响版本 Sudo 1.9.0 到 1.9.5p1 所有稳定版(默认配置) Sudo 1.8.2 到 1.8.31p2 所有旧版本(默认配置) 0x04 环境搭建 kali 2020 漏洞检测 sudoedit -s / 若返回如图以“ sudoedit:”开头的错误,则当前系统可能存在安全风险。
但使用-s或 -i标志运行sudoedit时,实际上并未进行转义,从而可能导致缓冲区溢出。 漏洞影响范围 Sudo 1.8.2 - 1.8.31p2 Sudo 1.9.0 - 1.9.5p1 漏洞检测 非root的账户,运行sudoedit -s /命令 如果出现以"sudoedit:"开头的错误响应
但使用 -s 或 -i 标志运行 sudoedit 时,实际上并未进行转义,从而可能导致缓冲区溢出。 1.8.31p2 Sudo 1.9.0 - 1.9.5p1 不受影响版本:sudo =>1.9.5p2 漏洞检测 查看sudo版本 sudo --version 检测是否存在漏洞,使用普通用户执行下面的命令 sudoedit -s / 若返回如图以“ sudoedit:”开头的错误,则当前系统可能存在安全风险。
系统,这样避免 root 密码被泄漏 这篇文章介绍了三种利用其留后门的方法,其中也涉及一个sudo有趣的特性,在极端条件下可能是系统的薄弱点;同时涉及一个没什么人关注的小知识点 sudo 配置后门 sudoedit 文件所有者后门 这个后门更偏向于一个概念性的后门,以趣味性为主吧 前段时间复现 CVE-2023-22809 的时候关注到 sudoedit (sudo -e) 这个程序,这个程序用来让可以sudo 的用户通过 sudoedit 以超级权限 (root) 编辑文件 经过测试,我发现sudoedit 编辑文件的逻辑在一些场景下可能有一些问题,会造成权限提升、代码执行等 1) 运维人员通过 sudoedit 编辑文件 可以看到,目前编辑的文件并不是 /etc/shadow ,而是 /var/tmp/shadow.XXWN6vSu, sudoedit 的思路是先拷贝一份 /etc/shadow ,之后编辑完再覆盖回去 看来,对文件也应该没有任何修改,但是 sudoedit 还是将临时文件覆盖了原本的 /etc/shadow 这样可能造成的危害大小主要取决于运维人员具体打开的文件,如果是计划任务文件则攻击者可能新建计划任务
但使用-s或 -i标志运行sudoedit时,实际上并未进行转义,从而可能导致缓冲区溢出,攻击者可以使用本地普通用户利用sudo获得系统root权限。 2. 在终端输入命令 sudoedit -s ‘\’ perl -e ‘print “A” x 65536’可以看到堆已经被破坏。 ? sudoedit和sudo -e的程序效果是一致的,如果将sudoedit替换为sudo -e,会使valid_flags为MODE_NONINTERACTIVE,而flags的MODE_SHELL位仍然为 问题转化如何通过传递给sudoedit的参数来控制user_args分配之前的堆布局使之符合上述要求。 接下来问题转化为如何控制传递给sudoedit的环境变量来产生size=0x80的空闲堆块。
所有稳定版(默认配置) Sudo 1.8.2 到 1.8.31p2 所有旧版本(默认配置) 安全版本 Sudo 1.9.5p2或更新版本 检测方法 1、以非root账户登录系统运行如下命令: sudoedit -s / 2、若受影响,错误信息会以如下内容开头: sudoedit: 3、若已安装补丁,错误信息会以如下内容开头: usage: 修复建议 目前Redhat等Linux厂商已经紧急发布修复补丁
“但是,也可以使用-s或-i标志运行sudoedit,在这种情况下,实际上并没有进行转义,这使得缓冲区溢出成为可能。” 要测试系统是否易受攻击,必须以非root用户身份登录并运行“ sudoedit -s / ”命令。 易受攻击的系统将引发以“ sudoedit:”开头的错误提示,而已修补系统将显示以“ usage:”开头的错误提示。
cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),117(netdev),118(lxd)漏洞验证该漏洞的触发核心在于sudoedit 展开代码语言:BashAI代码解释ubuntu@ubuntu:~$sudoedit-s''`perl-e'print"A"x65536'`malloc():corruptedtopsizeAborted versionSudoversion1.8.31Sudoerspolicypluginversion1.8.31Sudoersfilegrammarversion46SudoersI/Opluginversion1.8.31当输入超长的A字符串时,sudoedit -3156PoCbyblasty<peter@haxx.in>usingtarget:Ubuntu20.04.1(FocalFossa)-sudo1.8.31,libc-2.31['/usr/bin/sudoedit 而攻击者通过特定的命令组合(如sudoedit-s),绕过了第一步的“转义”过程,直接输入了一个以反斜杠\`结尾的字符串,例如cmd`。
但 -s 或 -i 也可能被用来运行sudoedit,在这种情况下,实际上特殊字符没有被转义,这就可能导致缓冲区溢出。 首先你需要以非root用户的身份登录,并运行“sudoedit -s /”命令。 有漏洞的系统会抛出一个以 “sudoedit: ”开头的错误,而打过补丁的系统则会显示一个以 “usage:”开头的错误。 为啥10年未修复? 为什么提交近10年间,这个漏洞都没人理会呢?
编辑文件: sudoedit file sudo vi file //也可以这样 这会使用默认编辑器(通常是 vi 或 nano)以超级用户权限编辑 file 文件。 编辑文件: sudoedit /etc/nginx/nginx.conf sudo vi /etc/nginx/nginx.conf //也直接直接这样 这会使用 sudoedit 命令以 root
mnt中,-it参数进入容器shell, SUDO(CVE-2021-3156)版本漏洞 -判断: sudo: 1.8.2 - 1.8.31p2 sudo: 1.9.0 - 1.9.5p1 sudoedit
附录Baron Samedit 提权漏洞(CVE-2021-3156)漏洞验证该漏洞的触发核心在于 sudoedit 在处理命令行转义字符(反斜杠 ``)时的逻辑错误。 ubuntu@ubuntu:~$ sudoedit grammar version 46 Sudoers I/O plugin version 1.8.31 当输入超长的 A 字符串时,sudoedit blasty <peter@haxx.in> using target: Ubuntu 20.04.1 (Focal Fossa) - sudo 1.8.31, libc-2.31 ['/usr/bin/sudoedit