我最近在这里阅读了一位用户关于他在 CTF 比赛中入侵服务器的方式的回答。在描述中的某个时刻,他说他做了sudo vim,然后使用他之前捕获的密码通过 VIM 生成了一个 shell(我假设他:!bash在 vim 中做了)。
我有点困惑为什么他使用这个特定的向量来生成一个外壳......他可以简单地执行一个sudo bash. 为什么要使用 Vim 来做到这一点?
我最近在这里阅读了一位用户关于他在 CTF 比赛中入侵服务器的方式的回答。在描述中的某个时刻,他说他做了sudo vim,然后使用他之前捕获的密码通过 VIM 生成了一个 shell(我假设他:!bash在 vim 中做了)。
我有点困惑为什么他使用这个特定的向量来生成一个外壳......他可以简单地执行一个sudo bash. 为什么要使用 Vim 来做到这一点?
一种可能性是 sudo 被配置为仅执行某些应用程序 - 您可以在 sudo 手册中找到这方面的示例。
如果其中之一是vim,但bash不是一个选项,则用户无法运行sudo -i或sudo bash但能够运行sudo vim。但是,一旦完成,vim就会有一个有效的 uid/gid 为 0/0,并且非常高兴地让您运行一个 root bash shell。
这意味着,正如您所料,您实际上可以编辑 sudoers 文件以删除该限制。
当然,关于这个技巧的另一点需要注意的是缺少日志记录。Sudo 已经运行了 vim,它会记录这个事实,但它不会记录 vim 之后选择生成的任何进程!因此,即使您在运行 shell 方面不受限制,这也是一种伪装您正在做的事情的方法。
您可以限制 sudo 用户可以在 sudoers 文件中执行的命令,通过 vim 打开 shell 是一种规避方法。VIM 通常不受限制,因为文件和目录权限限制了您可以使用它造成的损害,因此它是运行非法 shell 的理想选择。