让我们假设一个类 Unix 系统(如 macOs、linux、solaris 等)安装了来自互联网的由恶意行为者开发的程序的场景。
该程序不会在系统上使用任何零日漏洞来提升权限。它只是在常规非管理用户的上下文中运行,并具有所有限制。它会在后台记录所有按键,直到记录用户在终端中输入“su”并随后输入密码。这个程序突然捕获了 root 用户的密码。
我的问题是,捕获此密码后,程序是否可以从 root 用户的上下文中重新启动自身,甚至可以在运行时升级其权限,在当前用户没有注意到的情况下执行所有这些操作?存在哪些实用程序可以允许这样的程序执行这样的操作?我正在谈论一个理想的场景,其中内核中没有任何错误或漏洞被使用。我只是谈论一个程序,它只是按照现有系统实用程序的预期使用方式来使用它们。
答案1
expect
这正是该程序(以及类似程序)所针对的情况。您可以su
在 下运行expect
,检测密码提示,发送密码(您捕获的),然后拥有一个可以向其发送命令的 root shell。
例如
#!/usr/bin/expect --
set mypasswd "imnottellingyou"
spawn "su"
expect "ssword"
send "$mypasswd\n"
expect "#"
interact
答案2
是的。通过执行su
.su
是一个允许更改用户密码的程序。su
具有更改用户的能力,并且只有在您提供正确的密码时才会执行此操作。
然而,做到这一点的唯一方法是启动一个新进程,或者替换现有进程的程序。然后它可以使用新的权限重新启动它自己。
迂腐的注释:进程可以通过 升级其权限su
。但程序不能。然而,新程序 ( su
) 可以重新启动旧程序。