我有一台 Ubuntu 12.04 VirtualBox 机器,几天前我更改了它的密码。现在当我再次使用机器时,我忘记了密码,无法获得 root 访问权限。
我尝试从影子文件中获取哈希值以用于 john,但没有 root 访问权限就无法读取,甚至尝试与 Metasploit 建立会话,但找不到任何获取 Linux 哈希值的选项,也无法通过 Metasploit 获取 root 权限,也无法以 VDI 映像的形式离线访问磁盘。
也尝试过但无法将 john 下载到 Ubuntu,因为我无法使用apt-get
,机器包含一些重要数据。
那么,在 Metasploit 中是否有任何方法可以获取 root 权限或某些工具(如适用于 Windows 的 samdump2)通过浏览器下载并手动从实时系统获取哈希值或可能是某些漏洞?
答案1
首先要纠正一个常见的误解:只要您可以物理访问(真实或虚拟)机器,就没有任何方法(除了加密)可以阻止您获取数据。
现在开始程序(有关详细信息,请参阅如何重置丢失的管理密码? 在 AskUbuntu.com 上)
使用恢复
- 当您的虚拟机启动时,Left shift在启动屏幕后立即按下以访问grub 菜单, 选择高级选项...,然后选择包含以下行的任意行恢复模式。
- 一段时间后,你会看到另一个菜单,在那里你可以使用箭头键选择行根, 按enter。
制作挂载
/
分区读/写(代替只读)mount -rw -o remount /
现在您可以更改“丢失”用户的密码了
passwd
youruser
系统会提示您输入新密码(您不会得到任何反馈,看起来您的击键无法被识别),确认新密码后,您可以重新启动机器并准备飞行。
如果上述步骤失败(无论出于何种原因),您可以采取路线#2:
使用 Live CD(图像)——“chroot 方式”
- 将 Live CD 的 ISO 映像插入虚拟 CD 驱动器,从中启动,选择尝试 Ubuntu从菜单中,等待桌面准备就绪
- 打开终端窗口
- CTRL++在真实机器或 Virtualbox VMALT上T
- CTRL++ ALT,space在TVMWare 虚拟机中
- 使用
sudo fdisk -l
查看所有可用分区,确定哪个分区包含您的/
系统(可能类似于dev/sda1
) 将该分区挂载到某个可用路径(通常
/mnt
)sudo mount /dev/sda1 /mnt
我们需要访问一些路径
for d in dev sys run proc; do sudo mount --bind /$d /mnt/$d; done
现在激活新的环境 - 您现在可以在原始系统上以 root 权限操作。
sudo chroot /mnt
现在您可以更改“丢失”用户的密码了
passwd
youruser
使用客戶端(如果主机是 Linux 或 OSX)
安装该
libguestfs-tools
软件包,或安装您的发行版(主机上的发行版)所称的软件包。如果您的发行版没有此软件包,从上游下载。在主机上挂载虚拟机的根文件系统。根据需要调整安装路径。
mkdir ~/mnt guestmount -a /path/to/vm-image.vdi -m /dev/sda1 ~/mnt
由于你使用的是 VirtualBox,你可能需要先跑
export LIBGUESTFS_BACKEND_SETTINGS=force_tcg
。生成新密码哈希作为您选择的密码。
mkpasswd -m sha-512
编辑
~/mnt/etc/shadow
以将 root 用户的密码哈希更改为由生成的密码哈希mkpasswd
。卸载虚拟机的文件系统。现在您可以启动虚拟机并使用新密码以 root 身份登录。
fusermount -u ~/mnt rmdir ~/mnt
答案2
您可以在虚拟盒中创建一个新的虚拟机,并添加第二个硬盘,即您的 Ubuntu 服务器的硬盘(vmdk 文件)。
您在此虚拟机上启动并访问服务器的 /etc/shadow。