Linux的大部分权限控制依赖于管理用户与文件的交互。这通过权限实现。如你所知,文件可设置读、写和执行权限。这些权限按用户权限级别授予。而SUID(设置用户ID)和SGID(设置组ID)则改变了这一机制。它们允许文件以文件所有者或组所有者的权限级别执行。

你会注意到这些文件设置了“s”位,表明它们具有特殊的权限级别。

find / -type f -perm -04000 -ls 2>/dev/null    将列出设置了SUID或SGID位的文件。

一个好的做法是将此列表中的可执行文件与GTFOBin进行比较(https://gtfobins.github.io)。点击SUID按钮将过滤设置SUID位时已知可利用的二进制文件(您也可以使用此链接查看预过滤列表https://gtfobins.github.io/#+suid)。

上面的列表显示nano已设置SUID位。不幸的是,GTFObins并不能让我们轻松获胜。典型的现实生活中的特权升级场景,我们需要找到中间步骤,帮助我们利用我们所拥有的任何微小发现。

注意:附加的VM有另一个SUID的二进制文件,而不是nano。

nano文本编辑器的SUID位允许我们使用文件所有者的权限创建、编辑和读取文件。Nano归root所有,这可能意味着我们可以以比当前用户更高的权限级别读取和编辑文件。在这个阶段,我们有两个基本的权限升级选项:读取/etc/shadow文件或将用户添加到/etc/passwd。

下面是使用这两个向量的简单步骤。

读取/etc/shadow文件

我们看到nano文本编辑器通过运行find / -type f -perm -04000 -ls 2>/dev/null命令设置了SUID位。

nano /etc/shadow将打印/etc/shadows文件的内容。我们现在可以使用解密工具创建一个可被John the Ripper破解的文件。为了实现这一点,解密需要/etc/shadow和/etc/passwd文件。

下面可以看到解密工具的用法;

unshadow passwd.txt shadow.txt > passwords.txt

有了正确的单词表和一点运气,John the Ripper可以以明文形式返回一个或多个密码。有关John the Ripper的更多详细信息,请访问https://tryhackme.com/room/johntheripperbasics.

另一种选择是添加一个具有root权限的新用户。这将帮助我们绕过密码破解的繁琐过程。下面是一个简单的方法:

我们需要新用户所需密码的哈希值。这可以在Kali Linux上使用openssl工具快速完成。

然后,我们将此密码和用户名添加到/etc/passwd文件中。

一旦我们的用户被添加(请注意root:/bin/bash是如何用于提供根shell的),我们将需要切换到此用户,并希望应该具有根权限。

现在轮到你使用你刚刚学到的技能来找到一个易受攻击的二进制文件。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐