Linux提权系列5:[训练营]利用 SUID 二进制文件获取根用户 Shell

admin 2023年3月30日11:19:09评论52 views字数 1558阅读5分11秒阅读模式

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

第一个实验

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

Linux提权系列5:[训练营]利用 SUID 二进制文件获取根用户 Shell

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

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

Linux提权系列5:[训练营]利用 SUID 二进制文件获取根用户 Shell

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

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

Linux提权系列5:[训练营]利用 SUID 二进制文件获取根用户 Shell

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

#!/bin/bash

/bin/bash -i

重新运行welcome

Linux提权系列5:[训练营]利用 SUID 二进制文件获取根用户 Shell

获得了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) 产生类似于下图的输出

Linux提权系列5:[训练营]利用 SUID 二进制文件获取根用户 Shell

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


Linux提权系列5:[训练营]利用 SUID 二进制文件获取根用户 Shell

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

Linux提权系列5:[训练营]利用 SUID 二进制文件获取根用户 Shell

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

Linux提权系列5:[训练营]利用 SUID 二进制文件获取根用户 Shell

获得了 root 用户的 shell 😎

第三个实验

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

Linux提权系列5:[训练营]利用 SUID 二进制文件获取根用户 Shell

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

Linux提权系列5:[训练营]利用 SUID 二进制文件获取根用户 Shell

第四个实验

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

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

Linux提权系列5:[训练营]利用 SUID 二进制文件获取根用户 Shell

执行它生成了一个 johnshell

Linux提权系列5:[训练营]利用 SUID 二进制文件获取根用户 Shell

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

Linux提权系列5:[训练营]利用 SUID 二进制文件获取根用户 Shell

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

Linux提权系列5:[训练营]利用 SUID 二进制文件获取根用户 Shell

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

Linux提权系列5:[训练营]利用 SUID 二进制文件获取根用户 Shell

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

Linux提权系列5:[训练营]利用 SUID 二进制文件获取根用户 Shell

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

Linux提权系列5:[训练营]利用 SUID 二进制文件获取根用户 Shell

得到x63x6dx64x3dASCII字符后,发现等于cmd=

Linux提权系列5:[训练营]利用 SUID 二进制文件获取根用户 Shell

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

Linux提权系列5:[训练营]利用 SUID 二进制文件获取根用户 Shell

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

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

暗号:830f7

原文始发于微信公众号(奶牛安全):Linux提权系列5:[训练营]利用 SUID 二进制文件获取根用户 Shell

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年3月30日11:19:09
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Linux提权系列5:[训练营]利用 SUID 二进制文件获取根用户 Shellhttps://cn-sec.com/archives/1638808.html

发表评论

匿名网友 填写信息