何为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绕的

QQ截图20210217145419

进入命令自带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 …

QQ截图20210217145437

编程语言 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 查看该用户的变量

QQ截图20210217145455

如果这俩变量有w权,那么我们可以直接写入来bypass

ssh bypass

原理是通过ssh链接当前IP的当前用户并启动/bin/bash

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