持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第十四天,点击查看活动详情
今天打DC-2靶机时候遇到了这个比较有意思rshell绕过,restricted shell 顾名思义就是受限制的shell,意思就是在我们执行命令时有很多不能用的,比如在这个靶机中就只能使用less、ls、scp、vi命令,/都是不可以用的
系统命令
如果可以使用/我们就可以直接进/bin/bash执行命令
可以利用scp复制bin/bash,执行命令
环境变量
$PATH的作用是查看环境变量,可以想象为Windows中的环境变量,这样我们的每个命令都能直接执行。 echo $PATH可以看到存在这些命令的文件夹在/home/tom/usr/bin文件夹下,那么就可以查看具体能有哪些命令配置了环境变量 linux提供了export命令用来设置或者查看环境变量
-f 代表[变量名称]中为函数名称。 -n 删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。 -p 列出所有的shell赋予程序的环境变量。
这里主要查看-p的结果
一般PATH和SHELL为-rx,只能执行不能写入,如果可以使用的话,就可以直接写入bash里面执行命令,另外就是看看有无编程语言命令能用
语言执行
如果没有限制php、Python等命令,那么就可以利用下面这些来达到执行命令的作用
python:
python -c 'import os; os.system("/bin/bash")'
php:
php -a then exec("sh -i");
另外就是文章里面说的探测系统常用应用,不知道为什么我这里没有复现成功 ftp > !/bin/bash gdb > !/bin/bash
这里绕过的方式是利用环境变量
BASH_CMDS[a]=/bin/sh;a 注:把/bin/bash给a变量
export PATH=$PATH:/bin/ 注:把/bin添加到$PATH里面后导出
export PATH=$PATH:/usr/bin 注:将/usr/bin作为PATH环境变量导出
BASH_CMDS
一个数组变量,其成员对应于内部由内置hash命令维护的hash命令表。元素被添加到这个数组中出现的hash列表;撤销数组元素会导致这些命令从hash表中被移除。
其他命令绕过
另外还有别的绕过办法: ssh > ssh username@ip -t "/bin/bash" git > git help status > !/bin/bash
vim绕过
root-me里面有一个关于rshell的靶场
www.root-me.org/en/Challeng…
进入webshell之后就可以开始啦
发现很多命令都不能使用,查看环境变量
可以看到能够使用vim,利用vim可以调用我们想使用的shell
:set shell=/bin/bash :shell
之后查看sudo里面的东西,这里可以看到能够使用python
调用python
/usr/bin/sudo -u app-script-ch14-2 /usr/bin/python
import os
os.system('/bin/bash')
参考链接:
www.freebuf.com/articles/sy…
sudonull.com/post/73461-…