shell
为了在 shell
环境中提供安全性,Unix
基金会引入了受限 shell
的概念,它具有足够的交互性以支持tab
补全和接受命令的提示,但限制了普通 shell
的功能。基本上,存在三种受限制的 shell
——rsh
、rbash
和 rksh
。在这篇文章中,将介绍 rbash
,但同样的信息也可用于其他两个。
可以通过添加 -r
参数从普通 bash
或 shell
命令生成受限 shell
sh -r # restricted sh shell, or rsh
bash -r # restricted bash shell, or rbash
这种类型的shell
主要存在于共享虚拟主机或一些数据中心,以防止恶意黑客执行删除代码,然后接管整个系统。
关于受限shell和普通shell的特性上区别,可以看https://www.gnu.org/software/bash/manual/html_node/The-Restricted-Shell.html
。但是,受限 shell
有一个限制,就是如果有任何程序允许用户运行系统命令,rbash
将无法检查用户输入,这可能导致从受限环境中突破
在本节中,将讨论 AttackDefense
的受限Shell
实验,看到之前讨论的限制是如何突破。
发现像id
和whoami
这样的常用命令都不起作用,而且错误消息中写着rbash
,这意味着处于受限环境中。
人们应该在他们的武器库中执行所有类型的枚举技术,以找到一个漏洞来从 rbash
本身以外的程序执行 shell
命令
所以这里尝试设置环境变量 PATH
但失败了,因为它在受限 bash
的情况下是敏感操作,这很有意义,因为将 PATH
更新到 /etc/environment
将允许任何人调用正常的 /bin/sh
或 /bin/bash
发现目前支持的所有程序都在/home/student/.bin
目录下。此外,还看到了 vi
,它是一个类似于 vim
的文本编辑器,但具有一组不同的命令
尝试从 vi
执行 /bin/bash
命令但失败了。这看起来很奇怪,因为 vi
通过shell
选项中来执行shell
命令
后来发现 /home/student/.exrc
文件存在,它是 vi
的配置,shell
设置为 /bin/false
。这就是为什么从 vi
生成 shell
时会抛出错误的原因
所以尝试使用 >
重定向覆盖文件,但由于 rbash
限制了使用而失败。在 bin
目录中,还看到了 tee
命令,这意味着可能支持管道运算符 (|
)。我尝试使用 tee
将 echo -e
的输出通过管道传输到 .exrc
。
现在,在从 vi
运行 /bin/bash
后,已经脱离了受限环境,进入了正常的 bash
。这次可以设置 PATH
环境变量并执行 id
和 whoami
命令
下一步是查找配置错误的 suid
二进制文件,发现安装了 wget
和 sudo
当使用 suid
运行 wget
时,它会将文件保存到受保护的位置。在此使用 /etc/sudoers
并添加student ALL=NOPASSWD: ALL
由于不能将 file://
方案与 wget
一起使用,正在使用 python
来为轻量级和移动的 http
文件服务器提供服务。
更新文件后,现在可以使用 sudo
以 root
用户身份运行所有命令。
请点一下右下角的“在看”,谢谢!!
暗号:074208