如何利用SUID安全提权演练
TOPIC SOURCE
Linux 提权 —— SUID提权
当系统管理员在配置linux服务器时,偶尔会在不经意间埋下安全隐患。SUID权限设置不当就像是在系统里留下了一把备用钥匙,而攻击者总能找到使用它的方法。最近处理的一个渗透测试案例中,就遇到了通过find命令实现权限提升的有趣情形。
SUID权限的本质与风险
SUID的特殊之处在于,它允许普通用户以文件所有者的身份执行程序。这种设计本是为了方便系统管理,比如passwd命令需要修改/etc/shadow文件,而该文件普通用户并无写权限。但当这个机制被滥用时,就形成了严重的安全漏洞。
想象一下,如果find命令被设置了SUID位,任何用户都能以root身份执行它。更可怕的是,find支持通过-exec参数执行任意命令,这就相当于给了攻击者一个直达root权限的后门。
常见的SUID提权向量
实战演练:从发现到利用
在一次红队演练中,我们获得了目标服务器的普通用户权限。通过运行find / -perm -u=s -type f 2>/dev/null,系统返回了多个具有SUID权限的可执行文件列表。其中/usr/bin/find引起了我们的注意。
验证过程很简单:/usr/bin/find /tmp -exec whoami ;,终端清晰地显示"root"。这一刻,我们知道已经找到了突破口。
find /tmp -exec /bin/sh -p ;
执行上述命令后,我们成功获得了root权限的shell。整个过程干净利落,没有触发任何安全告警。
防御策略与最佳实践
防范SUID提权的关键在于最小权限原则。定期使用自动化工具扫描系统中的SUID文件,移除非必要的SUID位。特别是那些原本不需要特殊权限就能正常工作的工具,比如find、vim等。
有些管理员认为"反正都是内部服务器,安全要求不高",这种想法恰恰是最危险的。攻击链往往就是从这些被忽视的细节开始构建的。

参与讨论
find这招确实经典,之前做渗透测试也遇到过类似情况