| |
| |
|
|
| import os, public |
|
|
| _title = '检查拥有suid和sgid权限的文件' |
| _version = 1.0 |
| _ps = "检查重要文件是否存在suid和sgid权限" |
| _level = 2 |
| _date = '2023-03-09' |
| _ignore = os.path.exists("data/warning/ignore/sw_chmod_sid.pl") |
| _tips = [ |
| "使用chmod u-s 【文件名】命令去除suid权限", |
| "使用chmod g-s 【文件名】去除sgid权限" |
| ] |
| _help = '' |
| _remind = '此方案去除了重要文件的特殊权限,可以防止入侵者利用这些文件进行权限提升。' |
|
|
|
|
| def check_run(): |
| ''' |
| @name 开始检测 |
| @return tuple (status<bool>,msg<string>) |
| ''' |
| exist_list = [] |
| suid_list = [] |
| sgid_list = [] |
| |
| file_list = ['/usr/bin/chage', '/usr/bin/gpasswd', '/usr/bin/wall', '/usr/bin/chfn', '/usr/bin/chsh', |
| '/usr/bin/newgrp', |
| '/usr/bin/write', '/usr/sbin/usernetctl', '/bin/mount', '/bin/umount', '/bin/ping', '/sbin/netreport'] |
| for fl in file_list: |
| if os.path.exists(fl): |
| exist_list.append(fl) |
| for el in exist_list: |
| file_stat = os.stat(el) |
| if file_stat.st_mode & 0o4000: |
| suid_list.append(el) |
| if file_stat.st_mode & 0o2000: |
| sgid_list.append(el) |
| if suid_list and sgid_list: |
| return False, "存在suid特权的文件:{}<br>存在sgid特权的文件:{}".format('、'.join(suid_list), '、'.join(sgid_list)) |
| elif suid_list: |
| return False, "以下文件存在suid特权:{}".format('、'.join(suid_list)) |
| elif sgid_list: |
|
|
| return False, "以下文件存在sgid特权:{}".format('、'.join(sgid_list)) |
| else: |
| return True, "无风险" |
| |
| |
| |
| |
| |
| |
| |
| |
|
|