为什么 chroot(2) 对非特权用户不可用?

wok*_*oky 8 security chroot

为什么chroot(2)非特权用户无法使用?

我不明白互联网上的现有答案。例如这个https://lists.freebsd.org/pipermail/freebsd-security/2003-April/000123.html

sudo真正的工作,如果/etc/sudoers/etc被所有者不是root?非特权用户不能只在 chroot 中创建 root 拥有的 setuid 二进制文件,是吗?

一个非特权用户究竟如何破坏 chroot 环境?

我只能想到这样的事情

ln /mnt/backup/XYZ/etc/sudoers $CHROOT/etc/sudoers
ln /usr/bin/sudo $CHROOT/usr/bin/sudo
Run Code Online (Sandbox Code Playgroud)

whereXYZ表示一些备份实例,管理员真的搞砸了并允许我的用户做一些危险的事情。但这有点特别。chroot(2)如果非特权用户可以使用它,是否还有更直接的利用方法?

小智 6

chroot(2)不会更改工作目录,因此调用后.可以在以/. 然后,您可以使用相对路径从 chroot 内部运行任何 setuid 二进制文件。可能有很多方法可以利用这一点。例如,通过修改/etc/ld.so.preloadchroot 目录内部,您可以使用 root 权限执行任意代码。你可以看一个例子


Bar*_*mar 4

普通用户无法创建 setuid 二进制文件,但没有什么可以阻止他创建到现有 setuid 二进制文件的硬链接。因此,如果他对与 位于同一文件系统上的目录具有写权限,他可以将监狱放入此目录中,创建指向或 的/usr/bin硬链接,然后将自定义的and放入监狱中。susudo/etc/passwd/etc/sudoers

也许这不适用于sudo,因为它可能会检查它是否/etc/sudoers由 root 拥有。但我敢打赌su不会检查 的所有权/etc/passwd