程序获得密码后能否获得 root 访问权限?

程序获得密码后能否获得 root 访问权限?

如果系统上只有 1 个具有 sudo 权限的用户,那么该用户运行的另一个程序是否可以在用户不知道的情况下获得 root 权限(如果该程序具有 sudo 密码)?

答案1

如果您的帐户配置为sudo操作不需要密码,那么您将几乎看不到显示程序正在运行的信息sudo

例如

#!/bin/bash
read -p "Please enter your name: " n
echo "Thank you"

sudo cp -p /etc/shadow "$HOME/.shadow"    # Copy the encrypted list of passwords
sudo chown "$USER" "$HOME/.shadow"        # And make it readable for me

~/.shadow请注意,如果您实际运行此脚本,您几乎肯定会想要删除。

日志文件中会有条目(请参阅目录中的文件/var/log),但“聪明”的程序可能会尝试删除这些条目。至少是本地编写的。

答案2

这是关于确保不安装恶意代码的一个很好的教训。有一些棘手的行为sudo可能会让黑客更难利用……但也不是太难。


环境变量SUDO_ASKPASS(参见https://linux.die.net/man/8/sudo)允许您通过命名程序来从用户处获取密码来指定输入密码的方式。这在 GUI 世界中非常有用,在 GUI 世界中,您通常不希望看到命令行密码输入,而是看到一个友好的窗口(即使在命令行上工作时)。

因此,具有您的用户密码的程序可以创建自己的“askpass”程序,并进行硬编码,以便在您不知情的情况下响应您的密码。它可以设置SUDO_ASKPASS环境变量并调用sudo,而您永远不会收到通知。


除此之外,许多系统都有一种机制,允许 sudo 在从最近使用 sudo 进行身份验证的会话运行时跳过询问密码。

理论上,脚本可以留意这一点(如果它从活动用户会话运行),并在您输入密码后立即调用 sudo,以利用不会再次询问的事实。


简而言之...小心你安装的东西

相关内容