728x90
반응형
취약점
점검내용
불필요하거나 악의적인 파일에 SUID, SGID 설정 여부 점검
점검목적
불필요한 SUID, SGID 설정 제거로 악의적인 사용자의 권한상승을 방지하기 위함
보안위협
SUID, SGID 파일의 접근권한이 적절하지 않을 경우 SUID, SGID 설정된 파일로 특정 명령어를 실행하여 root 권한 획득 가능함
참고
※ SUID: 설정된 파일 실행 시, 특정 작업 수행을 위하여 일시적으로 파일 소유자의 권한
을 얻게 됨
※ SGID: 설정된 파일 실행 시, 특정 작업 수행을 위하여 일시적으로 파일 소유 그룹의
권한을 얻게 됨
※ 불필요한 SUID/SGID 목록: 부록 참고
코드
#!/usr/bin/python3
#-*- coding: utf-8 -*-
# 파일명: U-13.py
import os
# 불필요하거나 악의적인 파일에 SUID, SGID 설정 여부 점검
# 색깔변수
red = '\033[91m'
blue = '\033[94m'
reset = '\033[0m'
# 참조할 파일 리스트
set_files = [
"/bin/su",
"/bin/ping",
"/bin/mount",
"/usr/bin/passwd",
"/usr/bin/sudo",
"/usr/bin/chsh",
"/usr/bin/chfn",
"/usr/bin/at",
"/usr/bin/newgrp",
"/usr/bin/crontab"
]
vulnerability = False
vul_files = []
for file in set_files:
if os.path.exists(file):
command = f"find {file} -perm -u=s -o -perm -g=s -type f 2>/dev/null"
result = os.popen(command)
output = result.read().strip()
if output:
vulnerability = True
vul_files.append(file)
else:
print(f"{file} 파일이 존재하지 않습니다.")
print("U-13: SUID, SGID, 설정 파일점검")
if vulnerability:
print(f"진단 결과 : {red}취약{reset}")
print("취약한 파일 목록:")
for vul_file in vul_files:
print(f" {red}{vul_file}{reset}")
answer = input(f"지금 권한을 제거하시겠습니까? {red}(y/n){reset}: ")
if answer.lower() == "y":
for file in vul_files:
os.system(f"chmod -s {file}")
print(f"권한이 제거되었습니다: {blue}{file}{reset}")
else:
print(f"진단 결과 : {blue}양호{reset}")
- 불필요하거나 악의적인 파일에 SUID, SGID 설정 여부를 점검하는 프로그램
- set_files 변수에 참조할 파일 리스트를 저장
- for문을 사용하여 각 파일을 점검하고, 취약점이 발견되면 vulnerability 변수를 True로 설정하고, vul_files 리스트에 취약한 파일을 추가
- 출력 결과에 따라 취약한 파일과 권한 변경 여부를 묻는 메시지를 출력
- 사용자가 권한을 제거하기로 결정한 경우, os 모듈을 사용하여 해당 파일의 SUID, SGID 권한을 제거
실제 테스트
양호
취약
728x90
반응형
'개발' 카테고리의 다른 글
U-33 서비스 관리 > DNS 보안 버전 패치 자동화 파이썬 코드 (0) | 2023.03.17 |
---|---|
U-28 NIS서버 취약점 점검 자동화 파이썬 코드 (2) | 2023.03.16 |
U-12 파일 및 디렉토리 관리 > /etc/services 파일 소유자 및 권한 설정 자동화 파이썬코드 (0) | 2023.03.16 |
U-10 파일 및 디렉토리 관리 > /etc/(x)inetd.conf 파일 소유자 및 권한 설정 자동화 파이썬코드 (0) | 2023.03.16 |