攻击者下一次被盗用的帐号如何获得root权限?

当我遇到以下内容时,我正在阅读有关root / sudo的 Ubuntu 文档 :

  • sudo不是su的安全吗?

    基本的安全模式是一样的,因此这两个系统分担他们的主要弱点。 任何使用su或sudo的用户都必须被视为特权用户。 如果该用户的帐户受到攻击者的攻击,则攻击者下次用户也可以获得root权限。

攻击者下一次如何获得root权限呢? 假设sudo被禁用。

尽pipesudo和su命令一起使用,但sudo su是唯一的方法是错误的。

sudo有很多选项可以设置主机上谁(用户组的以太用户)执行什么操作。 一个细粒度的sudoers文件(或涉及到sudo-ldap的LDAP条目)和一个聪明的系统pipe理员的头脑可能会以不违反系统安全性的规则结束,即使用户帐户已经被破坏。

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

 $ sudo -l
用户示例用户可以在此主机上运行以下命令:
     (root)/opt/xmldns/gen.sh
     (root)/ usr / bin / make -C / root / admin
     (root)/ usr / sbin / xm列表,/ usr / sbin / xm dmesg
     (root)/ usr / sbin / zorpctl stop,/ usr / sbin / zorpctl start,/ usr / sbin / zorpctl status
     (root)/etc/init.d/apache status,/etc/init.d/apache stop,/etc/init.d/apache start
     (root)/usr/local/bin/protodump.sh httpreq
     (root)/ usr / sbin / xm控制台
 $ 

如果不让sudo-exec su / bash或其他shell直接(sudo su),也不间接(让root用户产生一个可用于产生shell的编辑器 – 在本例中为root),sudo是一个朋友系统pipe理员和用户也是如此。

回到主题上的问题,如果sudo被禁用,并且su是在系统上成为根的唯一方法,则可以种植假su命令(例如在〜/…/ fakesu中)和别名,如别名su =' 〜/…/ fakesu'在用户的loginshell的rc文件中。

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

其实很简单 sudo通常被设置为caching其身份validation,所以每次在命令中使用sudo时都不必input密码。 我相信默认的caching时间大约是5分钟。

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

我认为这就是他们提到“下一次用户”的情况。

我想你所问的案例更多的是通过su来提升权限。 由于可能只有用户的密码被泄露,所以攻击者在拥有root用户密码之前不能进行esacalate。 如果攻击者安装了键盘logging程序或replacesu或类似的东西,他/她在下一次特权用户input时将能够获得root密码。

sudo -s执行用户.bashrc。 如果您有权访问该用户帐户,则可以将此行添加到将作为root用户运行的bashrc中。

 # ~/.bashrc cp /bin/bash /bin/something_else chmod 4755 /bin/bash 

我会添加类似的东西,创build一个bash的setuid副本,以便以后可以运行它。


编辑:现在的问题似乎要问关于sudo不使用的情况。

首先想到的是,如果我想要从su用户的root权限将是修改他们的path。

 # echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin $ export PATH=/tmp:$PATH su # echo $PATH /tmp:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin 

这是用bash运行fedora 11 4.用于su,shell环境的东西是非常默认的。

正如你所看到的,我可以像普通用户那样改变path,并且这个path没有被su重置(注意su -会重置它)。 在他们的shell rc中更改它们的path,然后将我自己的脚本放到path顶部的新目录中。 用ls,cp,mv这样的名字做一些副本(或符号链接),这些东西经常运行。

 #!/bin/bash # make a shell for later cp /bin/bash /bin/something_else chmod 4755 /bin/bash # cause more trouble ... # now run the real command so the user doesn't notice PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin exec $0 $* 

无论如何,这些只是一个例子,毫无疑问,其他类似的情况也是如此。 我认为重要的是可以su或sudo的账户是需要注意的。

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

原则很简单。 Sudo只需要用户的密码以root身份执行活动。 如果有人能够进入该用户的帐户,他可能知道密码(或可以很容易地知道)。

与su,情况有点不同,因为它需要root密码。 但是,攻击者可能会将用户的PATH更改为指向其自己的su版本(在tmp或./bin中),以便将root密码保存在某处。

现在你添加了sudo被禁用。 你提供的链接不会谈论这个。 他们提到了为该用户configuration了sudo或su的情况,并且攻击者将其用作获取root的杠杆。