我怎样才能自动将密码传递给‘su’?

我怎样才能自动将密码传递给‘su’?

我正在为安全课程研究漏洞。目标是在 Linux 虚拟机中获取 root shell。到目前为止,我可以写入 /etc/passwd 并将 root 的密码更改为任意字符串。

现在,我想使用 su 来获取 root shell。由于我的漏洞利用必须自动化,因此它无法提示输入密码,并且虚拟机没有安装 expect。有人知道我如何将密码传递给 su 命令吗?或者有更好的方法吗?

答案1

自动化此类输入的最佳方式是使用expect或更好的pexpect。大多数服务器都带有 python,至少带有现代发行版。

首先,您说您的虚拟机尚未expect安装?我不确定这有什么关系。您无法在本地帐户下安装/执行某些操作,这有什么原因吗?

下一个考虑因素是,为什么你甚至必须使用passwd??? 你也可以通过替换 中指定的哈希来更改密码/etc/shadow。显然,你需要先正确地预生成哈希,但只要你使用受支持的哈希,它就应该可以按预期工作。现在你将如何编写这样的操作脚本,这是你需要解决的练习。

我还想提一下,passwd它不会从 STDIN 读取输入。如果我没记错的话,它是从 tty 读取的。因此,没有花哨的组合echo可以sleep工作。但是,使用 HEREDOC 是可能的,但假设系统响应足够快。您可能能够将其拆分并sleep放在各个部分之间。我刚刚测试过,它在我的 Ubuntu 工作站上运行良好。

#!/bin/bash
passwd root <<'EOF'
newpassword
newpassword
EOF

答案2

您的漏洞还可以写入组文件,并使当前用户成为“wheel”组的一部分(或任何可以使用sudo密码运行命令的组)。然后您(或任何其他用户)就可以使用sudo su root密码运行命令。

运行visudo应该会给你提供一些关于机器上‘轮子’组设置的指导。

需要澄清的是:一旦用户成为 wheel 组的一部分,他们就可以运行 sudo 命令而不需要密码。

相关内容