在检查 cron
服务状态时,发现它正在运行并且用户具有管理该服务的 sudo
权限。
在这个案例中,/tmp/
文件夹是空的,而且student
用户的主目录中也没有文件。在检查 SUID
二进制文件时,发现 /usr/bin/hello-john
是一个可疑的二进制文件,其所有者设置为 john
用户。在执行时,它只是显示一条关于备份的消息。
当在 /usr/bin/hello-john
二进制文件中查找字符串时,发现它使用system
函数来执行一些 hello-john-message
二进制文件
hello-john-message
二进制文件不是全局可访问,但 /usr/bin/hello-john
正在使用 $PATH
环境变量中的路径。
使用恶意代码在当前目录中创建相同的文件以升级到 john
用户。将在执行时看到它会生成 john
用户的 bash shell
,不过组仍然是student
。将特权从非特权用户升级到另一个非特权用户时,该过程称为水平特权升级。
另外,找到了存档文件夹,灵感是来自 /usr/bin/hello-john
打印的消息。
在 /home/john/files
中使用 john
用户和student
组创建文件后,cron
作业将文件复制到 /opt/archive/john
并且组更改为 john
。可以推断,复制文件后,它正在使用以下代码更改文件的所有权。
rm -rf /opt/archive/john # remove the dir
cp -r /home/john/files/ /opt/archive/john # copy files directory as john
chown -RL john:john /opt/archive/john # recusively change the ownership
chown
的-L
中意味着跟随符号链接。请注意,这只是在这里的猜想,将 -L
与 chown
一起使用并不是任何硬性规定。
由于一个受保护文件无法被拷贝,所以创建不可访问文件的符号链接,因为它会“重定向”所有对源文件的操作。
执行 cron
作业后,现在确信 chown
命令确实也在使用 -L
来跟踪所有符号链接。符号链接就像与源文件的直接连接,对符号链接所做的任何操作实际上都是对源文件进行的。对于本实验,还可以使用 /etc/passwd
文件更改所有权和更新密码。
现在 john
用户可以访问 /etc/shadow
文件,可以使用 OpenSSL
实用程序创建密码并在文件中更新。然后在使用 su
实用程序通过 root
用户登录并获得特权 root shell
之后
在现实世界中,当像这样获得 root
用户 shell
时,必须恢复所有权以使其远离系统管理员的视线。
PATH
环境变量都是安全的在本实验中,会发现一个这样的用户
因为在这种情况下,一个无人值守的易受攻击的作业(cron
作业)在后台运行,而且当前用户也没有 /bin/bash
的权限,因为它由 root
用户拥有。幸运的是系统中安装了 netcat
。可以从teacher
用户那里得到一个反向shell
。
确认得到了一个反向 shell
,现在可以列出 /home/teacher
目录中的文件。该文件不公开任何有用的信息。因此,检查启用 suid
位的二进制文件。
没有找到可以利用的这样的 suid
二进制文件,但是有一个 sudo
二进制文件,这意味着用户可能具有 sudo
特权以另一个用户身份运行该命令。
在这里发现teacher
用户可以以root
权限执行/usr/bin/awk
命令,无需密码。
awk
是一种脚本语言,广泛用作 Linux
中动态条件下的文本操作。这种情况的好处是还可以使用 awk
执行系统命令。
在运行system
命令时,得到了一个 root
用户 shell
。虽然用户提示符不可用,但它仍然可以以 root
身份执行命令。
请点一下右下角的“在看”,谢谢!!
暗号:87d5b