通过 Sudo chroot 在 Linux 中实现本地权限提升至 Root。
有关新闻可以在这里阅读:
TL;DR 和 CMIIW 就是说,sudo 是用来以管理员/root 身份执行命令的。只有属于 sudoers 组的用户才能使用 sudo。但 sudo 二进制文件中存在一个漏洞,使得普通用户(没有 sudo 权限)也能切换为 root 用户。
该漏洞出现在 sudo 命令的 --chroot 选项上。chroot 允许在某个临时目录中执行命令。问题在于,sudo 会在检查当前用户是否允许运行 sudo 之前,先去检查该临时目录中的配置文件。
如果我们可以设法编辑这个配置文件,并将其指向一段经过修改用于获取 root 访问权限的代码,那么我们就可以在无需认证或未注册为 sudoer 的情况下获得 root 权限。因为在处理过程中,系统会(临时)将命令提升为 root 权限来获取这些信息。
这个配置文件是什么?是 /etc/nsswitch.conf。系统使用该文件来确定用户属于哪个组等信息。nsswitch 文件的内容大致如下:
<数据库> <来源1> <来源2> ... <来源n>
passwd files systemd
group files systemd
shadow files
gshadow files
...
注意!如果使用的数据源是 files,nss 会调用一个名为 libnss_files.so.2 的库。这个文件包含 C 代码,如果我们修改它,很有可能会获得 root 访问权限。因为即使该命令不是由 sudoers 用户执行的,系统也以 root 身份运行它。可以在 exploit.sh 文件中看到相关操作。
总结:
/etc/nsswitch.conf。