首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sudo和..profile/..bashrc是否启用了微不足道的权限提升?

sudo和..profile/..bashrc是否启用了微不足道的权限提升?
EN

Security用户
提问于 2018-06-11 00:32:36
回答 1查看 2.4K关注 0票数 7

首先,让我提到,我假设配置是由当前Linux桌面发行版(例如Debian、Fedora)设置的。我确信,有些方法如果得到实现,将减轻这里描述的问题。我感兴趣的是“开箱即用”的保安。

在我看来,shell执行像~/.profile~/.bashrc这样的文件,允许完全操作用户的执行环境,并且是用户拥有的,这一事实破坏了像sudo这样的程序能够安全运行的任何希望。问题是,任何以用户身份运行的恶意程序都可以编辑这些文件,例如,修改PATH环境变量以包含假的sudo可执行文件,例如PATH="$HOME/.evil:$PATH",恶意程序也在其中创建文件$HOME/.evil/sudo。然后,下次用户在shell中键入sudo时,将运行假sudo并记录键入的密码。因此,即使原始恶意程序只有用户权限,假sudo也可以获得root权限。

实际上,我安装Ubuntu时创建的默认.profile文件包括以下几行:

代码语言:javascript
复制
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

因此,甚至不需要修改.profile --只需创建$HOME/bin/sudo,它就已经是PATH上的第一个了!

我的观点并不是在运行任意恶意代码时已经“太晚”了,或者用户可能会注意到这种攻击(我想这类似于一次仿冒攻击)。我希望以用户身份运行的恶意程序可以做任何用户可以做的事情。然而,我没想到的是,它可以做的比那个用户更多(root特权)。

我的问题实质上是:

  1. 是否可以这样绕过系统sudo可执行文件?
  2. 为什么桌面Linux系统在默认情况下是以如此容易被利用的方式设置的?调用sudo的默认方法不应该确保它实际上是系统提供的可执行文件(没有人会每次输入/usr/bin/sudo )吗?由于sudo执行系统关键的安全操作,因此使用PATH变量隐藏其位置的可能性似乎带来了很大的风险,但并没有带来什么好处。在这样的环境中,使用sudo似乎根本上是不安全的,最好以root身份登录并在单独的TTY上登录。
EN

回答 1

Security用户

发布于 2018-06-11 00:52:55

首先,更改.profile不会自动实现权限提升。受影响的用户必须已经拥有sudo权限。

1- sudo没有被卷起。你在用别的东西代替它。您可以更改.profile并添加alias sudo=~/.evilsudo并实现相同的目标。

2-您可以考虑配置sudo的懒散方式。在桌面环境中,情况就是这样,但在服务器环境中则不然。在服务器环境中,/etc/sudoers应该只授予用户执行任务所需的命令。您可能会期望Oracle运行sudo service oracle,因此这将适用于sudoers。例如,不是oradmin ALL=(ALL:ALL) ALL

如果有人在你的账户上运行代码已经太晚了。任何更改您的.profile的人都可以启动另一个shell,捕获每一个按键,您不仅会丢失密码,还会丢失您在上面键入的所有内容。远程ssh密码,数据库密码,ftp密码,任何东西。如果你的.profile被破坏了,游戏就结束了。

如果您真的想保护用户不受此影响,请将每个用户可写目录挂载为noexec。这样,~/bin/tmp或其他任何东西都不会有执行任何东西的权限。你稍微增加了安全性,大大减少了方便。

票数 0
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/187502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档