Section outline

  • 在最近版本的 Ubuntu 操作系统中,/bin/sh 符号链接指向另一个 shell /bin/dash。程序 dash 以及 bash 实现了一种安全措施来防止它们在 setuid 进程中执行。基本来说,如果检测到它们被以 setuid 方式执行,则会立即更改有效用户 ID 为进程的真实用户 ID,实质上放弃权限。

    由于我们的目标程序是一个 setuid 程序,并且攻击依赖于运行 /bin/sh,/bin/dash 中的防御措施使攻击更加困难。因此,我们将 /bin/sh 链接到另一个没有这种防御机制的 shell(稍后我们会展示,在一些努力之后,可以轻松地击败 /bin/dash 的防御机制)。我们在 Ubuntu 20.04 虚拟机中安装了一个名为 zsh 的 shell 程序。使用以下命令可将 /bin/sh 链接到 zsh:

    $ sudo ln -sf /bin/zsh /bin/sh