Setuid 和 Setgid
对手可能会滥用配置,其中应用程序设置了 setuid 或 setgid 位,以便在不同(可能更高级别)用户的上下文中运行代码。在 Linux 或 macOS 上,当为应用程序二进制文件设置 setuid 或 setgid 位时,应用程序将以拥有用户或组的权限运行。(引用: setuid man page) 通常,应用程序在当前用户的上下文中运行,无论哪个用户或组拥有应用程序。然而,在某些情况下,程序需要在提升的上下文中执行才能正常运行,但运行它们的用户可能没有特定的所需权限。 与在 sudoers 文件中创建条目不同,这必须由 root 完成,任何用户都可以指定为自己的应用程序设置 setuid 或 setgid 标志(即Linux 和 Mac 文件和目录权限修改)。可以使用位掩码通过 chmod
命令设置这些位,chmod 4777 [file]
或通过简写命名,chmod u+s [file]
。这将启用 setuid 位。要启用 setgid 位,可以使用 chmod 2775
和 chmod g+s
。 对手可以在自己的恶意软件上使用此机制,以确保他们能够在未来的提升上下文中执行。(引用: OSX Keydnap malware) 这种滥用通常是“shell 逃逸”或其他绕过具有受限权限的执行环境的操作的一部分。 或者,对手可能会选择查找和目标具有已启用 setuid 或 setgid 位的易受攻击的二进制文件(即文件和目录发现)。通过 ls -l
查看文件属性时,setuid 和 setgid 位用“s”而不是“x”表示。find
命令也可以用于搜索此类文件。例如,find / -perm +4000 2>/dev/null
可用于查找设置了 setuid 的文件,find / -perm +2000 2>/dev/null
可用于查找设置了 setgid 的文件。然后,对手可能会滥用这些位已设置的二进制文件。(引用: GTFOBins Suid)