通过 Chroot 进入 Ubuntu 机器能获得 root 权限吗?

通过 Chroot 进入 Ubuntu 机器能获得 root 权限吗?

如果您要使用 Ubuntu live USB,请执行以下命令。这实际上只是授予您对驱动器的 root 访问权限吗?

sudo mount /dev/sda1 /mnt
sudo chroot /mnt

答案1

正如 Zacharee1 所指出的,物理访问就是 root 访问。这就是拥有敏感数据的人限制物理访问的原因。

为了将命令分解开来,安装驱动器就是准备文件系统并授予您访问权限的过程。

sudo mount /dev/sda1 /mnt

执行完 mount 命令后,你就可以访问所有未加密的数据/dev/sda1

ls /mnt
cp /mnt/some_data /your_usb

ETC

需要注意的是,如果有人拥有物理访问加密可能不足以保护数据,因为人们可以利用物理访问来破解加密,“邪恶女仆”只是一个例子,请参阅https://www.schneier.com/blog/archives/2009/10/evil_maid_attac.html

chroot命令会进行切换,以便您现在运行的命令就像/dev/sda1是安装在/或根目录下一样,假设/dev/sda1是一个有效的根文件系统而不是/home或数据分区。

chroot除了数据访问之外,该命令还有许多其他用途。

因此,在 chroot 命令之后,您在 shell 中运行的命令现在会影响/dev/sda1。因此,如果您更改密码或系统配置,它会影响 /dev/sda1,而不是 usb。

例如,如果你运行

passwd

您设置的密码会影响 /dev/sda1 上的 root 用户,而不会影响 usb 上的 root 用户。

一些虚拟化,例如 Openvz 和 LXC,类似于 chroot 但具有附加功能。

有关 chroot 的其他信息,请参阅

https://help.ubuntu.com/community/BasicChroot

答案2

除非文件系统已加密,否则您可以完全访问离线驱动器(即 LiveUSB)上的每个文件。您可以做任何您想做的事情,而无需该操作系统的任何用户密码。

LiveUSB 方法是绕过 Windows 和 Linux 上密码的最流行方法之一,因为它允许用户通过替换文件或运行某些命令在 Windows 中设置本地管理员密码,在 Linux 中设置 root 密码。

这非常棒,只要您是拥有硬件访问权限的人,而不是您不信任的人。

编辑:
谢谢菩提禅我现在知道,即使加密,你也可以访问文件系统。你确实需​​要与知道加密密钥的人进行不知情的互动,但这仍然是一种访问方法。

在这里阅读:https://www.schneier.com/blog/archives/2009/10/evil_maid_attac.html

編輯:
显然,有很多方法可以访问加密文件系统。
https://www.schneier.com/blog/archives/2008/02/cold_boot_attac.html

我想这里的教训就是不要把你的硬盘给别人。

答案3

chroot 并不是赋予您 root 权限的东西,sudo 才是。大多数 livecd 都配置了 sudo,这样 livecd 上的默认用户就可以不受限制地使用无密码 sudo 访问权限。而输入“sudo bash”则会赋予您相同的权限,但文件系统视图会有所不同。

所以是的,如果您可以启动 livecd 并且 hdd 未加密,您可以轻松地购买任何文件权限并读取/写入任何您喜欢的内容,但 chroot 并不能实现这一点,启动包含您可以轻松获取 root 权限的系统的 livecd 才是。

答案4

假设您问以下问题:“如果我允许某人运行 sudo chroot /mnt”,他们能在主机上获得 root 权限吗?”这个问题的答案是肯定的。

除了显而易见的难的涉及 mknod() 的方法,如果他们可以获得编译器,那么有一个简单的方法:

#include <fcntl.h>
#include <unistd.h>
int main() {
    int n = open("/", 0);
    chroot("/bin");
    fchdir(n);
    chdir("..");
    chroot(".");
    execve("/bin/sh", "/bin/sh");
}

如果攻击者拥有 root 权限,Chroot jail 不会采取任何措施。

相关内容