find命令查SUID文件的核心语法是find / -type f -perm -4000 2>/dev/null,其中-type f排除目录干扰,-perm -4000匹配至少含SUID位的文件,2>/dev/null过滤无权限报错以避免淹没真实结果。

find 命令查 SUID 文件的核心语法
直接用 find / -type f -perm -4000 2>/dev/null 就能列出所有带 SUID 位的可执行文件。注意必须加 -type f,否则会把目录(如某些设置了 SUID 的挂载点)也混进来;-perm -4000 表示“至少包含 SUID 位”,比 -perm 4000(精确匹配)更实用。
为什么 2>/dev/null 不可省略
不加重定向的话,find 在遍历 /proc、/sys、无权限目录时会大量报错,比如:find: ‘/proc/1/fd/6’: No such file or directory,这些错误会冲刷真实结果,导致漏看关键项。实际渗透或审计中,错过一个 /usr/bin/find 或 /usr/bin/bash 就可能丢掉提权入口。
排除可信路径以聚焦风险点
系统自带的 SUID 程序(如 /usr/bin/passwd、/usr/bin/sudo)通常安全,真正要盯的是非标准路径下的二进制。可用 ! -path 排除:
find / -type f -perm -4000 ! -path "/usr/bin/*" ! -path "/bin/*" ! -path "/usr/sbin/*" ! -path "/sbin/*" 2>/dev/null
常见高危位置包括:/tmp、/var/tmp、用户家目录、第三方软件安装路径(如 /opt/*)。
确认 SUID 是否真能触发命令执行
找到可疑文件后,不能只看权限位——得验证它是否允许任意命令执行或路径注入。例如:
-
/usr/local/bin/someapp若存在system()调用且未过滤输入,才构成风险 - 用
strings /path/to/binary | grep -E "(system|popen|exec)"快速筛查调用痕迹 - 某些 SUID 二进制会检查
real uid和effective uid,直接运行可能降权失效,需结合LD_PRELOAD或环境变量绕过
SUID 本身不是漏洞,是机制;危险在于程序逻辑没校验输入、没清理环境、或版本存在已知 CVE。别看到 -rwsr-xr-x 就慌,先看它干了什么。


















