rbash绕过
参考https://www.dazhuanlan.com/2019/11/30/5de17052dfbec/
https://xz.aliyun.com/t/2333
Contents
何为rbash
rbash,是出于安全性考虑的一个功能受限的bash,我在vulnhub dc-2首次接触,他的限制性可能会有如下.
- cd 切换目录
- 含有斜杠
/
的命令, 譬如/bin/sh
- 设置 PATH ENV 等环境变量
- 使用
>
<
进行重定向 - binary 的运行. 通常 root 用户会手动创建
/bin/binary_file -> /home/rbash_user/bin/binary_file
的软链接, 限制性地提供部分 binary_file 给 rbash_user 使用 在 bash 下echo $SHELL
, 可以获取当前环境是否是 rbash.
bypass
scp bypass
我在http://www.const27.com/2020/07/02/vulnhub-dc-2/就是用scp绕的
scp命令就是可以通过ssh,将文件在本地与远程之间流动。
所以我们可以先把我们需要的命令通过ssh发送到远端

再从远端通过ssh下载到我们自己的PATH指定目录里

比如我们用这个传个/bin/bash回来,然后bash -p 就绕过rbash了

进入命令自带shell bypass
man,git config help,more,less,vim,vi,ftp,gdb等命令都有自己的shell,我们只需在他们各自的shell中执行/bin/sh即可
一般都是在shell键入!/bin/sh来bypass rbash
下面这种方法也是可行的(似乎仅vim)
:set shell=/bin/bash
:shell
执行上面两个语句,就bypass了
find bypasss
简单概括就是-exec执行一下/bin/bash …

编程语言 bypass
python
如果python都可以用的话,那就更轻松了,os安排一下
似乎pty也行?没试
python -c "import os;os.system('/bin/bash')"
php
php -a 进入php shell
然后执行命令:exec("/bin/bash");
perl
perl -e 'exec "/bin/sh";'
ruby
ruby -e 'exec "/bin/bash"'
cp bypass
直接用cp把/usr/bin里的命令复制过来就行了
直接更改PATH/SHELL变量
键入export -p 查看该用户的变量

如果这俩变量有w权,那么我们可以直接写入来bypass
ssh bypass
原理是通过ssh链接当前IP的当前用户并启动/bin/bash
主要用到了ssh命令的t参数

ssh username@Ip -t "/bin/bash"