最容易被攻击者利用的权限配置是SUID/SGID滥用和世界可写文件目录。SUID/SGID程序若配置不当,可被用来提权至root;世界可写文件或目录允许任意用户修改内容,可能被植入后门或篡改关键配置;此外,无主文件、777权限文件及ACL配置错误也常成为突破口。使用find命令可检测这些风险,结合ls、stat、getfacl及Lynis等工具进行深度审计,并通过最小权限原则修复,定期自动化检查以持续加固系统安全。

在Linux系统中检查权限漏洞,核心思路是主动发现那些权限配置过于宽松、可能被滥用的文件和目录。这通常涉及到利用
find
要解决Linux权限漏洞问题,我们首先需要一套行之有效的检测方法。我个人觉得,从宏观到微观,逐步深入是比较靠谱的路径。
查找世界可写的文件和目录
这绝对是权限漏洞的重灾区。一个所有人都可以写入的文件或目录,就好比你家大门敞开,谁都能进来放东西、改东西。攻击者可以利用这些地方植入恶意脚本、篡改配置,甚至上传后门。
查找世界可写的文件:
find / -perm -0002 -type f 2>/dev/null
这个命令会在整个文件系统(
/
-find
-perm
o+w
0002
-type f
2>/dev/null
查找世界可写的目录:
find / -perm -0002 -type d 2>/dev/null
原理和上面一样,只是把查找类型改成了目录(
-type d
查找SUID/SGID文件
SUID(Set User ID)和SGID(Set Group ID)是Linux中非常强大的特殊权限,它们允许普通用户以文件所有者或文件所属组的权限来执行某个程序。比如,
passwd
/etc/shadow
查找SUID文件:
find / -perm -4000 -type f 2>/dev/null
4000
查找SGID文件:
find / -perm -2000 -type f 2>/dev/null
2000
找到这些文件后,你需要逐一审查。问自己几个问题:这个程序为什么需要SUID/SGID?它是不是系统必需的?有没有更安全的替代方案?通常,非系统自带的、来自第三方应用或自定义脚本的SUID/SGID程序,都应该引起高度警惕。
查找无主文件或目录
有时候,文件或目录可能因为用户被删除,或者从其他系统迁移过来而失去其所有者或所属组,它们就会显示为数字ID而非用户名或组名。这些“无主”的文件,虽然不直接构成权限漏洞,但它们的存在可能意味着系统管理混乱,也可能被攻击者利用来隐藏文件或作为权限提升的跳板。
查找无所有者的文件或目录:
find / -nouser 2>/dev/null
查找无所属组的文件或目录:
find / -nogroup 2>/dev/null
检查这些文件,确认它们是否应该存在,并重新分配正确的所有者和组。
查找权限过于宽松的文件(例如777)
虽然
find / -perm -0002
777
Easily find JSON paths within JSON objects using our intuitive Json Path Finder
30
find / -perm 777 2>/dev/null
注意这里是
777
-777
-777
777
777
777
777
在我多年的经验里,最容易被攻击者盯上的权限配置,往往不是那些一眼就能看出的显眼包,而是那些看似平常却蕴含巨大风险的“隐形炸弹”。
首先,SUID/SGID权限滥用绝对是榜首。一个配置不当的SUID程序,就相当于给普通用户提供了一把“root权限的钥匙”。如果这个程序本身存在缓冲区溢出、格式化字符串漏洞,或者只是一个简单的脚本,攻击者就可以通过执行它来获取root权限。比如,一个自定义的、没有经过严格安全审计的备份脚本,如果被赋予了SUID权限,攻击者可能就能通过注入命令来执行任意操作。
其次,世界可写(World-Writable)的文件和目录是另一个重灾区。想想看,如果
/etc/passwd
/etc/shadow
再者,弱所有权或组权限也常常被忽视。比如,某些关键配置文件被设置为
www-data
www-data
www-data
最后,我不得不提一下ACL(Access Control Lists)的复杂性。虽然ACL提供了比传统ugo/rwx更细粒度的权限控制,但其复杂性也导致了配置错误的可能性大大增加。一个配置不当的ACL规则,可能在无意中赋予了某个用户或组过多的权限,或者创建了一个“后门”,让攻击者有机会绕过常规权限检查。这种问题往往需要更专业的工具和知识才能发现和解决。
说实话,
find
最基础的,莫过于ls -l
stat
find
ls -l
stat
对于那些使用了ACL的文件,getfacl
setfacl
ls -l
+
getfacl 文件名
此外,一些专业的安全审计工具也能提供很大的帮助。比如,Lynis就是一个非常棒的开源审计工具,它会自动检查数百项系统配置,其中就包括了对文件权限的扫描。它会根据一套预定义的规则,标记出潜在的风险项,并给出修复建议。虽然它可能不会像
find
有时候,我也会自己编写一些简单的Bash或Python脚本。比如,我想找出所有
root
www-data
664
最后,别忘了日志分析。虽然不是直接的权限审计工具,但通过分析
auth.log
syslog
修复和加固权限漏洞,在我看来,不仅仅是执行几个
chmod
chown
首先,针对世界可写的文件和目录,最直接的修复方法就是收紧权限。对于文件,通常我会将其权限修改为
644
755
# 修复世界可写文件示例 chmod 644 /path/to/vulnerable_file # 修复世界可写目录示例 chmod 755 /path/to/vulnerable_directory
当然,这需要根据实际应用的需求来定。如果某个目录确实需要被特定用户组写入,那就应该把权限设置为
775
其次,处理SUID/SGID权限滥用。这是个需要特别谨慎的环节。对于那些被错误赋予SUID/SGID权限的非系统关键程序,最安全的做法就是直接移除这些特殊权限:
chmod u-s /path/to/suid_file # 移除SUID chmod g-s /path/to/sgid_file # 移除SGID
对于那些确实需要SUID/SGID权限的程序(比如
passwd
root
root
sudo
再者,纠正无主文件和目录。对于这些文件,你需要找到它们应该属于哪个用户和组,然后使用
chown
chown newuser:newgroup /path/to/orphan_file
如果这些文件是遗留的,且不再需要,最安全的做法是直接删除它们。但删除前务必确认,以免误删重要数据。
在我看来,加固权限的另一个关键点是定期审计和自动化。手动检查权限既耗时又容易出错,尤其是在大型、复杂的系统环境中。我通常会编写一些脚本,结合
find
ls
getfacl
最后,也是最重要的,是建立严格的权限管理策略和变更流程。任何对文件或目录权限的修改,都应该经过审批,并有详细的记录。避免开发人员或运维人员在没有充分评估风险的情况下,随意设置宽松的权限。通过强制执行最小权限原则,并对所有权限变更进行审查,我们才能真正构建一个健壮、安全的Linux系统环境。
以上就是如何在Linux中检查权限漏洞 Linux find危险权限查找的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号