rshell的绕过

109 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第十四天,点击查看活动详情

今天打DC-2靶机时候遇到了这个比较有意思rshell绕过,restricted shell 顾名思义就是受限制的shell,意思就是在我们执行命令时有很多不能用的,比如在这个靶机中就只能使用less、ls、scp、vi命令,/都是不可以用的 image.png

系统命令

如果可以使用/我们就可以直接进/bin/bash执行命令 image.png 可以利用scp复制bin/bash,执行命令

image.png

环境变量

$PATH的作用是查看环境变量,可以想象为Windows中的环境变量,这样我们的每个命令都能直接执行。 echo $PATH可以看到存在这些命令的文件夹在/home/tom/usr/bin文件夹下,那么就可以查看具体能有哪些命令配置了环境变量 linux提供了export命令用来设置或者查看环境变量

-f  代表[变量名称]中为函数名称。 -n  删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。 -p  列出所有的shell赋予程序的环境变量。

这里主要查看-p的结果 image.png 一般PATH和SHELL为-rx,只能执行不能写入,如果可以使用的话,就可以直接写入bash里面执行命令,另外就是看看有无编程语言命令能用 image.png

语言执行

如果没有限制php、Python等命令,那么就可以利用下面这些来达到执行命令的作用

python:

python -c 'import os; os.system("/bin/bash")'
php:

php -a then exec("sh -i");

另外就是文章里面说的探测系统常用应用,不知道为什么我这里没有复现成功 ftp > !/bin/bash gdb > !/bin/bash

image.png

这里绕过的方式是利用环境变量

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表中被移除。

image.png

其他命令绕过

另外还有别的绕过办法: ssh > ssh username@ip -t "/bin/bash" git > git help status > !/bin/bash

vim绕过

root-me里面有一个关于rshell的靶场 www.root-me.org/en/Challeng… image.png 进入webshell之后就可以开始啦 image.png image.png image.png 发现很多命令都不能使用,查看环境变量 image.png image.png 可以看到能够使用vim,利用vim可以调用我们想使用的shell

:set shell=/bin/bash :shell

之后查看sudo里面的东西,这里可以看到能够使用python image.png 调用python

/usr/bin/sudo -u app-script-ch14-2 /usr/bin/python

image.png

import os
os.system('/bin/bash')

image.png 参考链接: www.freebuf.com/articles/sy… sudonull.com/post/73461-…