Linux提权系列15: [训练营] 突破受限 Shell 环境
2023-4-9 08:0:52 Author: 奶牛安全(查看原文) 阅读量:21 收藏


什么是受限shell

为了在 shell 环境中提供安全性,Unix 基金会引入了受限 shell 的概念,它具有足够的交互性以支持tab补全和接受命令的提示,但限制了普通 shell 的功能。基本上,存在三种受限制的 shell——rshrbashrksh。在这篇文章中,将介绍 rbash,但同样的信息也可用于其他两个。

可以通过添加 -r 参数从普通 bashshell 命令生成受限 shell

sh -r   # restricted sh shell, or rsh
bash -r # restricted bash shell, or rbash

这种类型的shell主要存在于共享虚拟主机或一些数据中心,以防止恶意黑客执行删除代码,然后接管整个系统。

关于受限shell和普通shell的特性上区别,可以看https://www.gnu.org/software/bash/manual/html_node/The-Restricted-Shell.html。但是,受限 shell 有一个限制,就是如果有任何程序允许用户运行系统命令,rbash 将无法检查用户输入,这可能导致从受限环境中突破

打破石牢笼,大鹏冲天去

在本节中,将讨论 AttackDefense 的受限Shell实验,看到之前讨论的限制是如何突破。

发现像idwhoami这样的常用命令都不起作用,而且错误消息中写着rbash,这意味着处于受限环境中。

人们应该在他们的武器库中执行所有类型的枚举技术,以找到一个漏洞来从 rbash 本身以外的程序执行 shell 命令

所以这里尝试设置环境变量 PATH 但失败了,因为它在受限 bash 的情况下是敏感操作,这很有意义,因为将 PATH 更新到 /etc/environment 将允许任何人调用正常的 /bin/sh/bin/bash

发现目前支持的所有程序都在/home/student/.bin目录下。此外,还看到了 vi ,它是一个类似于 vim 的文本编辑器,但具有一组不同的命令

尝试从 vi 执行 /bin/bash 命令但失败了。这看起来很奇怪,因为 vi 通过shell 选项中来执行shell命令

后来发现 /home/student/.exrc 文件存在,它是 vi 的配置,shell 设置为 /bin/false。这就是为什么从 vi 生成 shell 时会抛出错误的原因

所以尝试使用 > 重定向覆盖文件,但由于 rbash 限制了使用而失败。在 bin 目录中,还看到了 tee 命令,这意味着可能支持管道运算符 (|)。我尝试使用 teeecho -e 的输出通过管道传输到 .exrc

现在,在从 vi 运行 /bin/bash 后,已经脱离了受限环境,进入了正常的 bash。这次可以设置 PATH 环境变量并执行 idwhoami 命令

下一步是查找配置错误的 suid 二进制文件,发现安装了 wgetsudo

当使用 suid 运行 wget 时,它会将文件保存到受保护的位置。在此使用 /etc/sudoers 并添加student ALL=NOPASSWD: ALL

由于不能将 file:// 方案与 wget 一起使用,正在使用 python 来为轻量级和移动的 http 文件服务器提供服务。

更新文件后,现在可以使用 sudoroot 用户身份运行所有命令。

请点一下右下角的“在看”,谢谢!!

暗号:074208


文章来源: http://mp.weixin.qq.com/s?__biz=MzU4NjY0NTExNA==&mid=2247489043&idx=1&sn=38419834598e58e19b82aea0f058f154&chksm=fdf97d06ca8ef4105bfbebe031bc83ef7f74ab71eda75cc20ec51804fd5e27ef5e4c8dc6a48d#rd
如有侵权请联系:admin#unsafe.sh