Linux提权系列5:[训练营]利用 SUID 二进制文件获取根用户 Shell
2023-3-30 08:3:58 Author: 奶牛安全(查看原文) 阅读量:16 收藏

在上一篇文章中,已经解释了文件上的 suid 位,并通过 C++ 程序演示了它的用法。在本文中,将使用相同的知识利用 SUID 权限配置错误的漏洞来提权。

第一个实验

查看当前目录,发现有两个root用户的文件。

运行欢迎文件只是打印一条消息。

通过strings命令来查看welcome文件,发现它执行greetings程序

任何设置了 SUID 位并从 PATH 环境变量调用另一个程序的二进制文件都是提权的明确标志。所能做的就是简单地在路径变量前面加上恶意可执行文件所在的路径,它就会出现一个root shell。

由于greetings程序就在student用户拥有的目录下,所以PATH环境变量不需要更改。只需要rm -fr greetings

现在创建包含以下内容的greetings文件。执行此操作后,请确保使用chmod +x ./greetings使文件可执行

#!/bin/bash

/bin/bash -i

重新运行welcome

获得了root shell

第二个实验

大多数情况下,不会像在上一个实验中那样幸运。需要首先找到易受攻击的二进制文件,然后利用它们

find / -type f -perm -4001 -exec ls -h {} \; 2> /dev/null

上面的命令将在根目录(/)中找到设置了 suid 位和全局可执行权限(-perm -4001)的文件(-type f)并执行 ls -l-exec ls -l {} \; ) 显示每个匹配项,并把标准错误重定向到 /dev/null (2> /dev/null) 产生类似于下图的输出

当打开 vim.tiny /etc/shadow 时,不要让 vim.tiny 中的 [readonly] 欺骗了

已经以 root 用户身份运行vim.tiny,所需要做的就是从 OpenSSL 工具创建密码并更新 /etc/shadow 文件

现在通过执行 su - root 更改用户并使用刚才从 OpenSSL 工具生成的密码登录

获得了 root 用户的 shell 😎

第三个实验

在查找 SUID 二进制文件时,会发现 /usr/bin/find 二进制文件与其他标准二进制文件不同。因此,这可能用于提升权限

现在已经熟悉了 find命令,对于每一项,都可以使用 -exec 参数对其执行命令。在这种情况下,只需要使用 -exec /bin/bash -ip 参数来获得特权用户交互式 bash shell

第四个实验

这是一个非常冗长的实验,因为先必须执行水平权限提升(获取另一个非特权用户的 shell)并获得对不同用户的访问权限,然后从该用户获取特权用户的shell(垂直权限提升)。

在搜索 suid 二进制文件时,发现用户 john 拥有一个二进制文件 /userfiles/john/notebook

执行它生成了一个 johnshell

现在再次搜索 suid 二进制文件并期待其他结果。在这种情况下,将看到 /home/john/imrootroot 用户所有

在执行程序文件时,它什么也没做,只是简单地打印No root for you!!。也许它需要一些参数

不幸的是,有一个imroot.c文件,但它只能由 root 用户读取。

由于安装了GDB,在调试时首先发现它正在执行strlen函数并比较长度为0x4的字符串。所以得到命令参数的长度必须是 4 个字符的想法。

进一步检查,发现它正在反复比较一些十六进制字符串 4 次,这是输入的长度。所以把它复制到某个地方

得到\x63\x6d\x64\x3dASCII字符后,发现等于cmd=

当尝试 cmd=<command> 时,它以 root 用户身份执行。所以第二个命令是生成一个特权 shell

以 root 用户身份获得特权 shell!🥳

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

暗号:830f7


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