当我遇到以下内容时,我正在阅读有关 root/sudo 的 Ubuntu 文档:
sudo 不比 su 安全吗?
基本的安全模型是相同的,因此这两个系统有共同的主要弱点。任何使用 su 或 sudo 的用户都必须被视为特权用户。如果该用户的帐户被攻击者入侵,攻击者还可以在用户下次这样做时获得 root 权限。
攻击者如何在用户下一次获得 root 权限?假设 sudo 被禁用。
当我遇到以下内容时,我正在阅读有关 root/sudo 的 Ubuntu 文档:
sudo 不比 su 安全吗?
基本的安全模型是相同的,因此这两个系统有共同的主要弱点。任何使用 su 或 sudo 的用户都必须被视为特权用户。如果该用户的帐户被攻击者入侵,攻击者还可以在用户下次这样做时获得 root 权限。
攻击者如何在用户下一次获得 root 权限?假设 sudo 被禁用。
其实很简单。
sudo
通常设置为缓存其身份验证,因此您不必在每次使用sudo
命令时都输入密码。我相信默认的缓存时间大约是 5 分钟。因此,如果攻击者有权访问具有访问权限的用户帐户
sudo
,即使不知道他们的密码,他们也可以等待用户下次执行sudo
. 然后攻击者可以立即运行sudo
并获得一个 root shell。我认为这是他们提到“用户下次这样做”时所指的场景。
我认为您所询问的情况与通过 su 提升权限有关。由于可能只有用户的密码被泄露,因此攻击者在拥有 root 密码之前无法升级。如果攻击者安装了键盘记录程序或替换了 su 或类似的东西,他/她将能够在特权用户下次键入时获得 root 密码。
sudo -s
执行用户 .bashrc。如果您有权访问该用户帐户,则可以在此 bashrc 中添加以 root 身份运行的行。我会添加类似的东西,创建一个 bash 的 setuid 副本,以便我以后可以运行它。
编辑:现在的问题似乎是询问不使用 sudo 的情况。
如果我想从使用 su 的用户那里获得 root 权限,我想到的第一个技巧就是修改他们的路径。
那是使用 bash 4 运行 fedora 11。su 的配置,shell 环境的东西几乎是默认的。
如您所见,我能够以普通用户的身份更改路径,并且此路径没有被 su 重置(注意
su -
会重置它)。在他们的 shell rc 中更改他们的路径,然后将我自己的脚本放入路径顶部的新目录中。使用 ls、cp、mv 之类的名称复制它(或符号链接),这些名称经常运行。不管怎样,这些只是例子,毫无疑问还有其他类似的场景。我认为关键是可以 su 或 sudo 的帐户需要小心。
虽然 sudo 通常与 su 命令一起使用,但认为 sudo su 是唯一的做法是错误的。
sudo 有许多选项可以设置由谁(用户组的以太用户)在哪个主机上执行什么。细粒度的 sudoers 文件(或 LDAP 条目,如果涉及 sudo-ldap)与系统管理员的聪明头脑一起最终可能会形成即使用户帐户已被破坏也不会危及系统安全的规则。
让我们看一个真实的例子:
如果不让用户 sudo-exec su/bash 或其他 shell 既不直接 (sudo su) 也不间接(让编辑器以 root 生成,这可用于生成 shell - 在本例中为 root),sudo 是一个朋友系统管理员和用户。
回到主题中的问题,如果 sudo 被禁用并且 su 是在系统上成为 root 的唯一方法,人们会植入一个假的 su 命令(例如在 ~/.../fakesu 中)和一个别名,如 alias su=' ~/.../fakesu' 在用户登录 shell 的 rc 文件中。
在这种情况下,一个简单的 su 命令(举手,使用 /bin/su 进行调用)最终会调用 fakesu 命令,这可能会捕获密码。
如果用户的密码被泄露并且该用户具有 sudo 权限,则攻击者可以运行 sudo su 并成为 root。
原理很简单。Sudo 仅需要用户密码才能以 root 身份执行活动。如果有人能够闯入该用户的帐户,他可能知道密码(或者可以很容易地找出密码)。
使用 su,情况有点不同,因为它需要 root 密码。但是,攻击者可以更改用户的 PATH 以指向其自己的 su 版本(在 tmp 或 ./bin 中),从而将 root 密码保存在某处。
现在您添加了 sudo 已禁用。您提供的链接没有谈到这一点。他们提到了为该用户配置了 sudo 或 su 并且攻击者使用它作为获取 root 的杠杆的情况。