如果我们不使用 sudoedit,会发生什么不好的事情?

如果我们不使用 sudoedit,会发生什么不好的事情?

我们知道使用 sudoedit 更安全*,但是如果我们在 sudoers 中使用以下内容,会发生什么不好的事情?

Cmnd_Alias FOO = /bin/ed, /usr/bin/ed, /usr/bin/vi
foouser LOCALHOST = NOPASSWD: NOEXEC: FOO

“foouser”可以转义到 root 提示符吗? - 当然除了他现在可以编辑 /etc/shadow 文件,将自定义的 pwd 哈希值发送给 root 用户,从而在大约 3 秒内成为 root 用户。

也许使用 LD_PRELOAD 和 ed 有一些魔法?具体如何?

*=sudo ed 将以 root 身份运行。但 sudoedit 将以给定用户身份运行,编辑的文件将在编辑之前/之后复制。

答案1

“foouser”可以转义到 root 提示符吗?

据推测,foouser 现在可以打开任何系统二进制文件并将其完全“编辑”为其他内容,从而留下 foouser 可以想象的任何类型的安全漏洞。如果您对 setuid 二进制文件(例如 )执行此操作,则这具有特殊的潜力passwd,因为这意味着非 root 用户可以使用它执行其不打算执行的特权操作。

除此之外,他现在可以编辑 /etc/shadow 文件以放置自定义的 pwd 哈希值

或者只是删除哈希值,在这种情况下,您不需要任何密码即可以 root 身份登录。

答案2

可以修改的文件数量令人难以置信“安装后门”在系统上(编辑/etc/group是最简单的,但是有很多更隐蔽的方法来实现它)。也可以noexec通过编辑文件来禁用此保护/etc/sudoers我不会依赖于NOEXEC使“sudo $editor”安全。它不安全。请改用 sudoedit (非常小心,因为很多文件可用于获得 root 权限!)

此外,sudo 的 noexec 包装器正在跟踪(缓慢)移动的目标(请参阅sudo_noexec.c 历史记录fork()、vfork()、exec() 和clone() 之间的区别)。因此,sudo_noexec包装器可能无法在某些 Unix 变体上保护您,并且可能不会限制新的系统调用(假设您的编辑器使用这些新的 API)。

为了具体回答您的问题LD_PRELOAD, sudo 配置文件env_reset默认启用导致命令在新的最小环境中执行。所以我怀疑它是否会被利用。

PS我也发过类似的问题https://unix.stackexchange.com/q/200411/16640

答案3

问题不在于“可能发生什么”,而在于发生什么不能发生。我的意思是,vi它是一个非常强大的工具,作为特权用户使用它会提供许多潜在的攻击和利用途径。

这就是为什么你不应该这样做——因为你正在一座大老房子里玩“堵住老鼠洞”的游戏。

任何互动都是“有风险的”。攻击途径:

  • Shell 逃逸 - NOEXEC 在这里提供帮助。
  • 编辑系统配置文件 - 有很多“明显”的罪魁祸首,例如/etc/passwd等,但也有一些地方可以,例如,将 CGI 脚本插入到 apache 实例中并提升该路由的权限。或者修改 s crontab 调用的脚本root。 (如果他们安装了 NFS,这会特别有趣!)
  • 编辑系统脚本(如 的内容/etc/rc)。
  • 符号链接遍历攻击 - 创建符号链接/etc/passwd然后编辑绕过任何类型的文件白名单。

你也可以直接给予,NOPASSWD: ALL因为你真正依赖的是你的用户不会像 root 那样做一些愚蠢的事情。

补充一点——很多人都有最喜欢的编辑器。我ed在必要的时候使用过,而且vim最近大部分时间都在使用。但并不是每个人都喜欢它们。它的一大优点sudoedit是它可以让你使用任何东西。

相关内容