直接运行sudo find / -xdev -type f -perm -4000 2>/dev/null可列出所有SUID普通文件,但需排除/usr/bin/*等标准路径,聚焦/tmp、/usr/local/bin、/opt等高危位置,结合-user root、strings | grep -E "(system|popen|exec|sh)"及权限上下文(如-rwsr-xr-x在非标路径即高危)综合判断真正可利用项。

直接运行 sudo find / -type f -perm -4000 2>/dev/null 就能列出所有带 SUID 位的普通文件,但“全部”不等于“高危”——真正要抓的是那些能被普通用户触发、属主异常、路径可疑、且本身具备命令执行能力的二进制。
怎么快速筛出真正可利用的SUID文件
全盘扫描结果里混着大量合法系统程序(如 /usr/bin/passwd),必须过滤掉干扰项才能聚焦风险:
- 用
! -path "/usr/bin/*"等排除标准路径,只查/tmp、/usr/local/bin、/opt、/home/*/.local/bin - 加
-user root限定属主为 root 的才可能提权(非 root 属主的 SUID 文件通常无法提权,除非程序逻辑有缺陷) - 用
strings快速验证是否含危险调用:strings /path/to/file | grep -E "(system|popen|exec|sh)",命中即高风险 - 跳过挂载点避免卡死或误报:
find / -xdev -type f -perm -4000 2>/dev/null
为什么看到-rwsr-xr-x不能直接判定危险
SUID 权限位只是提权的前提,不是漏洞本身。关键看程序行为和上下文:
-
-rwsr-xr-x是正常状态(小写 s + 所有者有 x 位),但若出现在/tmp/mytool,基本可断定是后门 -
-rwSr--r--(大写 S)表示设置了 SUID 却没执行权限,这种无法触发提权,属于配置错误,应清理而非担心 - 像
/usr/bin/find或/usr/bin/vim这类自带 shell 调用能力的工具,一旦设 SUID 就极危险;而/usr/bin/passwd虽然也是 -rwsr-xr-x,但功能封闭、无命令注入面,属安全范围 - 某些 SUID 二进制会检查
getuid() != geteuid()并主动降权,直接运行无效,需配合LD_PRELOAD绕过——这意味着光看权限不够,得试运行或逆向
哪些路径下的SUID文件几乎一定该处理
这些位置出现 SUID 文件,99% 是误配或植入,无需犹豫即可标记为高危:
-
/tmp和/var/tmp:系统不会在此放合法 SUID 二进制,发现即删或隔离 -
/dev/shm:内存文件系统,常被用于隐蔽提权,SUID 文件在此必异常 -
/home/*/bin或/home/*/local/bin:普通用户可写目录,SUID 文件极易被篡改或用于横向提权 -
/usr/local/bin:第三方软件集中地,若非可信来源(如未签名 deb/rpm 安装),一律视为可疑 -
/opt/*:商业软件常驻区,但很多打包不规范,需用rpm -qf或dpkg -S校验来源,无法溯源则高风险
最易被忽略的一点:SGID 目录本身不提权,但若属组为 root 且开放写入(如 drwxrws--- 1 root admin),配合宽松 umask,新建文件会继承 root 属组——这会让普通用户间接获得对 root 组资源的写权限。查 SGID 目录别只盯 -perm -2000,还得看 ls -ld 输出里的属组和写位。


















