当账户被盗用后,攻击者如何获取 root 权限?

当账户被盗用后,攻击者如何获取 root 权限?

我正在阅读 Ubuntu 的关于 root/sudo 的文档当我遇到以下情况时:

  • sudo 不是比 su 更不安全吗?

    基本安全模型是相同的,因此这两个系统的主要弱点是相同的。任何使用 su 或 sudo 的用户都必须被视为特权用户。如果该用户的帐户被攻击者入侵,那么当用户下次执行此操作时,攻击者还可以获得 root 权限。

那么攻击者如何在用户下次获取 root 权限时获取该权限呢?假设 sudo 被禁用。

答案1

尽管 sudo 通常与 su 命令一起使用,但认为 sudo su 是唯一的方法是一个错误。

sudo 有许多选项可用于设置由谁(用户或用户组)在哪个主机上执行什么。细粒度的 sudoers 文件(或 LDAP 条目,如果涉及 sudo-ldap)加上系统管理员的聪明才智,最终可以制定出即使用户帐户被盗也不会危及系统安全的规则。

让我们看一个真实的例子:

$ sudo -l
用户 exampleuser 可以在该主机上运行以下命令:
    (根)/opt/xmldns/gen.sh
    (根)/usr/bin/make -C /root/admin
    (根)/usr/sbin/xm 列表,/usr/sbin/xm dmesg
    (根)/usr/sbin/zorpctl 停止,/usr/sbin/zorpctl 启动,/usr/sbin/zorpctl 状态
    (根)/etc/init.d/apache 状态、/etc/init.d/apache 停止、/etc/init.d/apache 启动
    (根)/usr/local/bin/protodump.sh httpreq
    (根)/usr/sbin/xm 控制台
$

如果不允许用户直接(sudo su)或间接(让编辑器以 root 身份生成,可用于生成 shell - 在本例中为 root)sudo-exec su/bash 或其他 shell,那么 sudo 也是系统管理员和用户的朋友。

回到主题中的问题,如果 sudo 被禁用,而 su 是成为系统 root 的唯一方法,则可以在用户登录 shell 的 rc 文件中植入一个伪 su 命令(例如在 ~/.../fakesu 中)和一个别名,如 alias su='~/.../fakesu'。

在这种情况下,一个简单的 su 命令(举手,谁使用 /bin/su 进行调用)最终会调用 fakesu 命令,该命令可能会捕获密码。

答案2

其实很简单。sudo通常设置为缓存其身份验证,这样您就不必每次使用sudo命令时都输入密码。我相信默认缓存时间是 5 分钟左右。

因此,如果攻击者可以访问具有访问权限的用户帐户sudo,即使不知道其密码,他们也可以等待用户下次执行sudo。然后攻击者可以sudo立即运行并获取 root shell。

我推测这就是他们提到“用户下次这样做”时指的场景。

答案3

我认为您询问的情况与通过 su 进行特权升级更相关。由于可能只有用户的密码被泄露,因此攻击者在获得 root 密码之前无法进行特权升级。如果攻击者安装了键盘记录程序或替换了 su 或类似程序,则他/她将能够在特权用户下次输入 root 密码时获取该密码。

答案4

如果用户的密码被泄露,并且该用户具有 sudo 权限,则攻击者可以运行 sudo su,并成为 root 权限。

相关内容