![通过 Chroot 进入 Ubuntu 机器能获得 root 权限吗?](https://linux22.com/image/988602/%E9%80%9A%E8%BF%87%20Chroot%20%E8%BF%9B%E5%85%A5%20Ubuntu%20%E6%9C%BA%E5%99%A8%E8%83%BD%E8%8E%B7%E5%BE%97%20root%20%E6%9D%83%E9%99%90%E5%90%97%EF%BC%9F.png)
如果您要使用 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 的其他信息,请参阅
答案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 不会采取任何措施。